summaryrefslogtreecommitdiff
path: root/src/plugins/updateinfo/updateinfoplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/updateinfo/updateinfoplugin.cpp')
-rw-r--r--src/plugins/updateinfo/updateinfoplugin.cpp65
1 files changed, 40 insertions, 25 deletions
diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp
index 814e0559f6..99fc625f3f 100644
--- a/src/plugins/updateinfo/updateinfoplugin.cpp
+++ b/src/plugins/updateinfo/updateinfoplugin.cpp
@@ -35,7 +35,8 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/infobar.h>
-#include <utils/synchronousprocess.h>
+#include <utils/qtcassert.h>
+#include <utils/qtcprocess.h>
#include <QDate>
#include <QDomDocument>
@@ -73,8 +74,12 @@ public:
QString m_collectedOutput;
QTimer *m_checkUpdatesTimer = nullptr;
- bool m_automaticCheck = true;
- UpdateInfoPlugin::CheckUpdateInterval m_checkInterval = UpdateInfoPlugin::WeeklyCheck;
+ struct Settings
+ {
+ bool automaticCheck = true;
+ UpdateInfoPlugin::CheckUpdateInterval checkInterval = UpdateInfoPlugin::WeeklyCheck;
+ };
+ Settings m_settings;
QDate m_lastCheckDate;
};
@@ -124,8 +129,8 @@ void UpdateInfoPlugin::startCheckForUpdates()
{
stopCheckForUpdates();
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert(QLatin1String("QT_LOGGING_RULES"), QLatin1String("*=false"));
+ Utils::Environment env = Utils::Environment::systemEnvironment();
+ env.set("QT_LOGGING_RULES", "*=false");
d->m_checkUpdatesCommand = new ShellCommand(QString(), env);
d->m_checkUpdatesCommand->setDisplayName(tr("Checking for Updates"));
connect(d->m_checkUpdatesCommand, &ShellCommand::stdOutText, this, &UpdateInfoPlugin::collectCheckForUpdatesOutput);
@@ -133,7 +138,7 @@ void UpdateInfoPlugin::startCheckForUpdates()
d->m_checkUpdatesCommand->addJob({Utils::FilePath::fromString(d->m_maintenanceTool), {"--checkupdates"}},
60 * 3, // 3 minutes timeout
/*workingDirectory=*/QString(),
- [](int /*exitCode*/) { return Utils::SynchronousProcessResponse::Finished; });
+ [](int /*exitCode*/) { return Utils::QtcProcess::Finished; });
d->m_checkUpdatesCommand->execute();
d->m_progress = d->m_checkUpdatesCommand->futureProgress();
if (d->m_progress) {
@@ -273,49 +278,59 @@ bool UpdateInfoPlugin::initialize(const QStringList & /* arguments */, QString *
void UpdateInfoPlugin::loadSettings() const
{
+ UpdateInfoPluginPrivate::Settings def;
QSettings *settings = ICore::settings();
- const QString updaterKey = QLatin1String(UpdaterGroup) + QLatin1Char('/');
- d->m_maintenanceTool = settings->value(updaterKey + QLatin1String(MaintenanceToolKey)).toString();
- d->m_lastCheckDate = settings->value(updaterKey + QLatin1String(LastCheckDateKey), QDate()).toDate();
- d->m_automaticCheck = settings->value(updaterKey + QLatin1String(AutomaticCheckKey), true).toBool();
- const QString checkInterval = settings->value(updaterKey + QLatin1String(CheckIntervalKey)).toString();
+ const QString updaterKey = QLatin1String(UpdaterGroup) + '/';
+ d->m_maintenanceTool = settings->value(updaterKey + MaintenanceToolKey).toString();
+ d->m_lastCheckDate = settings->value(updaterKey + LastCheckDateKey, QDate()).toDate();
+ d->m_settings.automaticCheck
+ = settings->value(updaterKey + AutomaticCheckKey, def.automaticCheck).toBool();
const QMetaObject *mo = metaObject();
const QMetaEnum me = mo->enumerator(mo->indexOfEnumerator(CheckIntervalKey));
- if (me.isValid()) {
+ if (QTC_GUARD(me.isValid())) {
+ const QString checkInterval = settings
+ ->value(updaterKey + CheckIntervalKey,
+ me.valueToKey(def.checkInterval))
+ .toString();
bool ok = false;
const int newValue = me.keyToValue(checkInterval.toUtf8(), &ok);
if (ok)
- d->m_checkInterval = static_cast<CheckUpdateInterval>(newValue);
+ d->m_settings.checkInterval = static_cast<CheckUpdateInterval>(newValue);
}
}
void UpdateInfoPlugin::saveSettings()
{
- QSettings *settings = ICore::settings();
- settings->beginGroup(QLatin1String(UpdaterGroup));
- settings->setValue(QLatin1String(LastCheckDateKey), d->m_lastCheckDate);
- settings->setValue(QLatin1String(AutomaticCheckKey), d->m_automaticCheck);
+ UpdateInfoPluginPrivate::Settings def;
+ Utils::QtcSettings *settings = ICore::settings();
+ settings->beginGroup(UpdaterGroup);
+ settings->setValueWithDefault(LastCheckDateKey, d->m_lastCheckDate, QDate());
+ settings->setValueWithDefault(AutomaticCheckKey,
+ d->m_settings.automaticCheck,
+ def.automaticCheck);
// Note: don't save MaintenanceToolKey on purpose! This setting may be set only by installer.
// If creator is run not from installed SDK, the setting can be manually created here:
// [CREATOR_INSTALLATION_LOCATION]/share/qtcreator/QtProject/QtCreator.ini or
// [CREATOR_INSTALLATION_LOCATION]/Qt Creator.app/Contents/Resources/QtProject/QtCreator.ini on OS X
const QMetaObject *mo = metaObject();
const QMetaEnum me = mo->enumerator(mo->indexOfEnumerator(CheckIntervalKey));
- settings->setValue(QLatin1String(CheckIntervalKey), QLatin1String(me.valueToKey(d->m_checkInterval)));
+ settings->setValueWithDefault(CheckIntervalKey,
+ QString::fromUtf8(me.valueToKey(d->m_settings.checkInterval)),
+ QString::fromUtf8(me.valueToKey(def.checkInterval)));
settings->endGroup();
}
bool UpdateInfoPlugin::isAutomaticCheck() const
{
- return d->m_automaticCheck;
+ return d->m_settings.automaticCheck;
}
void UpdateInfoPlugin::setAutomaticCheck(bool on)
{
- if (d->m_automaticCheck == on)
+ if (d->m_settings.automaticCheck == on)
return;
- d->m_automaticCheck = on;
+ d->m_settings.automaticCheck = on;
if (on)
startAutoCheckForUpdates();
else
@@ -324,15 +339,15 @@ void UpdateInfoPlugin::setAutomaticCheck(bool on)
UpdateInfoPlugin::CheckUpdateInterval UpdateInfoPlugin::checkUpdateInterval() const
{
- return d->m_checkInterval;
+ return d->m_settings.checkInterval;
}
void UpdateInfoPlugin::setCheckUpdateInterval(UpdateInfoPlugin::CheckUpdateInterval interval)
{
- if (d->m_checkInterval == interval)
+ if (d->m_settings.checkInterval == interval)
return;
- d->m_checkInterval = interval;
+ d->m_settings.checkInterval = interval;
}
QDate UpdateInfoPlugin::lastCheckDate() const
@@ -351,7 +366,7 @@ void UpdateInfoPlugin::setLastCheckDate(const QDate &date)
QDate UpdateInfoPlugin::nextCheckDate() const
{
- return nextCheckDate(d->m_checkInterval);
+ return nextCheckDate(d->m_settings.checkInterval);
}
QDate UpdateInfoPlugin::nextCheckDate(CheckUpdateInterval interval) const