diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2016-01-14 17:06:55 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-01-15 05:56:43 -0800 |
commit | ba111ce9a3a913bdbcc54f7eb2f96b3514a1673e (patch) | |
tree | b99f4053d369083069d140d20f2e0af4caffa42f /subsurface-core | |
parent | 455f7bd51ba3a0b2be2dca01d936cd0073a6db36 (diff) | |
download | subsurface-ba111ce9a3a913bdbcc54f7eb2f96b3514a1673e.tar.gz |
Settings QObjectification: implement the unit settings
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-core')
-rw-r--r-- | subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp | 131 | ||||
-rw-r--r-- | subsurface-core/subsurface-qt/SettingsObjectWrapper.h | 48 |
2 files changed, 170 insertions, 9 deletions
diff --git a/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp b/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp index 3deaafdad..ef48dfa59 100644 --- a/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp @@ -1094,6 +1094,135 @@ void DivePlannerSettings::setDecoMode(deco_mode value) QSettings s; s.beginGroup(group); s.setValue("deco_mode", value); - prefs.deco_mode = value.; + prefs.deco_mode = value; emit decoModeChanged(value); } + +UnitsSettings::UnitsSettings(QObject *parent = 0) : + QObject(parent), + group(QStringLiteral("Units")) +{ + +} + +units::length UnitsSettings::length() const +{ + return prefs.units.length; +} + +units::pressure UnitsSettings::pressure() const +{ + return prefs.units.pressure; +} + +units::volume UnitsSettings::volume() const +{ + return prefs.units.volume; +} + +units::temperature UnitsSettings::temperature() const +{ + return prefs.units.temperature; +} + +units::weight UnitsSettings::weight() const +{ + return prefs.units.weight; +} + +units::vertical_speed_time UnitsSettings::verticalSpeedTime() const +{ + return prefs.units.vertical_speed_time; +} + +QString UnitsSettings::unitSystem() const +{ + return prefs.unit_system; +} + +bool UnitsSettings::coordinatesTraditional() const +{ + return prefs.coordinates_traditional; +} + +void UnitsSettings::setLength(units::length value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("length", value); + prefs.units.length = value; + emit lengthChanged(value); +} + +void UnitsSettings::setPressure(units::pressure value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("pressure", value); + prefs.units.pressure = value; + emit pressureChanged(value); +} + +void UnitsSettings::setVolume(units::volume value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("volume", value); + prefs.units.volume = value; + emit volumeChanged(value); +} + +void UnitsSettings::setTemperature(units::temperature value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("temperature", value); + prefs.units.temperature = value; + emit temperatureChanged(value); +} + +void UnitsSettings::setWeight(units::weight value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("weight", value); + prefs.units.weight = value; + emit weightChanged(value); +} + +void UnitsSettings::setVerticalSpeedTime(units::vertical_speed_time value) +{ + QSettings s; + s.beginGroup(group); + s.setValue("vertical_speed_time", value); + prefs.units.vertical_speed_time = value; + emit verticalSpeedTimeChanged(value); +} + +void UnitsSettings::setCoordinatesTraditional(bool value) +{ + QSettings s; + s.setValue("coordinates", value); + prefs.coordinates_traditional = value.; + emit coordinatesTraditionalChanged(value); +} + +void UnitsSettings::setUnitSystem(const QString& value) +{ + QSettings s; + s.setValue("unit_system", value); + prefs.unit_system = value; + + if (value == QStringLiteral("metric")) { + prefs.unit_system = METRIC; + prefs.units = SI_units; + } else if (value == QStringLiteral("imperial")) { + prefs.unit_system = IMPERIAL; + prefs.units = IMPERIAL_units; + } else { + prefs.unit_system = PERSONALIZE; + } + + emit unitSystemChanged(value); + // TODO: emit the other values here? +} diff --git a/subsurface-core/subsurface-qt/SettingsObjectWrapper.h b/subsurface-core/subsurface-qt/SettingsObjectWrapper.h index 3275113ea..c0d0cabd7 100644 --- a/subsurface-core/subsurface-qt/SettingsObjectWrapper.h +++ b/subsurface-core/subsurface-qt/SettingsObjectWrapper.h @@ -407,15 +407,47 @@ private: class UnitsSettings : public QObject { Q_OBJECT - Q_PROPERTY(units::length length READ divelistFont WRITE setDivelistFont NOTIFY divelistFontChanged) - Q_PROPERTY(units::pressure pressure READ defaultFilename WRITE setDefaultFilename NOTIFY defaultFilenameChanged) - Q_PROPERTY(units::volume volume READ defaultCylinder WRITE setDefaultCylinder NOTIFY defaultCylinderChanged) - Q_PROPERTY(units::temperature temperature READ timeFormat WRITE setTimeFormat NOTIFY timeFormatChanged) - Q_PROPERTY(units::weight weight READ dateFormat WRITE setDateFormat NOTIFY dateFormatChanged) - Q_PROPERTY(units::vertical_speed_time vertical_speed_time READ dateFormatShort WRITE setDateFormatShort NOTIFY dateFormatShortChanged) - Q_PROPERTY(QString unit_system READ unitSystem WRITE setUnitSystem NOTIFY unitSystemChanged) + Q_PROPERTY(units::length length READ length WRITE setLength NOTIFY lengthChanged) + Q_PROPERTY(units::pressure pressure READ pressure WRITE setPressure NOTIFY pressureChanged) + Q_PROPERTY(units::volume volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(units::temperature temperature READ temperature WRITE setTemperature NOTIFY temperatureChanged) + Q_PROPERTY(units::weight weight READ weight WRITE setWeight NOTIFY weightChanged) + Q_PROPERTY(QString unit_system READ unitSystem WRITE setUnitSystem NOTIFY unitSystemChanged) Q_PROPERTY(bool coordinates_traditional READ coordinatesTraditional WRITE setCoordinatesTraditional NOTIFY coordinatesTraditionalChanged) + Q_PROPERTY(units::vertical_speed_time vertical_speed_time READ verticalSpeedTime WRITE setVerticalSpeedTime NOTIFY verticalSpeedTimeChanged) +public: + UnitsSettings(QObject *parent = 0); + units::length length() const; + units::pressure pressure() const; + units::volume volume() const; + units::temperature temperature() const; + units::weight weight() const; + units::vertical_speed_time verticalSpeedTime() const; + QString unitSystem() const; + bool coordinatesTraditional() const; + +public slots: + void setLength(units::length value); + void setPressure(units::pressure value); + void setVolume(units::volume value); + void setTemperature(units::temperature value); + void setWeight(units::weight value); + void setVerticalSpeedTime(units::vertical_speed_time value); + void setUnitSystem(const QString& value); + void setCoordinatesTraditional(bool value); + +signals: + void lengthChanged(units::length value); + void pressureChanged(units::pressure value); + void volumeChanged(units::volume value); + void temperatureChanged(units::temperature value); + void weightChanged(units::weight value); + void verticalSpeedTimeChanged(units::vertical_speed_time value); + void unitSystemChanged(const QString& value); + void coordinatesTraditionalChanged(bool value); +private: + QString group; }; class SettingsObjectWrapper : public QObject { @@ -451,7 +483,7 @@ class SettingsObjectWrapper : public QObject { ProxySettings *proxy; CloudStorageSettings *cloud_storage; DivePlannerSettings *planner_settings; - + UnitsSettings *unit_settings; public: SettingsObjectWrapper(QObject *parent = NULL); }; |