Changeset View
Changeset View
Standalone View
Standalone View
kcms/translations/translations.cpp
Show All 27 Lines | |||||
28 | #include <KPluginFactory> | 28 | #include <KPluginFactory> | ||
29 | #include <KSharedConfig> | 29 | #include <KSharedConfig> | ||
30 | 30 | | |||
31 | K_PLUGIN_FACTORY_WITH_JSON(TranslationsFactory, "kcm_translations.json", registerPlugin<Translations>();) | 31 | K_PLUGIN_FACTORY_WITH_JSON(TranslationsFactory, "kcm_translations.json", registerPlugin<Translations>();) | ||
32 | 32 | | |||
33 | Translations::Translations(QObject *parent, const QVariantList &args) | 33 | Translations::Translations(QObject *parent, const QVariantList &args) | ||
34 | : KQuickAddons::ConfigModule(parent, args) | 34 | : KQuickAddons::ConfigModule(parent, args) | ||
35 | , m_translationsModel(new TranslationsModel(this)) | 35 | , m_translationsModel(new TranslationsModel(this)) | ||
36 | , m_selectedTranslationsModel(new SelectedTranslationsModel(this)) | ||||
37 | , m_availableTranslationsModel(new AvailableTranslationsModel(this)) | ||||
36 | , m_everSaved(false) | 38 | , m_everSaved(false) | ||
37 | { | 39 | { | ||
38 | KAboutData *about = new KAboutData("kcm_translations", | 40 | KAboutData *about = new KAboutData("kcm_translations", | ||
39 | i18n("Configure Plasma translations"), | 41 | i18n("Configure Plasma translations"), | ||
40 | "2.0", QString(), KAboutLicense::LGPL); | 42 | "2.0", QString(), KAboutLicense::LGPL); | ||
41 | setAboutData(about); | 43 | setAboutData(about); | ||
42 | 44 | | |||
43 | setButtons(Apply | Default); | 45 | setButtons(Apply | Default); | ||
44 | 46 | | |||
45 | m_config = KConfigGroup(KSharedConfig::openConfig(configFile), "Translations"); | 47 | m_config = KConfigGroup(KSharedConfig::openConfig(configFile), "Translations"); | ||
46 | 48 | | |||
47 | connect(m_translationsModel, &TranslationsModel::selectedLanguagesChanged, | 49 | connect(m_selectedTranslationsModel, &SelectedTranslationsModel::selectedLanguagesChanged, | ||
48 | this, &Translations::selectedLanguagesChanged); | 50 | this, &Translations::selectedLanguagesChanged); | ||
49 | connect(m_translationsModel, &TranslationsModel::missingLanguagesChanged, | 51 | connect(m_selectedTranslationsModel, &SelectedTranslationsModel::missingLanguagesChanged, | ||
50 | this, &Translations::missingLanguagesChanged); | 52 | this, &Translations::missingLanguagesChanged); | ||
53 | | ||||
54 | connect(m_selectedTranslationsModel, &SelectedTranslationsModel::selectedLanguagesChanged, | ||||
55 | m_availableTranslationsModel, &AvailableTranslationsModel::setSelectedLanguages); | ||||
51 | } | 56 | } | ||
52 | 57 | | |||
53 | Translations::~Translations() | 58 | Translations::~Translations() | ||
54 | { | 59 | { | ||
55 | } | 60 | } | ||
56 | 61 | | |||
57 | QAbstractItemModel* Translations::translationsModel() const | 62 | QAbstractItemModel* Translations::translationsModel() const | ||
58 | { | 63 | { | ||
59 | return m_translationsModel; | 64 | return m_translationsModel; | ||
60 | } | 65 | } | ||
61 | 66 | | |||
67 | QAbstractItemModel* Translations::selectedTranslationsModel() const | ||||
68 | { | ||||
69 | return m_selectedTranslationsModel; | ||||
70 | } | ||||
71 | | ||||
72 | QAbstractItemModel* Translations::availableTranslationsModel() const | ||||
73 | { | ||||
74 | return m_availableTranslationsModel; | ||||
75 | } | ||||
76 | | ||||
62 | bool Translations::everSaved() const | 77 | bool Translations::everSaved() const | ||
63 | { | 78 | { | ||
64 | return m_everSaved; | 79 | return m_everSaved; | ||
65 | } | 80 | } | ||
66 | 81 | | |||
67 | void Translations::load() | 82 | void Translations::load() | ||
68 | { | 83 | { | ||
69 | m_configuredLanguages = m_config.readEntry(lcLanguage, | 84 | m_configuredLanguages = m_config.readEntry(lcLanguage, | ||
70 | QString()).split(':', QString::SkipEmptyParts); | 85 | QString()).split(':', QString::SkipEmptyParts); | ||
71 | 86 | | |||
72 | m_translationsModel->setSelectedLanguages(m_configuredLanguages); | 87 | m_selectedTranslationsModel->setSelectedLanguages(m_configuredLanguages); | ||
73 | } | 88 | } | ||
74 | 89 | | |||
75 | void Translations::save() | 90 | void Translations::save() | ||
76 | { | 91 | { | ||
77 | m_everSaved = true; | 92 | m_everSaved = true; | ||
78 | emit everSavedChanged(); | 93 | emit everSavedChanged(); | ||
79 | 94 | | |||
80 | m_configuredLanguages = m_translationsModel->selectedLanguages(); | 95 | m_configuredLanguages = m_selectedTranslationsModel->selectedLanguages(); | ||
81 | 96 | | |||
82 | for (const QString& lang : m_translationsModel->missingLanguages()) { | 97 | const auto missingLanguages = m_selectedTranslationsModel->missingLanguages(); | ||
98 | for (const QString& lang : missingLanguages) { | ||||
zzag: Maybe,
```lang=cpp
const auto missingLanguages = m_selectedTransationsModel->missingLanguages… | |||||
83 | m_configuredLanguages.removeOne(lang); | 99 | m_configuredLanguages.removeOne(lang); | ||
84 | } | 100 | } | ||
85 | 101 | | |||
86 | m_config.writeEntry(lcLanguage, m_configuredLanguages.join(QStringLiteral(":")), KConfig::Persistent); | 102 | m_config.writeEntry(lcLanguage, m_configuredLanguages.join(QStringLiteral(":")), KConfig::Persistent); | ||
87 | m_config.sync(); | 103 | m_config.sync(); | ||
88 | 104 | | |||
89 | writeExports(); | 105 | writeExports(); | ||
90 | 106 | | |||
91 | m_translationsModel->setSelectedLanguages(m_configuredLanguages); | 107 | m_selectedTranslationsModel->setSelectedLanguages(m_configuredLanguages); | ||
92 | } | 108 | } | ||
93 | 109 | | |||
94 | void Translations::defaults() | 110 | void Translations::defaults() | ||
95 | { | 111 | { | ||
96 | KConfigGroup formatsConfig = KConfigGroup(KSharedConfig::openConfig(configFile), "Formats"); | 112 | KConfigGroup formatsConfig = KConfigGroup(KSharedConfig::openConfig(configFile), "Formats"); | ||
97 | 113 | | |||
98 | QString lang = formatsConfig.readEntry("LANG", QString()); | 114 | QString lang = formatsConfig.readEntry("LANG", QString()); | ||
99 | 115 | | |||
100 | if (lang.isEmpty() | 116 | if (lang.isEmpty() | ||
101 | || !KLocalizedString::availableDomainTranslations("systemsettings").contains(lang)) { | 117 | || !KLocalizedString::availableDomainTranslations("systemsettings").contains(lang)) { | ||
102 | lang = QLocale::system().name(); | 118 | lang = QLocale::system().name(); | ||
103 | } | 119 | } | ||
104 | 120 | | |||
105 | if (!KLocalizedString::availableDomainTranslations("systemsettings").contains(lang)) { | 121 | if (!KLocalizedString::availableDomainTranslations("systemsettings").contains(lang)) { | ||
106 | lang = QStringLiteral("en_US"); | 122 | lang = QStringLiteral("en_US"); | ||
107 | } | 123 | } | ||
108 | 124 | | |||
109 | QStringList languages; | 125 | QStringList languages; | ||
110 | languages << lang; | 126 | languages << lang; | ||
111 | 127 | | |||
112 | m_translationsModel->setSelectedLanguages(languages); | 128 | m_selectedTranslationsModel->setSelectedLanguages(languages); | ||
113 | } | 129 | } | ||
114 | 130 | | |||
115 | void Translations::selectedLanguagesChanged() | 131 | void Translations::selectedLanguagesChanged() | ||
116 | { | 132 | { | ||
117 | setNeedsSave(m_configuredLanguages != m_translationsModel->selectedLanguages()); | 133 | setNeedsSave(m_configuredLanguages != m_selectedTranslationsModel->selectedLanguages()); | ||
118 | } | 134 | } | ||
119 | 135 | | |||
120 | void Translations::missingLanguagesChanged() | 136 | void Translations::missingLanguagesChanged() | ||
121 | { | 137 | { | ||
122 | if (m_translationsModel->missingLanguages().count()) { | 138 | if (m_selectedTranslationsModel->missingLanguages().count()) { | ||
123 | setNeedsSave(true); | 139 | setNeedsSave(true); | ||
124 | } | 140 | } | ||
125 | } | 141 | } | ||
126 | 142 | | |||
127 | #include "translations.moc" | 143 | #include "translations.moc" |
Maybe,
(to avoid detach)