diff --git a/client/Application.cpp b/client/Application.cpp
index b0843b686..e1c3b6fb1 100644
--- a/client/Application.cpp
+++ b/client/Application.cpp
@@ -326,7 +326,7 @@ Application::Application( int &argc, char **argv )
QTimer::singleShot(0, this, [this] {
auto lessThanVersion = [](QLatin1String key) {
return QVersionNumber::fromString(applicationVersion()) <
- QVersionNumber::fromString(confValue(key).toString());
+ QVersionNumber::fromString(confValue(key).toString());
};
WarningDialog *dlg{};
if(lessThanVersion(QLatin1String("QDIGIDOC4-UNSUPPORTED")))
@@ -347,13 +347,13 @@ Application::Application( int &argc, char **argv )
"macOS users can download the latest ID-software version from the "
"Mac App Store."));
}
- connect(d->conf, &Configuration::finished, this, [&](bool changed, const QString &){
+ connect(d->conf, &Configuration::finished, this, [lessThanVersion](bool changed, const QString &){
if(changed && lessThanVersion(QLatin1String("QDIGIDOC4-LATEST")))
- dlg = WarningDialog::show(tr(
+ (new WarningDialog(tr(
"An ID-software update has been found. To download the update, go to the "
"id.ee website. "
"macOS users can download the update from the "
- "Mac App Store."));
+ "Mac App Store."), mainWindow()))->exec();
});
#ifdef Q_OS_WIN
if(dlg)
@@ -420,22 +420,7 @@ Application::Application( int &argc, char **argv )
{
digidoc::Conf::init( new DigidocConf );
d->signer = new QSigner(this);
- QString cache = confValue(TSLCache).toString();
- QDir().mkpath( cache );
- QDateTime tslTime = QDateTime::currentDateTimeUtc().addDays(-7);
- for(const QString &file: QDir(QStringLiteral(":/TSL/")).entryList())
- {
- QFile tl(cache + "/" + file);
- if(!tl.exists() ||
- readTSLVersion(":/TSL/" + file) > readTSLVersion(tl.fileName()))
- {
- tl.remove();
- QFile::copy(":/TSL/" + file, tl.fileName());
- tl.setPermissions(QFile::Permissions(0x6444));
- if(tl.open(QFile::Append))
- tl.setFileTime(tslTime, QFileDevice::FileModificationTime);
- }
- }
+ updateTSLCache(QDateTime::currentDateTimeUtc().addDays(-7));
digidoc::initialize(applicationName().toUtf8().constData(), QStringLiteral("%1/%2 (%3)")
.arg(applicationName(), applicationVersion(), applicationOs()).toUtf8().constData(),
@@ -946,6 +931,27 @@ void Application::showWarning( const QString &msg, const digidoc::Exception &e )
QSigner* Application::signer() const { return d->signer; }
+void Application::updateTSLCache(const QDateTime &tslTime)
+{
+ QString cache = confValue(Application::TSLCache).toString();
+ QDir().mkpath(cache);
+ const QStringList tsllist = QDir(QStringLiteral(":/TSL/")).entryList();
+ for(const QString &file: tsllist)
+ {
+ if(QFile tl(cache + "/" + file);
+ Application::readTSLVersion(":/TSL/" + file) > Application::readTSLVersion(tl.fileName()))
+ {
+ const QStringList cleanup = QDir(cache, file + QStringLiteral("*")).entryList();
+ for(const QString &rm: cleanup)
+ QFile::remove(cache + "/" + rm);
+ QFile::copy(":/TSL/" + file, tl.fileName());
+ tl.setPermissions(QFile::Permissions(0x6444));
+ if(tslTime.isValid() && tl.open(QFile::Append))
+ tl.setFileTime(tslTime, QFileDevice::FileModificationTime);
+ }
+ }
+}
+
void Application::waitForTSL( const QString &file )
{
if(!CONTAINER_EXT.contains(QFileInfo(file).suffix(), Qt::CaseInsensitive))
diff --git a/client/Application.h b/client/Application.h
index 373805c18..8c3adaf2d 100644
--- a/client/Application.h
+++ b/client/Application.h
@@ -75,6 +75,7 @@ class Application final: public Common
static uint readTSLVersion(const QString &path);
static void setConfValue( ConfParameter parameter, const QVariant &value );
static void showClient(const QStringList ¶ms = {}, bool crypto = false, bool sign = false, bool newWindow = false);
+ static void updateTSLCache(const QDateTime &tslTime);
private Q_SLOTS:
static void browse(const QUrl &url);
diff --git a/client/dialogs/SettingsDialog.cpp b/client/dialogs/SettingsDialog.cpp
index 78f60596b..4751f0922 100644
--- a/client/dialogs/SettingsDialog.cpp
+++ b/client/dialogs/SettingsDialog.cpp
@@ -210,7 +210,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
connect(ui->btnCheckConnection, &QPushButton::clicked, this, &SettingsDialog::checkConnection);
connect(ui->btnFirstRun, &QPushButton::clicked, this, [this] {
- FirstRun *dlg = new FirstRun(this);
+ auto *dlg = new FirstRun(this);
connect(dlg, &FirstRun::langChanged, this, [this](const QString &lang) {
retranslate(lang);
selectLanguage();
@@ -221,21 +221,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
#ifdef CONFIG_URL
qApp->conf()->update(true);
#endif
- QString cache = Application::confValue(Application::TSLCache).toString();
- const QStringList tsllist = QDir(QStringLiteral(":/TSL/")).entryList();
- for(const QString &file: tsllist)
- {
- const QString target = cache + "/" + file;
- if(!QFile::exists(target) ||
- Application::readTSLVersion(":/TSL/" + file) > Application::readTSLVersion(target))
- {
- const QStringList cleanup = QDir(cache, file + QStringLiteral("*")).entryList();
- for(const QString &rm: cleanup)
- QFile::remove(cache + "/" + rm);
- QFile::copy(":/TSL/" + file, target);
- QFile::setPermissions(target, QFile::Permissions(0x6444));
- }
- }
+ Application::updateTSLCache({});
});
connect( ui->btnNavUseByDefault, &QPushButton::clicked, this, &SettingsDialog::useDefaultSettings );
connect( ui->btnNavSaveReport, &QPushButton::clicked, this, [=]{