diff --git a/src/app/main.cpp b/src/app/main.cpp index 3c18a23f1..2a9f84862 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -168,22 +168,25 @@ int main(int argc, char *argv[]) if (!qputenv("QBITTORRENT", QBT_VERSION)) fprintf(stderr, "Couldn't set environment variable...\n"); + const bool firstTimeUser = !Preferences::instance()->getAcceptedLegal(); + if (firstTimeUser) { #ifndef DISABLE_GUI - if (!userAgreesWithLegalNotice()) - return EXIT_SUCCESS; + if (!userAgreesWithLegalNotice()) + return EXIT_SUCCESS; #elif defined(Q_OS_WIN) - if (_isatty(_fileno(stdin)) - && _isatty(_fileno(stdout)) - && !userAgreesWithLegalNotice()) - return EXIT_SUCCESS; + if (_isatty(_fileno(stdin)) + && _isatty(_fileno(stdout)) + && !userAgreesWithLegalNotice()) + return EXIT_SUCCESS; #else - if (!params.shouldDaemonize - && isatty(fileno(stdin)) - && isatty(fileno(stdout)) - && !userAgreesWithLegalNotice()) - return EXIT_SUCCESS; + if (!params.shouldDaemonize + && isatty(fileno(stdin)) + && isatty(fileno(stdout)) + && !userAgreesWithLegalNotice()) + return EXIT_SUCCESS; #endif + } // Check if qBittorrent is already running for this user if (app->isRunning()) { @@ -233,16 +236,24 @@ int main(int argc, char *argv[]) app->setAttribute(Qt::AA_DontShowIconsInMenus); #endif + if (!firstTimeUser) { + handleChangedDefaults(DefaultPreferencesMode::Legacy); + #ifndef DISABLE_GUI - if (!upgrade()) return EXIT_FAILURE; + if (!upgrade()) return EXIT_FAILURE; #elif defined(Q_OS_WIN) - if (!upgrade(_isatty(_fileno(stdin)) - && _isatty(_fileno(stdout)))) return EXIT_FAILURE; + if (!upgrade(_isatty(_fileno(stdin)) + && _isatty(_fileno(stdout)))) return EXIT_FAILURE; #else - if (!upgrade(!params.shouldDaemonize - && isatty(fileno(stdin)) - && isatty(fileno(stdout)))) return EXIT_FAILURE; + if (!upgrade(!params.shouldDaemonize + && isatty(fileno(stdin)) + && isatty(fileno(stdout)))) return EXIT_FAILURE; #endif + } + else { + handleChangedDefaults(DefaultPreferencesMode::Current); + } + #if defined(DISABLE_GUI) && !defined(Q_OS_WIN) if (params.shouldDaemonize) { app.reset(); // Destroy current application @@ -378,8 +389,7 @@ void displayBadArgMessage(const QString &message) bool userAgreesWithLegalNotice() { Preferences *const pref = Preferences::instance(); - if (pref->getAcceptedLegal()) // Already accepted once - return true; + Q_ASSERT(!pref->getAcceptedLegal()); #ifdef DISABLE_GUI const QString eula = QString("\n*** %1 ***\n").arg(QObject::tr("Legal Notice")) diff --git a/src/app/upgrade.cpp b/src/app/upgrade.cpp index 99bcde1a0..e0a1060cc 100644 --- a/src/app/upgrade.cpp +++ b/src/app/upgrade.cpp @@ -82,3 +82,23 @@ bool upgrade(const bool /*ask*/) exportWebUIHttpsFiles(); return true; } + +void handleChangedDefaults(const DefaultPreferencesMode mode) +{ + struct DefaultValue + { + QString name; + QVariant legacy; + QVariant current; + }; + + const QVector changedDefaults { + {QLatin1String {"BitTorrent/Session/QueueingSystemEnabled"}, true, false} + }; + + SettingsStorage *settingsStorage {SettingsStorage::instance()}; + for (auto it = changedDefaults.cbegin(); it != changedDefaults.cend(); ++it) { + if (settingsStorage->loadValue(it->name).isNull()) + settingsStorage->storeValue(it->name, (mode == DefaultPreferencesMode::Legacy ? it->legacy : it->current)); + } +} diff --git a/src/app/upgrade.h b/src/app/upgrade.h index 28c336fd2..62bea4c42 100644 --- a/src/app/upgrade.h +++ b/src/app/upgrade.h @@ -28,4 +28,11 @@ #pragma once +enum class DefaultPreferencesMode +{ + Legacy, + Current +}; + +void handleChangedDefaults(DefaultPreferencesMode mode); bool upgrade(bool ask = true);