aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/settings')
-rw-r--r--src/ui/settings/GlobalSettingStation.cpp10
-rw-r--r--src/ui/settings/GlobalSettingStation.h3
-rw-r--r--src/ui/settings/SettingsDialog.cpp25
-rw-r--r--src/ui/settings/SettingsGeneral.cpp95
-rw-r--r--src/ui/settings/SettingsGeneral.h16
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: