From a3dabd4e24dfb487c8440b904411058054404e0a Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Thu, 11 Dec 2025 11:35:44 +0200 Subject: [PATCH] Remove default folder selection IB-8762 Signed-off-by: Raul Metsma --- client/Application.cpp | 5 ++- client/Settings.cpp | 5 ++- client/Settings.h | 43 +++++++------------------ client/dialogs/FileDialog.cpp | 8 ++--- client/dialogs/MobileDialog.cpp | 2 +- client/dialogs/SettingsDialog.cpp | 34 ++------------------ client/dialogs/SettingsDialog.ui | 53 +------------------------------ client/translations/en.ts | 16 ---------- client/translations/et.ts | 16 ---------- client/translations/ru.ts | 16 ---------- 10 files changed, 21 insertions(+), 177 deletions(-) diff --git a/client/Application.cpp b/client/Application.cpp index 2aa6ca3c8..14dd6aee5 100644 --- a/client/Application.cpp +++ b/client/Application.cpp @@ -416,9 +416,8 @@ Application::Application( int &argc, char **argv ) loadTranslation(Settings::LANGUAGE); // Clear obsolete registriy settings - Settings::SETTINGS_MIGRATED.clear(); -#ifdef Q_OS_DARWIN - Settings::TSL_ONLINE_DIGEST.clear(); +#ifndef Q_OS_DARWIN + Settings::DEFAULT_DIR.clear(); #endif // Actions diff --git a/client/Settings.cpp b/client/Settings.cpp index d2e923804..54a7743bc 100644 --- a/client/Settings.cpp +++ b/client/Settings.cpp @@ -22,6 +22,7 @@ #include "Application.h" #include +#include template using Option = Settings::Option; @@ -97,9 +98,8 @@ const Option Settings::LANGUAGE { QStringLiteral("Langua if(languages.first().contains(QLatin1String("ru"), Qt::CaseInsensitive)) return QStringLiteral("ru"); return QStringLiteral("en"); }}; -const Option Settings::LAST_PATH { QStringLiteral("lastPath") }; +const Option Settings::LAST_PATH { QStringLiteral("lastPath"), QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) }; Option Settings::LIBDIGIDOCPP_DEBUG { QStringLiteral("LibdigidocppDebug"), false }; -const Option Settings::SETTINGS_MIGRATED { QStringLiteral("SettingsMigrated"), false }; const Option Settings::SHOW_INTRO { QStringLiteral("showIntro"), true }; const Option Settings::SHOW_PRINT_SUMMARY { QStringLiteral("ShowPrintSummary"), false }; const Option Settings::SHOW_ROLE_ADDRESS_INFO { QStringLiteral("RoleAddressInfo"), false }; @@ -111,5 +111,4 @@ const Option Settings::PROXY_USER { QStringLiteral("ProxyUser") }; const Option Settings::PROXY_PASS { QStringLiteral("ProxyPass") }; #ifdef Q_OS_MAC const Option Settings::PLUGINS { QStringLiteral("plugins") }; -const Option Settings::TSL_ONLINE_DIGEST { QStringLiteral("TSLOnlineDigest"), true }; #endif diff --git a/client/Settings.h b/client/Settings.h index 1743d52a0..d55a03695 100644 --- a/client/Settings.h +++ b/client/Settings.h @@ -22,37 +22,33 @@ #include #include -template -using if_QString = std::enable_if_t, bool>; - struct Settings { template struct Option { operator QVariant() const { - return settings().value(KEY, defaultValue()); + if(QSettings s(isLocked() ? QSettings::SystemScope : QSettings::UserScope); s.contains(KEY)) + return s.value(KEY); + return defaultValue(); } operator T() const { return operator QVariant().template value(); } - template > - operator std::string() const { + operator std::string() const requires(std::is_same_v) { return operator T().toStdString(); } void operator =(const QVariant &value) const { - setValue(value, defaultValue()); - } - void operator =(const T &value) const { - operator =(QVariant(value)); + if(value == defaultValue()) + clear(); + else + QSettings().setValue(KEY, value); + if(f) + f(operator T()); } void operator() (const T &value) const { operator =(QVariant(value)); } - template > - void operator =(const std::string &value) const { - operator =(QString::fromStdString(value)); - } void clear() const { QSettings().remove(KEY); } @@ -62,18 +58,6 @@ struct Settings bool isSet() const { return QSettings().contains(KEY); } - T value(const QVariant &def) const { - return settings().value(KEY, def).template value(); - } - void setValue(const QVariant &value, const QVariant &def = {}) const { - if(bool valueIsNullOrEmpty = value.typeId() == QMetaType::QString ? value.toString().isEmpty() : value.isNull(); - value == def || (def.isNull() && valueIsNullOrEmpty)) - clear(); - else - QSettings().setValue(KEY, value); - if(f) - f(operator T()); - } T defaultValue() const { if constexpr (std::is_invocable_v) return DEFAULT(); @@ -85,9 +69,6 @@ struct Settings { f = functor; } - QSettings settings() const { - return QSettings(isLocked() ? QSettings::SystemScope : QSettings::UserScope); - } const QString KEY; const D DEFAULT {}; std::function f {}; @@ -134,12 +115,11 @@ struct Settings static const Option LANGUAGE; static const Option LAST_PATH; static Option LIBDIGIDOCPP_DEBUG; - static const Option SETTINGS_MIGRATED; static const Option SHOW_INTRO; static const Option SHOW_PRINT_SUMMARY; static const Option SHOW_ROLE_ADDRESS_INFO; - enum ProxyConfig { + enum ProxyConfig: quint8 { ProxyNone, ProxySystem, ProxyManual, @@ -151,6 +131,5 @@ struct Settings static const Option PROXY_PASS; #ifdef Q_OS_MAC static const Option PLUGINS; - static const Option TSL_ONLINE_DIGEST; #endif }; diff --git a/client/dialogs/FileDialog.cpp b/client/dialogs/FileDialog.cpp index 201bea029..41955855e 100644 --- a/client/dialogs/FileDialog.cpp +++ b/client/dialogs/FileDialog.cpp @@ -24,7 +24,6 @@ #include #include -#include #include #include @@ -58,10 +57,8 @@ QString FileDialog::createNewFileName(const QString &file, bool signature, QWidg Settings::CDOC2_DEFAULT ? QStringLiteral(".cdoc2") : QStringLiteral(".cdoc"); const QString type = signature ? tr("signature container") : tr("crypto container"); QString capitalized = type[0].toUpper() + type.mid(1); - const QString defaultDir = Settings::DEFAULT_DIR; const QFileInfo f(normalized(file)); - QString dir = defaultDir.isEmpty() ? f.absolutePath() : defaultDir; - QString fileName = QDir::toNativeSeparators(dir + QDir::separator() + f.completeBaseName() + extension); + QString fileName = QDir::toNativeSeparators(f.absolutePath() + QDir::separator() + f.completeBaseName() + extension); #ifndef Q_OS_MACOS // macOS App Sandbox restricts the rights of the application to write to the filesystem outside of // app sandbox; user must explicitly give permission to write data to the specific folders. @@ -162,8 +159,7 @@ QString FileDialog::getDir( const QString &dir ) path.replace('~', QDir::homePath()); return path; #else - return !dir.isEmpty() ? dir : Settings::LAST_PATH.value( - QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)); + return !dir.isEmpty() ? dir : Settings::LAST_PATH; #endif } diff --git a/client/dialogs/MobileDialog.cpp b/client/dialogs/MobileDialog.cpp index 1b2c3edf4..b19606d01 100644 --- a/client/dialogs/MobileDialog.cpp +++ b/client/dialogs/MobileDialog.cpp @@ -43,7 +43,7 @@ MobileDialog::MobileDialog(QWidget *parent) ui->idCode->setAttribute(Qt::WA_MacShowFocusRect, false); ui->errorCode->hide(); ui->phoneNo->setValidator(new NumberValidator(ui->phoneNo)); - ui->phoneNo->setText(Settings::MOBILEID_NUMBER.value(countryCodes[0])); + ui->phoneNo->setText(Settings::MOBILEID_NUMBER); ui->phoneNo->setAttribute(Qt::WA_MacShowFocusRect, false); ui->phoneNo->setFocus(); ui->errorPhone->hide(); diff --git a/client/dialogs/SettingsDialog.cpp b/client/dialogs/SettingsDialog.cpp index ead09772c..1ea71bf38 100644 --- a/client/dialogs/SettingsDialog.cpp +++ b/client/dialogs/SettingsDialog.cpp @@ -91,34 +91,6 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent) ui->chkRoleAddressInfo->setChecked(Settings::SHOW_ROLE_ADDRESS_INFO); connect(ui->chkRoleAddressInfo, &QCheckBox::toggled, this, Settings::SHOW_ROLE_ADDRESS_INFO); -#ifdef Q_OS_MACOS - ui->lblDefaultDirectory->hide(); - ui->rdGeneralSameDirectory->hide(); - ui->txtGeneralDirectory->hide(); - ui->btGeneralChooseDirectory->hide(); - ui->rdGeneralSpecifyDirectory->hide(); -#else - connect(ui->btGeneralChooseDirectory, &QPushButton::clicked, this, [this]{ - QString dir = FileDialog::getExistingDirectory(this, tr("Select folder"), Settings::DEFAULT_DIR); - if(!dir.isEmpty()) - { - ui->rdGeneralSpecifyDirectory->setChecked(true); - Settings::DEFAULT_DIR = dir; - ui->txtGeneralDirectory->setText(dir); - } - }); - connect(ui->rdGeneralSpecifyDirectory, &QRadioButton::toggled, this, [this](bool enable) { - ui->btGeneralChooseDirectory->setVisible(enable); - ui->txtGeneralDirectory->setVisible(enable); - if(!enable) - ui->txtGeneralDirectory->clear(); - }); - ui->txtGeneralDirectory->setText(Settings::DEFAULT_DIR); - if(ui->txtGeneralDirectory->text().isEmpty()) - ui->rdGeneralSameDirectory->setChecked(true); - connect(ui->txtGeneralDirectory, &QLineEdit::textChanged, this, Settings::DEFAULT_DIR); -#endif - // pageServices - TimeStamp ui->rdTimeStampDefault->setDisabled(Settings::TSA_URL_CUSTOM.isLocked()); ui->rdTimeStampCustom->setEnabled(ui->rdTimeStampDefault->isEnabled()); @@ -126,8 +98,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent) ui->txtTimeStamp->setReadOnly(Settings::TSA_URL.isLocked()); ui->txtTimeStamp->setVisible(ui->rdTimeStampCustom->isChecked()); ui->txtTimeStamp->setPlaceholderText(Application::confValue(Settings::TSA_URL.KEY).toString()); - QString TSA_URL = Settings::TSA_URL.value(Application::confValue(Application::TSAUrl)); - ui->txtTimeStamp->setText(ui->txtTimeStamp->placeholderText() == TSA_URL ? QString() : std::move(TSA_URL)); + ui->txtTimeStamp->setText(Settings::TSA_URL); ui->wgtTSACert->setDisabled(Settings::TSA_CERT.isLocked()); ui->wgtTSACert->setVisible(ui->rdTimeStampCustom->isChecked()); connect(ui->rdTimeStampCustom, &QRadioButton::toggled, ui->txtTimeStamp, [this](bool checked) { @@ -183,8 +154,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent) ui->txtSiVa->setReadOnly(Settings::SIVA_URL.isLocked()); ui->txtSiVa->setVisible(ui->rdSiVaCustom->isChecked()); ui->txtSiVa->setPlaceholderText(Application::confValue(Settings::SIVA_URL.KEY).toString()); - QString SIVA_URL = Settings::SIVA_URL.value(Application::confValue(Application::SiVaUrl)); - ui->txtSiVa->setText(ui->txtSiVa->placeholderText() == SIVA_URL ? QString() : std::move(SIVA_URL)); + ui->txtSiVa->setText(Settings::SIVA_URL); ui->wgtSiVaCert->setDisabled(Settings::SIVA_CERT.isLocked()); ui->wgtSiVaCert->setVisible(ui->rdSiVaCustom->isChecked()); connect(ui->rdSiVaCustom, &QRadioButton::toggled, ui->txtSiVa, [this](bool checked) { diff --git a/client/dialogs/SettingsDialog.ui b/client/dialogs/SettingsDialog.ui index f160ef9a3..6e0a1fda1 100644 --- a/client/dialogs/SettingsDialog.ui +++ b/client/dialogs/SettingsDialog.ui @@ -479,7 +479,7 @@ max-height: 22px; } - 3 + 0 @@ -568,56 +568,6 @@ max-height: 22px; - - - - Qt::TabFocus - - - Container default location - - - - - - - 15 - - - - - Same folder - - - pathGroup - - - - - - - Select the default directory - - - true - - - pathGroup - - - - - - - ... - - - - - - - - @@ -1798,7 +1748,6 @@ p, li { white-space: pre-wrap; margin-top:12px; margin-bottom:12px; margin-left: - diff --git a/client/translations/en.ts b/client/translations/en.ts index e14d18cdf..9a256df3f 100644 --- a/client/translations/en.ts +++ b/client/translations/en.ts @@ -2170,18 +2170,6 @@ ID-Card Language Language - - Container default location - Container default location - - - Same folder - Same folder - - - Select the default directory - Select the default directory - Show print summary Show print summary @@ -2254,10 +2242,6 @@ Additional licenses and components In case of questions please contact our support via <a href="https://www.id.ee/en/id-help/">id.ee</a>.</p> Additional licenses and components - - Select folder - Select folder - Save as Save as diff --git a/client/translations/et.ts b/client/translations/et.ts index 149425e29..790c438d8 100644 --- a/client/translations/et.ts +++ b/client/translations/et.ts @@ -2170,18 +2170,6 @@ ID-kaardiga Language Keel - - Container default location - Ümbriku loomise vaikekataloog - - - Same folder - Samasse kataloogi - - - Select the default directory - Vali vaikimisi kataloog - Show print summary Näita kinnituslehte @@ -2254,10 +2242,6 @@ Additional licenses and components Küsimuste korral võta ühendust <a href="https://www.id.ee/id-abikeskus/">ID-abikeskusega/a>.</p> Täiendavad litsentsid ja komponendid - - Select folder - Vali kataloog - Save as Salvesta diff --git a/client/translations/ru.ts b/client/translations/ru.ts index c57243163..a90bf53af 100644 --- a/client/translations/ru.ts +++ b/client/translations/ru.ts @@ -2171,18 +2171,6 @@ ID-картой Language Язык - - Container default location - Расположение контейнера по умолчанию - - - Same folder - Та же папка - - - Select the default directory - Выберите каталог - Show print summary Показать подтверждающий лист @@ -2255,10 +2243,6 @@ Additional licenses and components Если у вас возникнут вопросы, пожалуйста, обратитесь на <a href="https://www.id.ee/ru/id-pomoshh/">id.ee</a>.</p> Дополнительные лицензии и компоненты - - Select folder - Выбрать каталог - Save as Cохранить