diff options
author | Tomaz Canabrava <tomaz.canabrava@gmail.com> | 2016-08-10 15:50:00 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-08-27 10:58:13 -0700 |
commit | 5c8b87b5fdd73310447589771e68ea387aedfa6c (patch) | |
tree | af7bfe938c69061bc3391541d73f3ff0f051573a /core | |
parent | 4f2057cd3077f0d91ec3696b96fa5ef6cfcf1755 (diff) | |
download | subsurface-5c8b87b5fdd73310447589771e68ea387aedfa6c.tar.gz |
Settings update: Add UpdateManagerSettings to SettingsObjectWrapper
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/pref.h | 7 | ||||
-rw-r--r-- | core/subsurface-qt/SettingsObjectWrapper.cpp | 53 | ||||
-rw-r--r-- | core/subsurface-qt/SettingsObjectWrapper.h | 33 |
3 files changed, 89 insertions, 4 deletions
diff --git a/core/pref.h b/core/pref.h index 617e349c1..304bc0b63 100644 --- a/core/pref.h +++ b/core/pref.h @@ -43,6 +43,12 @@ enum deco_mode { VPMB }; +typedef struct { + bool dont_check_for_updates; + char *last_version_used; + char *next_check; +} update_manager_prefs_t; + struct preferences { const char *divelist_font; const char *default_filename; @@ -134,6 +140,7 @@ struct preferences { bool git_local_only; short cloud_timeout; locale_prefs_t locale; //: TODO: move the rest of locale based info here. + update_manager_prefs_t update_manager; }; enum unit_system_values { METRIC, diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index fe012c9b9..6d66c9864 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/core/subsurface-qt/SettingsObjectWrapper.cpp @@ -2,10 +2,60 @@ #include <QSettings> #include <QApplication> #include <QFont> +#include <QDate> #include "../dive.h" // TODO: remove copy_string from dive.h +UpdateManagerSettings::UpdateManagerSettings(QObject *parent) : QObject(parent), group("UpdateManager") +{ + +} + +bool UpdateManagerSettings::dontCheckForUpdates() const +{ + return prefs.update_manager.dont_check_for_updates; +} + +QString UpdateManagerSettings::lastVersionUsed() const +{ + return prefs.update_manager.last_version_used; +} + +QDate UpdateManagerSettings::nextCheck() const +{ + return QDate::fromString(QString(prefs.update_manager.next_check)); +} + +void UpdateManagerSettings::setDontCheckForUpdates(bool value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("DontCheckForUpdates", value); + prefs.update_manager.dont_check_for_updates = value; + emit dontCheckForUpdatesChanged(value); +} + +void UpdateManagerSettings::setLastVersionUsed(const QString& value)\ +{ + QSettings s; + s.beginGroup(group); + s.setValue("LastVersionUsed", value); + free (prefs.update_manager.last_version_used); + prefs.update_manager.last_version_used = copy_string(qPrintable(value)); + emit lastVersionUsedChanged(value); +} + +void UpdateManagerSettings::setNextCheck(const QDate& date) +{ + QSettings s; + s.beginGroup(group); + s.setValue("NextCheck", date); + free (prefs.update_manager.next_check); + prefs.update_manager.next_check = copy_string(qPrintable(date.toString())); + emit nextCheckChanged(date); +} + static QString tecDetails = QStringLiteral("TecDetails"); PartialPressureGasSettings::PartialPressureGasSettings(QObject* parent): @@ -1628,7 +1678,8 @@ QObject(parent), display_settings(new DisplaySettingsObjectWrapper(this)), language_settings(new LanguageSettingsObjectWrapper(this)), animation_settings(new AnimationsSettingsObjectWrapper(this)), - location_settings(new LocationServiceSettingsObjectWrapper(this)) + location_settings(new LocationServiceSettingsObjectWrapper(this)), + update_manager_settings(new UpdateManagerSettings(this)) { } diff --git a/core/subsurface-qt/SettingsObjectWrapper.h b/core/subsurface-qt/SettingsObjectWrapper.h index 157c7432c..392bf068b 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.h +++ b/core/subsurface-qt/SettingsObjectWrapper.h @@ -11,6 +11,30 @@ * and QWidget frontends. This class will be huge, since * I need tons of properties, one for each option. */ +class UpdateManagerSettings : public QObject { + Q_OBJECT + Q_PROPERTY(bool dont_check_for_updates READ dontCheckForUpdates WRITE setDontCheckForUpdates NOTIFY dontCheckForUpdatesChanged) + Q_PROPERTY(QString last_version_used READ lastVersionUsed WRITE setLastVersionUsed NOTIFY lastVersionUsedChanged) + Q_PROPERTY(QDate next_check READ nextCheck WRITE nextCheckChanged) +public: + UpdateManagerSettings(QObject *parent); + bool dontCheckForUpdates() const; + QString lastVersionUsed() const; + QDate nextCheck() const; + +public slots: + void setDontCheckForUpdates(bool value); + void setLastVersionUsed(const QString& value); + void setNextCheck(const QDate& date); + +signals: + void dontCheckForUpdatesChanged(bool value); + void lastVersionUsedChanged(const QString& value); + void nextCheckChanged(const QDate& date); +private: + QString group; +}; + /* Control the state of the Partial Pressure Graphs preferences */ class PartialPressureGasSettings : public QObject { Q_OBJECT @@ -51,9 +75,9 @@ private: class TechnicalDetailsSettings : public QObject { Q_OBJECT - Q_PROPERTY(double modpO2 READ modp02 WRITE setModp02 NOTIFY modpO2Changed) + Q_PROPERTY(double modpO2 READ modp02 WRITE setModp02 NOTIFY modpO2Changed) Q_PROPERTY(bool ead READ ead WRITE setEad NOTIFY eadChanged) - Q_PROPERTY(bool mod READ mod WRITE setMod NOTIFY modChanged); + Q_PROPERTY(bool mod READ mod WRITE setMod NOTIFY modChanged) Q_PROPERTY(bool dcceiling READ dcceiling WRITE setDCceiling NOTIFY dcceilingChanged) Q_PROPERTY(bool redceiling READ redceiling WRITE setRedceiling NOTIFY redceilingChanged) Q_PROPERTY(bool calcceiling READ calcceiling WRITE setCalcceiling NOTIFY calcceilingChanged) @@ -621,6 +645,9 @@ class SettingsObjectWrapper : public QObject { Q_PROPERTY(LanguageSettingsObjectWrapper* language MEMBER language_settings CONSTANT) Q_PROPERTY(AnimationsSettingsObjectWrapper* animation MEMBER animation_settings CONSTANT) Q_PROPERTY(LocationServiceSettingsObjectWrapper* Location MEMBER location_settings CONSTANT) + + Q_PROPERTY(UpdateManagerSettings* update MEMBER update_manager_settings CONSTANT) + public: static SettingsObjectWrapper *instance(); @@ -637,7 +664,7 @@ public: LanguageSettingsObjectWrapper *language_settings; AnimationsSettingsObjectWrapper *animation_settings; LocationServiceSettingsObjectWrapper *location_settings; - + UpdateManagerSettings *update_manager_settings; private: SettingsObjectWrapper(QObject *parent = NULL); }; |