Skip to content

Commit 3ceae1f

Browse files
committed
Remove default folder selection
IB-8762 Signed-off-by: Raul Metsma <[email protected]>
1 parent a3955d7 commit 3ceae1f

File tree

7 files changed

+24
-132
lines changed

7 files changed

+24
-132
lines changed

client/Application.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -416,9 +416,8 @@ Application::Application( int &argc, char **argv )
416416
loadTranslation(Settings::LANGUAGE);
417417

418418
// Clear obsolete registriy settings
419-
Settings::SETTINGS_MIGRATED.clear();
420-
#ifdef Q_OS_DARWIN
421-
Settings::TSL_ONLINE_DIGEST.clear();
419+
#ifndef Q_OS_DARWIN
420+
Settings::DEFAULT_DIR.clear();
422421
#endif
423422

424423
// Actions

client/Settings.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "Application.h"
2323

2424
#include <QtCore/QJsonValue>
25+
#include <QtCore/QStandardPaths>
2526

2627
template<class T, class D = T>
2728
using Option = Settings::Option<T, D>;
@@ -93,9 +94,8 @@ const Option<QString, QString (*)()> Settings::LANGUAGE { QStringLiteral("Langua
9394
if(languages.first().contains(QLatin1String("ru"), Qt::CaseInsensitive)) return QStringLiteral("ru");
9495
return QStringLiteral("en");
9596
}};
96-
const Option<QString> Settings::LAST_PATH { QStringLiteral("lastPath") };
97+
const Option<QString> Settings::LAST_PATH { QStringLiteral("lastPath"), QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) };
9798
Option<bool> Settings::LIBDIGIDOCPP_DEBUG { QStringLiteral("LibdigidocppDebug"), false };
98-
const Option<bool> Settings::SETTINGS_MIGRATED { QStringLiteral("SettingsMigrated"), false };
9999
const Option<bool> Settings::SHOW_INTRO { QStringLiteral("showIntro"), true };
100100
const Option<bool> Settings::SHOW_PRINT_SUMMARY { QStringLiteral("ShowPrintSummary"), false };
101101
const Option<bool> Settings::SHOW_ROLE_ADDRESS_INFO { QStringLiteral("RoleAddressInfo"), false };
@@ -107,5 +107,4 @@ const Option<QString> Settings::PROXY_USER { QStringLiteral("ProxyUser") };
107107
const Option<QString> Settings::PROXY_PASS { QStringLiteral("ProxyPass") };
108108
#ifdef Q_OS_MAC
109109
const Option<QString> Settings::PLUGINS { QStringLiteral("plugins") };
110-
const Option<bool> Settings::TSL_ONLINE_DIGEST { QStringLiteral("TSLOnlineDigest"), true };
111110
#endif

client/Settings.h

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,33 @@
2222
#include <QtCore/QCoreApplication>
2323
#include <QtCore/QSettings>
2424

