diff options
Diffstat (limited to 'src/ui/settings')
-rw-r--r-- | src/ui/settings/GlobalSettingStation.cpp | 10 | ||||
-rw-r--r-- | src/ui/settings/GlobalSettingStation.h | 3 | ||||
-rw-r--r-- | src/ui/settings/SettingsDialog.cpp | 25 | ||||
-rw-r--r-- | src/ui/settings/SettingsGeneral.cpp | 95 | ||||
-rw-r--r-- | src/ui/settings/SettingsGeneral.h | 16 |
5 files changed, 95 insertions, 54 deletions
diff --git a/src/ui/settings/GlobalSettingStation.cpp b/src/ui/settings/GlobalSettingStation.cpp index 3e229091..8946d267 100644 --- a/src/ui/settings/GlobalSettingStation.cpp +++ b/src/ui/settings/GlobalSettingStation.cpp @@ -24,16 +24,18 @@ #include "GlobalSettingStation.h" -std::unique_ptr<GlobalSettingStation> GlobalSettingStation::_instance = nullptr; +std::unique_ptr<GpgFrontend::UI::GlobalSettingStation> + GpgFrontend::UI::GlobalSettingStation::_instance = nullptr; -GlobalSettingStation& GlobalSettingStation::GetInstance() { +GpgFrontend::UI::GlobalSettingStation& +GpgFrontend::UI::GlobalSettingStation::GetInstance() { if (_instance == nullptr) { _instance = std::make_unique<GlobalSettingStation>(); } return *_instance; } -void GlobalSettingStation::Sync() noexcept { +void GpgFrontend::UI::GlobalSettingStation::Sync() noexcept { using namespace libconfig; try { ui_cfg.writeFile(ui_config_path.c_str()); @@ -46,7 +48,7 @@ void GlobalSettingStation::Sync() noexcept { } } -GlobalSettingStation::GlobalSettingStation() noexcept { +GpgFrontend::UI::GlobalSettingStation::GlobalSettingStation() noexcept { using namespace boost::filesystem; using namespace libconfig; diff --git a/src/ui/settings/GlobalSettingStation.h b/src/ui/settings/GlobalSettingStation.h index b5a86865..22713626 100644 --- a/src/ui/settings/GlobalSettingStation.h +++ b/src/ui/settings/GlobalSettingStation.h @@ -31,6 +31,8 @@ #include "ui/GpgFrontendUI.h" +namespace GpgFrontend::UI { + class GlobalSettingStation : public QObject { Q_OBJECT public: @@ -84,5 +86,6 @@ class GlobalSettingStation : public QObject { static std::unique_ptr<GlobalSettingStation> _instance; }; +} // namespace GpgFrontend::UI #endif // GPGFRONTEND_GLOBALSETTINGSTATION_H diff --git a/src/ui/settings/SettingsDialog.cpp b/src/ui/settings/SettingsDialog.cpp index 4f959b68..f917a9b0 100644 --- a/src/ui/settings/SettingsDialog.cpp +++ b/src/ui/settings/SettingsDialog.cpp @@ -24,6 +24,7 @@ #include "SettingsDialog.h" +#include "GlobalSettingStation.h" #include "SettingsAdvanced.h" #include "SettingsAppearance.h" #include "SettingsGeneral.h" @@ -120,23 +121,25 @@ QHash<QString, QString> SettingsDialog::listLanguages() { languages.insert(QString(), _("System Default")); - QString appPath = qApp->applicationDirPath(); - QDir qmDir = QDir(RESOURCE_DIR(appPath) + "/ts/"); - QStringList fileNames = qmDir.entryList(QStringList("gpgfrontend_*.qm")); + auto locale_path = GlobalSettingStation::GetInstance().GetLocaleDir(); - for (int i = 0; i < fileNames.size(); ++i) { - QString locale = fileNames[i]; - locale.truncate(locale.lastIndexOf('.')); - locale.remove(0, locale.indexOf('_') + 1); + auto locale_dir = QDir(locale_path.c_str()); + QStringList file_names = locale_dir.entryList(QStringList("*")); + + for (int i = 0; i < file_names.size(); ++i) { + QString locale = file_names[i]; + LOG(INFO) << "locale" << locale.toStdString(); + if (locale == "." || locale == "..") continue; // this works in qt 4.8 - QLocale qloc(locale); + QLocale q_locale(locale); + if (q_locale.nativeCountryName().isEmpty()) continue; #if QT_VERSION < 0x040800 QString language = - QLocale::languageToString(qloc.language()) + " (" + locale + - ")"; //+ " (" + QLocale::languageToString(qloc.language()) + ")"; + QLocale::languageToString(q_locale.language()) + " (" + locale + + ")"; //+ " (" + QLocale::languageToString(q_locale.language()) + ")"; #else - QString language = qloc.nativeLanguageName() + " (" + locale + ")"; + auto language = q_locale.nativeLanguageName() + " (" + locale + ")"; #endif languages.insert(locale, language); } diff --git a/src/ui/settings/SettingsGeneral.cpp b/src/ui/settings/SettingsGeneral.cpp index 51e0649c..a5ae124e 100644 --- a/src/ui/settings/SettingsGeneral.cpp +++ b/src/ui/settings/SettingsGeneral.cpp @@ -28,20 +28,19 @@ #include "server/ComUtils.h" #endif +#ifdef MULTI_LANG_SUPPORT #include "SettingsDialog.h" +#endif + +#include "GlobalSettingStation.h" #include "gpg/function/GpgKeyGetter.h" #include "rapidjson/prettywriter.h" #include "ui/widgets/KeyList.h" namespace GpgFrontend::UI { -GeneralTab::GeneralTab(QWidget* parent) - : QWidget(parent), - appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", - QSettings::IniFormat) { +GeneralTab::GeneralTab(QWidget* parent) : QWidget(parent) { #ifdef SERVER_SUPPORT - /***************************************** * GpgFrontend Server *****************************************/ @@ -77,7 +76,7 @@ GeneralTab::GeneralTab(QWidget* parent) importConfirmationBoxLayout->addWidget(importConfirmationCheckBox); importConfirmationBox->setLayout(importConfirmationBoxLayout); -#ifdef MULT_LANGUAGE_SUPPORT +#ifdef MULTI_LANG_SUPPORT /***************************************** * Language Select Box *****************************************/ @@ -141,7 +140,6 @@ GeneralTab::GeneralTab(QWidget* parent) ownKeyServiceTokenLayout->addWidget(getServiceTokenButton); ownKeyServiceTokenLayout->addWidget(serviceTokenLabel); ownKeyServiceTokenLayout->stretch(0); - #endif /***************************************** @@ -153,7 +151,7 @@ GeneralTab::GeneralTab(QWidget* parent) #endif mainLayout->addWidget(saveCheckedKeysBox); mainLayout->addWidget(importConfirmationBox); -#ifdef MULT_LANGUAGE_SUPPORT +#ifdef MULTI_LANG_SUPPORT mainLayout->addWidget(langBox); #endif #ifdef SERVER_SUPPORT @@ -171,9 +169,12 @@ GeneralTab::GeneralTab(QWidget* parent) * appropriately **********************************/ void GeneralTab::setSettings() { - // Keysaving - if (settings.value("keys/saveKeyChecked").toBool()) { - saveCheckedKeysCheckBox->setCheckState(Qt::Checked); + auto& settings = GlobalSettingStation::GetInstance().GetUISettings(); + try { + bool save_key_checked = settings.lookup("general.save_key_checked"); + if (save_key_checked) saveCheckedKeysCheckBox->setCheckState(Qt::Checked); + } catch (...) { + LOG(ERROR) << _("Setting Operation Error") << _("save_key_checked"); } #ifdef SERVER_SUPPORT @@ -199,19 +200,19 @@ void GeneralTab::setSettings() { }); #endif -#ifdef MULT_LANGUAGE_SUPPORT - - // Language setting - QString langKey = settings.value("int/lang").toString(); - QString langValue = lang.value(langKey); - if (!langKey.isEmpty()) { - langSelectBox->setCurrentIndex(langSelectBox->findText(langValue)); +#ifdef MULTI_LANG_SUPPORT + try { + std::string lang_key = settings.lookup("general.lang"); + QString lang_value = lang.value(lang_key.c_str()); + if (!lang.empty()) { + langSelectBox->setCurrentIndex(langSelectBox->findText(lang_value)); + } + } catch (...) { + LOG(ERROR) << _("Setting Operation Error") << _("lang"); } - #endif #ifdef SERVER_SUPPORT - auto own_key_id = settings.value("general/ownKeyId").toString().toStdString(); if (own_key_id.empty()) { ownKeySelectBox->setCurrentText("<none>"); @@ -225,12 +226,15 @@ void GeneralTab::setSettings() { if (!serviceToken.empty()) { serviceTokenLabel->setText(QString::fromStdString(serviceToken)); } - #endif - // Get own key information from keydb/gpg.conf (if contained) - if (settings.value("general/confirmImportKeys", Qt::Checked).toBool()) { - importConfirmationCheckBox->setCheckState(Qt::Checked); + try { + bool confirm_import_keys = settings.lookup("general.confirm_import_keys"); + LOG(INFO) << "confirm_import_keys" << confirm_import_keys; + if (confirm_import_keys) + importConfirmationCheckBox->setCheckState(Qt::Checked); + } catch (...) { + LOG(ERROR) << _("Setting Operation Error") << _("confirm_import_keys"); } } @@ -239,8 +243,22 @@ void GeneralTab::setSettings() { * write them to settings-file *************************************/ void GeneralTab::applySettings() { - settings.setValue("keys/saveKeyChecked", - saveCheckedKeysCheckBox->isChecked()); + auto& settings = + GpgFrontend::UI::GlobalSettingStation::GetInstance().GetUISettings(); + + if (!settings.exists("general") || + settings.lookup("general").getType() != libconfig::Setting::TypeGroup) + settings.add("general", libconfig::Setting::TypeGroup); + + auto& general = settings["general"]; + + if (!general.exists("save_key_checked")) + general.add("save_key_checked", libconfig::Setting::TypeBoolean) = + saveCheckedKeysCheckBox->isChecked(); + else { + general["save_key_checked"] = saveCheckedKeysCheckBox->isChecked(); + } + #ifdef SERVER_SUPPORT qDebug() << "serverSelectBox currentText" << serverSelectBox->currentText(); settings.setValue("general/currentGpgfrontendServer", @@ -253,8 +271,15 @@ void GeneralTab::applySettings() { delete serverList; #endif -#ifdef MULT_LANGUAGE_SUPPORT - settings.setValue("int/lang", lang.key(langSelectBox->currentText())); +#ifdef MULTI_LANG_SUPPORT + + if (!general.exists("lang")) + general.add("lang", libconfig::Setting::TypeBoolean) = + langSelectBox->currentText().toStdString(); + else { + general["lang"] = langSelectBox->currentText().toStdString(); + } + #endif #ifdef SERVER_SUPPORT @@ -266,11 +291,17 @@ void GeneralTab::applySettings() { QString::fromStdString(serviceToken)); #endif - settings.setValue("general/confirmImportKeys", - importConfirmationCheckBox->isChecked()); + if (!general.exists("confirm_import_keys")) + general.add("confirm_import_keys", libconfig::Setting::TypeBoolean) = + importConfirmationCheckBox->isChecked(); + else { + general["confirm_import_keys"] = importConfirmationCheckBox->isChecked(); + } + + GlobalSettingStation::GetInstance().Sync(); } -#ifdef MULT_LANGUAGE_SUPPORT +#ifdef MULTI_LANG_SUPPORT void GeneralTab::slotLanguageChanged() { emit signalRestartNeeded(true); } #endif diff --git a/src/ui/settings/SettingsGeneral.h b/src/ui/settings/SettingsGeneral.h index 5816af9d..7e118f98 100644 --- a/src/ui/settings/SettingsGeneral.h +++ b/src/ui/settings/SettingsGeneral.h @@ -41,13 +41,10 @@ class GeneralTab : public QWidget { void applySettings(); private: - QString appPath; - QSettings settings; - QCheckBox* saveCheckedKeysCheckBox; QCheckBox* importConfirmationCheckBox; -#ifdef MULT_LANGUAGE_SUPPORT +#ifdef MULTI_LANG_SUPPORT QComboBox* langSelectBox; QHash<QString, QString> lang; #endif @@ -66,12 +63,17 @@ class GeneralTab : public QWidget { KeyList* mKeyList{}; private slots: -#ifdef MULT_LANGUAGE_SUPPORT - void slotOwnKeyIdChanged(); + +#ifdef MULTI_LANG_SUPPORT + + void slotLanguageChanged(); + #endif #ifdef SERVER_SUPPORT - void slotLanguageChanged(); + + void slotOwnKeyIdChanged(); + #endif signals: |