# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-08-20 05:39:44 # Node ID 70a6380ef381deb06a0303ba81977b1066e52e3c # Parent ceb86f2d0c0afe9237ea8527d90f9afc4eb3695f automatically check update at startup diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -550,6 +550,7 @@ void MainWindow::saveAllSettings(QSettin plotMan->saveSettings(settings); commandPanel.saveSettings(settings); recordPanel.saveSettings(settings); + updateCheckDialog.saveSettings(settings); } void MainWindow::loadAllSettings(QSettings* settings) @@ -562,6 +563,7 @@ void MainWindow::loadAllSettings(QSettin plotMan->loadSettings(settings); commandPanel.loadSettings(settings); recordPanel.loadSettings(settings); + updateCheckDialog.loadSettings(settings); } void MainWindow::saveMWSettings(QSettings* settings) diff --git a/src/setting_defines.h b/src/setting_defines.h --- a/src/setting_defines.h +++ b/src/setting_defines.h @@ -30,6 +30,7 @@ const char SettingGroup_Channels[] = "Ch const char SettingGroup_Plot[] = "Plot"; const char SettingGroup_Commands[] = "Commands"; const char SettingGroup_Record[] = "Record"; +const char SettingGroup_UpdateCheck[] = "UpdateCheck"; // mainwindow setting keys const char SG_MainWindow_Size[] = "size"; @@ -103,4 +104,8 @@ const char SG_Record_Header[] const char SG_Record_Separator[] = "separator"; const char SG_Record_DisableBuffering[] = "disableBuffering"; +// update check settings keys +const char SG_UpdateCheck_Periodic[] = "periodicCheck"; +const char SG_UpdateCheck_LastCheck[] = "lastCheck"; + #endif // SETTING_DEFINES_H diff --git a/src/updatecheckdialog.cpp b/src/updatecheckdialog.cpp --- a/src/updatecheckdialog.cpp +++ b/src/updatecheckdialog.cpp @@ -17,6 +17,7 @@ along with serialplot. If not, see . */ +#include "setting_defines.h" #include "updatecheckdialog.h" #include "ui_updatecheckdialog.h" @@ -42,9 +43,9 @@ UpdateCheckDialog::UpdateCheckDialog(QWi } else { + show(); text = QString("Found update to version %1. Click to download.")\ .arg(newVersion).arg(downloadUrl); - qDebug() << text; } ui->label->setText(text); @@ -66,3 +67,22 @@ void UpdateCheckDialog::closeEvent(QShow { if (updateChecker.isChecking()) updateChecker.cancelCheck(); } + +void UpdateCheckDialog::saveSettings(QSettings* settings) +{ + settings->beginGroup(SettingGroup_UpdateCheck); + settings->setValue(SG_UpdateCheck_Periodic, ui->cbPeriodic->isChecked()); + settings->endGroup(); +} + +void UpdateCheckDialog::loadSettings(QSettings* settings) +{ + settings->beginGroup(SettingGroup_UpdateCheck); + ui->cbPeriodic->setChecked(settings->value(SG_UpdateCheck_Periodic).toBool()); + settings->endGroup(); + + if (ui->cbPeriodic->isChecked()) + { + updateChecker.checkUpdate(); + } +} diff --git a/src/updatecheckdialog.h b/src/updatecheckdialog.h --- a/src/updatecheckdialog.h +++ b/src/updatecheckdialog.h @@ -21,6 +21,7 @@ #define UPDATECHECKDIALOG_H #include +#include #include "updatechecker.h" namespace Ui { @@ -35,6 +36,11 @@ public: explicit UpdateCheckDialog(QWidget *parent = 0); ~UpdateCheckDialog(); + /// Stores update settings into a `QSettings`. + void saveSettings(QSettings* settings); + /// Loads update settings from a `QSettings`. + void loadSettings(QSettings* settings); + private: Ui::UpdateCheckDialog *ui; UpdateChecker updateChecker; diff --git a/src/updatecheckdialog.ui b/src/updatecheckdialog.ui --- a/src/updatecheckdialog.ui +++ b/src/updatecheckdialog.ui @@ -25,6 +25,16 @@ + + + Check updates periodically + + + true + + + + Qt::Horizontal diff --git a/src/updatechecker.cpp b/src/updatechecker.cpp --- a/src/updatechecker.cpp +++ b/src/updatechecker.cpp @@ -47,6 +47,8 @@ bool UpdateChecker::isChecking() const void UpdateChecker::checkUpdate() { + if (isChecking()) return; + auto req = QNetworkRequest(QUrl(BB_DOWNLOADS_URL)); activeReply = nam.get(req); }