25-
template<typename T>
26-
using if_QString = std::enable_if_t<std::is_same_v<T,QString>, bool>;
27-
2825
struct Settings
2926
{
3027
template<class T, class D = T>
3128
struct Option
3229
{
3330
operator QVariant() const {
34-
return settings().value(KEY, defaultValue());
31+
if(QSettings s(isLocked() ? QSettings::SystemScope : QSettings::UserScope); s.contains(KEY))
32+
return s.value(KEY);
33+
return defaultValue();
3534
}
3635
operator T() const {
3736
return operator QVariant().template value<T>();
3837
}
39-
template <typename P = T, typename = if_QString<P>>
40-
operator std::string() const {
38+
operator std::string() const requires(std::is_same_v<T,QString>) {
4139
return operator T().toStdString();
4240
}
4341
void operator =(const QVariant &value) const {
44-
setValue(value, defaultValue());
45-
}
46-
void operator =(const T &value) const {
47-
operator =(QVariant(value));
42+
if(value == defaultValue())
43+
clear();
44+
else
45+
QSettings().setValue(KEY, value);
46+
if(f)
47+
f(operator T());
4848
}
4949
void operator() (const T &value) const {
5050
operator =(QVariant(value));
5151
}
52-
template <typename P = T, typename = if_QString<P>>
53-
void operator =(const std::string &value) const {
54-
operator =(QString::fromStdString(value));
55-
}
5652
void clear() const {
5753
QSettings().remove(KEY);
5854
}
@@ -62,18 +58,6 @@ struct Settings
6258
bool isSet() const {
6359
return QSettings().contains(KEY);
6460
}
65-
T value(const QVariant &def) const {
66-
return settings().value(KEY, def).template value<T>();
67-
}
68-
void setValue(const QVariant &value, const QVariant &def = {}) const {
69-
if(bool valueIsNullOrEmpty = value.typeId() == QMetaType::QString ? value.toString().isEmpty() : value.isNull();
70-
value == def || (def.isNull() && valueIsNullOrEmpty))
71-
clear();
72-
else
73-
QSettings().setValue(KEY, value);
74-
if(f)
75-
f(operator T());
76-
}
7761
T defaultValue() const {
7862
if constexpr (std::is_invocable_v<D>)
7963
return DEFAULT();
@@ -85,9 +69,6 @@ struct Settings
8569
{
8670
f = functor;
8771
}
88-
QSettings settings() const {
89-
return QSettings(isLocked() ? QSettings::SystemScope : QSettings::UserScope);
90-
}
9172
const QString KEY;
9273
const D DEFAULT {};
9374
std::function<void (const T &value)> f {};
@@ -134,12 +115,11 @@ struct Settings
134115
static const Option<QString, QString (*)()> LANGUAGE;
135116
static const Option<QString> LAST_PATH;
136117
static Option<bool> LIBDIGIDOCPP_DEBUG;
137-
static const Option<bool> SETTINGS_MIGRATED;
138118
static const Option<bool> SHOW_INTRO;
139119
static const Option<bool> SHOW_PRINT_SUMMARY;
140120
static const Option<bool> SHOW_ROLE_ADDRESS_INFO;
141121

142-
enum ProxyConfig {
122+
enum ProxyConfig: quint8 {
143123
ProxyNone,
144124
ProxySystem,
145125
ProxyManual,
@@ -151,6 +131,5 @@ struct Settings
151131
static const Option<QString> PROXY_PASS;
152132
#ifdef Q_OS_MAC
153133
static const Option<QString> PLUGINS;
154-
static const Option<bool> TSL_ONLINE_DIGEST;
155134
#endif
156135
};

client/dialogs/FileDialog.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
#include <QtCore/QCoreApplication>
2727
#include <QtCore/QRegularExpression>
28-
#include <QtCore/QStandardPaths>
2928
#include <QtCore/QTemporaryFile>
3029
#include <QtWidgets/QMessageBox>
3130

@@ -57,11 +56,9 @@ QString FileDialog::createNewFileName(const QString &file, bool signature, QWidg
5756
Settings::CDOC2_DEFAULT ? QStringLiteral(".cdoc2") : QStringLiteral(".cdoc");
5857
const QString type = signature ? tr("signature container") : tr("crypto container");
5958
QString capitalized = type[0].toUpper() + type.mid(1);
60-
const QString defaultDir = Settings::DEFAULT_DIR;
6159
const QFileInfo f(normalized(file));
62-
QString dir = defaultDir.isEmpty() ? f.absolutePath() : defaultDir;
63-
QString fileName = QDir::toNativeSeparators(dir + QDir::separator() + f.completeBaseName() + extension);
64-
#ifndef Q_OS_OSX
60+
QString fileName = QDir::toNativeSeparators(f.absolutePath() + QDir::separator() + f.completeBaseName() + extension);
61+
#ifndef Q_OS_DARWIN
6562
// macOS App Sandbox restricts the rights of the application to write to the filesystem outside of
6663
// app sandbox; user must explicitly give permission to write data to the specific folders.
6764
if(!QFile::exists(fileName))
@@ -164,14 +161,13 @@ void FileDialog::setReadOnly(const QString &path, bool readonly)
164161

165162
QString FileDialog::getDir( const QString &dir )
166163
{
167-
#ifdef Q_OS_OSX
164+
#ifdef Q_OS_DARWIN
168165
Q_UNUSED(dir)
169166
QString path = QSettings().value(QStringLiteral("NSNavLastRootDirectory")).toString();
170167
path.replace('~', QDir::homePath());
171168
return path;
172169
#else
173-
return !dir.isEmpty() ? dir : Settings::LAST_PATH.value(
174-
QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));
170+
return !dir.isEmpty() ? dir : Settings::LAST_PATH;
175171
#endif
176172
}
177173

@@ -301,7 +297,7 @@ QString FileDialog::normalized(const QString &data)
301297

302298
QString FileDialog::result( const QString &str )
303299
{
304-
#ifndef Q_OS_OSX
300+
#ifndef Q_OS_DARWIN
305301
if(!str.isEmpty())
306302
Settings::LAST_PATH = QFileInfo(str).absolutePath();
307303
#else

client/dialogs/MobileDialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ MobileDialog::MobileDialog(QWidget *parent)
4343
ui->idCode->setAttribute(Qt::WA_MacShowFocusRect, false);
4444
ui->errorCode->hide();
4545
ui->phoneNo->setValidator(new NumberValidator(ui->phoneNo));
46-
ui->phoneNo->setText(Settings::MOBILEID_NUMBER.value(countryCodes[0]));
46+
ui->phoneNo->setText(Settings::MOBILEID_NUMBER);
4747
ui->phoneNo->setAttribute(Qt::WA_MacShowFocusRect, false);
4848
ui->phoneNo->setFocus();
4949
ui->errorPhone->hide();

client/dialogs/SettingsDialog.cpp

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -91,43 +91,14 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
9191
ui->chkRoleAddressInfo->setChecked(Settings::SHOW_ROLE_ADDRESS_INFO);
9292
connect(ui->chkRoleAddressInfo, &QCheckBox::toggled, this, Settings::SHOW_ROLE_ADDRESS_INFO);
9393

94-
#ifdef Q_OS_MACOS
95-
ui->lblDefaultDirectory->hide();
96-
ui->rdGeneralSameDirectory->hide();
97-
ui->txtGeneralDirectory->hide();
98-
ui->btGeneralChooseDirectory->hide();
99-
ui->rdGeneralSpecifyDirectory->hide();
100-
#else
101-
connect(ui->btGeneralChooseDirectory, &QPushButton::clicked, this, [this]{
102-
QString dir = FileDialog::getExistingDirectory(this, tr("Select folder"), Settings::DEFAULT_DIR);
103-
if(!dir.isEmpty())
104-
{
105-
ui->rdGeneralSpecifyDirectory->setChecked(true);
106-
Settings::DEFAULT_DIR = dir;
107-
ui->txtGeneralDirectory->setText(dir);
108-
}
109-
});
110-
connect(ui->rdGeneralSpecifyDirectory, &QRadioButton::toggled, this, [this](bool enable) {
111-
ui->btGeneralChooseDirectory->setVisible(enable);
112-
ui->txtGeneralDirectory->setVisible(enable);
113-
if(!enable)
114-
ui->txtGeneralDirectory->clear();
115-
});
116-
ui->txtGeneralDirectory->setText(Settings::DEFAULT_DIR);
117-
if(ui->txtGeneralDirectory->text().isEmpty())
118-
ui->rdGeneralSameDirectory->setChecked(true);
119-
connect(ui->txtGeneralDirectory, &QLineEdit::textChanged, this, Settings::DEFAULT_DIR);
120-
#endif
121-
12294
// pageServices - TimeStamp
12395
ui->rdTimeStampDefault->setDisabled(Settings::TSA_URL_CUSTOM.isLocked());
12496
ui->rdTimeStampCustom->setEnabled(ui->rdTimeStampDefault->isEnabled());
12597
ui->rdTimeStampCustom->setChecked(Settings::TSA_URL_CUSTOM);
12698
ui->txtTimeStamp->setReadOnly(Settings::TSA_URL.isLocked());
12799
ui->txtTimeStamp->setVisible(ui->rdTimeStampCustom->isChecked());
128100
ui->txtTimeStamp->setPlaceholderText(Application::confValue(Settings::TSA_URL.KEY).toString());
129-
QString TSA_URL = Settings::TSA_URL.value(Application::confValue(Application::TSAUrl));
130-
ui->txtTimeStamp->setText(ui->txtTimeStamp->placeholderText() == TSA_URL ? QString() : std::move(TSA_URL));
101+
ui->txtTimeStamp->setText(Settings::TSA_URL);
131102
ui->wgtTSACert->setDisabled(Settings::TSA_CERT.isLocked());
132103
ui->wgtTSACert->setVisible(ui->rdTimeStampCustom->isChecked());
133104
connect(ui->rdTimeStampCustom, &QRadioButton::toggled, ui->txtTimeStamp, [this](bool checked) {
@@ -183,8 +154,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
183154
ui->txtSiVa->setReadOnly(Settings::SIVA_URL.isLocked());
184155
ui->txtSiVa->setVisible(ui->rdSiVaCustom->isChecked());
185156
ui->txtSiVa->setPlaceholderText(Application::confValue(Settings::SIVA_URL.KEY).toString());
186-
QString SIVA_URL = Settings::SIVA_URL.value(Application::confValue(Application::SiVaUrl));
187-
ui->txtSiVa->setText(ui->txtSiVa->placeholderText() == SIVA_URL ? QString() : std::move(SIVA_URL));
157+
ui->txtSiVa->setText(Settings::SIVA_URL);
188158
ui->wgtSiVaCert->setDisabled(Settings::SIVA_CERT.isLocked());
189159
ui->wgtSiVaCert->setVisible(ui->rdSiVaCustom->isChecked());
190160
connect(ui->rdSiVaCustom, &QRadioButton::toggled, ui->txtSiVa, [this](bool checked) {

client/dialogs/SettingsDialog.ui

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ max-height: 22px;
479479
}</string>
480480
</property>
481481
<property name="currentIndex">
482-
<number>3</number>
482+
<number>0</number>
483483
</property>
484484
<widget class="QWidget" name="pageGeneral">
485485
<layout class="QVBoxLayout" name="pageGeneralLayout">
@@ -568,56 +568,6 @@ max-height: 22px;
568568
</property>
569569
</widget>
570570
</item>
571-
<item>
572-
<widget class="QLabel" name="lblDefaultDirectory">
573-
<property name="focusPolicy">
574-
<enum>Qt::TabFocus</enum>
575-
</property>
576-
<property name="text">
577-
<string>Container default location</string>
578-
</property>
579-
</widget>
580-
</item>
581-
<item>
582-
<layout class="QGridLayout" name="locationBoxLayout">
583-
<property name="spacing">
584-
<number>15</number>
585-
</property>
586-
<item row="0" column="0">
587-
<widget class="QRadioButton" name="rdGeneralSameDirectory">
588-
<property name="text">
589-
<string>Same folder</string>
590-
</property>
591-
<attribute name="buttonGroup">
592-
<string notr="true">pathGroup</string>
593-
</attribute>
594-
</widget>
595-
</item>
596-
<item row="1" column="0">
597-
<widget class="QRadioButton" name="rdGeneralSpecifyDirectory">
598-
<property name="text">
599-
<string>Select the default directory</string>
600-
</property>
601-
<property name="checked">
602-
<bool>true</bool>
603-
</property>
604-
<attribute name="buttonGroup">
605-
<string notr="true">pathGroup</string>
606-
</attribute>
607-
</widget>
608-
</item>
609-
<item row="0" column="1" rowspan="2">
610-
<widget class="QPushButton" name="btGeneralChooseDirectory">
611-
<property name="text">
612-
<string notr="true">...</string>
613-
</property>
614-
</widget>
615-
</item>
616-
<item row="0" column="2" rowspan="2">
617-
<widget class="QLineEdit" name="txtGeneralDirectory"/>
618-
</item>
619-
</layout>
620-
</item>
621571
<item>
622572
<spacer name="pageGeneralSpacer">
623573
<property name="orientation">
@@ -1798,7 +1748,6 @@ p, li { white-space: pre-wrap; margin-top:12px; margin-bottom:12px; margin-left:
17981748
</resources>
17991749
<connections/>
18001750
<buttongroups>
1801-
<buttongroup name="pathGroup"/>
18021751
<buttongroup name="pageGroup"/>
18031752
<buttongroup name="rdSiVa"/>
18041753
<buttongroup name="langGroup"/>

0 commit comments

Comments
 (0)