From: Christian Kamm Date: Fri, 18 May 2018 12:45:29 +0000 (+0200) Subject: Settings: Add warning when switching update channel X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~22^2~44^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=60d3696ccd38204a01e365ab8ea4f27a5043517b;p=nextcloud-desktop.git Settings: Add warning when switching update channel --- diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 789bc27b3..16658f8a3 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include @@ -294,18 +295,46 @@ void GeneralSettings::slotUpdateInfo() void GeneralSettings::slotUpdateChannelChanged(const QString &channel) { - ConfigFile().setUpdateChannel(channel); - auto *updater = qobject_cast(Updater::instance()); - if (updater) { - updater->setUpdateUrl(Updater::updateUrl()); - updater->checkForUpdate(); - } + if (channel == ConfigFile().updateChannel()) + return; + + auto msgBox = new QMessageBox( + QMessageBox::Warning, + tr("Change update channel?"), + tr("The update channel determines which client updates will be offered " + "for installation. The \"stable\" channel contains only upgrades that " + "are considered reliable, while the versions in the \"beta\" channel " + "may contain newer features and bugfixes, but have not yet been tested " + "thoroughly." + "\n\n" + "Note that this selects only what pool upgrades are taken from, and that " + "there are no downgrades: So going back from the beta channel to " + "the stable channel usually cannot be done immediately and means waiting " + "for a stable version that is newer than the currently installed beta " + "version."), + QMessageBox::NoButton, + this); + msgBox->addButton(tr("Change update channel"), QMessageBox::AcceptRole); + msgBox->addButton(tr("Cancel"), QMessageBox::RejectRole); + connect(msgBox, &QMessageBox::finished, msgBox, [this, channel, msgBox](int result) { + msgBox->deleteLater(); + if (result == QMessageBox::AcceptRole) { + ConfigFile().setUpdateChannel(channel); + if (auto updater = qobject_cast(Updater::instance())) { + updater->setUpdateUrl(Updater::updateUrl()); + updater->checkForUpdate(); + } #ifdef Q_OS_MAC - else if (auto *updater = qobject_cast(Updater::instance())) { - updater->setUpdateUrl(Updater::updateUrl()); - updater->checkForUpdate(); - } + else if (auto updater = qobject_cast(Updater::instance())) { + updater->setUpdateUrl(Updater::updateUrl()); + updater->checkForUpdate(); + } #endif + } else { + _ui->updateChannel->setCurrentText(ConfigFile().updateChannel()); + } + }); + msgBox->open(); } void GeneralSettings::slotUpdateCheckNow()