aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/updateinfo/settingspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/updateinfo/settingspage.cpp')
-rw-r--r--src/plugins/updateinfo/settingspage.cpp125
1 files changed, 117 insertions, 8 deletions
diff --git a/src/plugins/updateinfo/settingspage.cpp b/src/plugins/updateinfo/settingspage.cpp
index 6565760dc0..291424fd41 100644
--- a/src/plugins/updateinfo/settingspage.cpp
+++ b/src/plugins/updateinfo/settingspage.cpp
@@ -29,21 +29,31 @@
****************************************************************************/
#include "settingspage.h"
-#include "updateinfoplugin.h"
#include <coreplugin/coreconstants.h>
+#include <utils/qtcassert.h>
+#include <utils/progressindicator.h>
+
+#include <QDate>
using namespace UpdateInfo;
using namespace UpdateInfo::Internal;
+namespace {
+
+static const char FILTER_OPTIONS_PAGE_ID[] = "Update";
+static const char FILTER_OPTIONS_PAGE[] = QT_TRANSLATE_NOOP("Update", "Update");
+
+}
+
SettingsPage::SettingsPage(UpdateInfoPlugin *plugin)
: m_widget(0)
, m_plugin(plugin)
{
- setId(Constants::FILTER_OPTIONS_PAGE);
+ setId(FILTER_OPTIONS_PAGE_ID);
setCategory(Core::Constants::SETTINGS_CATEGORY_CORE);
setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
- setDisplayName(QCoreApplication::translate("Update", UpdateInfo::Constants::FILTER_OPTIONS_PAGE));
+ setDisplayName(QCoreApplication::translate("Update", FILTER_OPTIONS_PAGE));
setDisplayCategory(QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE));
}
@@ -52,17 +62,116 @@ QWidget *SettingsPage::widget()
if (!m_widget) {
m_widget = new QWidget;
m_ui.setupUi(m_widget);
- m_ui.m_timeTable->setItemText(m_ui.m_timeTable->currentIndex(), QTime(m_plugin->scheduledUpdateTime())
- .toString(QLatin1String("hh:mm")));
+ m_ui.m_checkIntervalComboBox->addItem(tr("Daily"), UpdateInfoPlugin::DailyCheck);
+ m_ui.m_checkIntervalComboBox->addItem(tr("Weekly"), UpdateInfoPlugin::WeeklyCheck);
+ m_ui.m_checkIntervalComboBox->addItem(tr("Monthly"), UpdateInfoPlugin::MonthlyCheck);
+ UpdateInfoPlugin::CheckUpdateInterval interval = m_plugin->checkUpdateInterval();
+ for (int i = 0; i < m_ui.m_checkIntervalComboBox->count(); i++) {
+ if (m_ui.m_checkIntervalComboBox->itemData(i).toInt() == interval) {
+ m_ui.m_checkIntervalComboBox->setCurrentIndex(i);
+ break;
+ }
+ }
+
+ m_ui.m_updatesGroupBox->setChecked(m_plugin->isAutomaticCheck());
+
+ updateLastCheckDate();
+ checkRunningChanged(m_plugin->isCheckForUpdatesRunning());
+
+ connect(m_ui.m_checkNowButton, &QPushButton::clicked,
+ m_plugin, &UpdateInfoPlugin::startCheckForUpdates);
+ connect(m_ui.m_checkIntervalComboBox,
+ static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+ this, &SettingsPage::updateNextCheckDate);
+ connect(m_plugin, &UpdateInfoPlugin::lastCheckDateChanged,
+ this, &SettingsPage::updateLastCheckDate);
+ connect(m_plugin, &UpdateInfoPlugin::checkForUpdatesRunningChanged,
+ this, &SettingsPage::checkRunningChanged);
+ connect(m_plugin, &UpdateInfoPlugin::newUpdatesAvailable,
+ this, &SettingsPage::newUpdatesAvailable);
}
return m_widget;
}
+UpdateInfoPlugin::CheckUpdateInterval SettingsPage::currentCheckInterval() const
+{
+ QTC_ASSERT(m_widget, return UpdateInfoPlugin::WeeklyCheck);
+
+ return static_cast<UpdateInfoPlugin::CheckUpdateInterval>
+ (m_ui.m_checkIntervalComboBox->itemData(m_ui.m_checkIntervalComboBox->currentIndex()).toInt());
+}
+
+void SettingsPage::newUpdatesAvailable(bool available)
+{
+ if (!m_widget)
+ return;
+
+ const QString message = available
+ ? tr("New updates are available.")
+ : tr("No new updates are available.");
+ m_ui.m_messageLabel->setText(message);
+}
+
+void SettingsPage::checkRunningChanged(bool running)
+{
+ if (!m_widget)
+ return;
+
+ m_ui.m_checkNowButton->setDisabled(running);
+
+ if (running) {
+ if (!m_progressIndicator) {
+ m_progressIndicator = new Utils::ProgressIndicator(Utils::ProgressIndicator::Large);
+ m_progressIndicator->attachToWidget(m_widget);
+ }
+ m_progressIndicator->show();
+ } else {
+ if (m_progressIndicator) {
+ delete m_progressIndicator;
+ }
+ }
+
+ const QString message = running
+ ? tr("Checking for updates...") : QString();
+ m_ui.m_messageLabel->setText(message);
+}
+
+void SettingsPage::updateLastCheckDate()
+{
+ if (!m_widget)
+ return;
+
+ const QDate date = m_plugin->lastCheckDate();
+ QString lastCheckDateString;
+ if (date.isValid())
+ lastCheckDateString = date.toString();
+ else
+ lastCheckDateString = tr("Not checked yet");
+
+ m_ui.m_lastCheckDateLabel->setText(lastCheckDateString);
+
+ updateNextCheckDate();
+}
+
+void SettingsPage::updateNextCheckDate()
+{
+ if (!m_widget)
+ return;
+
+ QDate date = m_plugin->nextCheckDate(currentCheckInterval());
+ if (!date.isValid() || date < QDate::currentDate())
+ date = QDate::currentDate();
+
+ m_ui.m_nextCheckDateLabel->setText(date.toString());
+}
+
void SettingsPage::apply()
{
- m_plugin->setScheduledUpdateTime(QTime::fromString(m_ui.m_timeTable->currentText(),
- QLatin1String("hh:mm")));
- m_plugin->saveSettings();
+ if (!m_widget)
+ return;
+
+ m_plugin->setCheckUpdateInterval(currentCheckInterval());
+ m_plugin->setAutomaticCheck(m_ui.m_updatesGroupBox->isChecked());
}
void SettingsPage::finish()