diff options
-rw-r--r-- | subsurface-core/CMakeLists.txt | 2 | ||||
-rw-r--r-- | subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp | 173 | ||||
-rw-r--r-- | subsurface-core/subsurface-qt/SettingsObjectWrapper.h | 48 | ||||
-rw-r--r-- | subsurface-core/units.h | 12 |
4 files changed, 146 insertions, 89 deletions
diff --git a/subsurface-core/CMakeLists.txt b/subsurface-core/CMakeLists.txt index 0e060b015..b172bc62d 100644 --- a/subsurface-core/CMakeLists.txt +++ b/subsurface-core/CMakeLists.txt @@ -84,7 +84,7 @@ set(SUBSURFACE_CORE_LIB_SRCS #Subsurface Qt have the Subsurface structs QObjectified for easy access via QML. subsurface-qt/DiveObjectHelper.cpp - #subsurface-qt/SettingsObjectWrapper.cpp + subsurface-qt/SettingsObjectWrapper.cpp ${SERIAL_FTDI} ${PLATFORM_SRC} ${BT_CORE_SRC_FILES} diff --git a/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp b/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp index 8a7695b1e..e7975971d 100644 --- a/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/subsurface-core/subsurface-qt/SettingsObjectWrapper.cpp @@ -809,15 +809,10 @@ void CloudStorageSettings::setBackgroundSync(bool value) void CloudStorageSettings::setBaseUrl(const QString& value) { - free(prefs.cloud_base_url); - free(prefs.cloud_git_url); + free((void*)prefs.cloud_base_url); + free((void*)prefs.cloud_git_url); prefs.cloud_base_url = copy_string(qPrintable(value)); - prefs.cloud_git_url = strdup(qPrintable(QString(prefs.cloud_base_url) + "/git")); -} - -void CloudStorageSettings::setCloudUrl(const QString& value) /* no-op */ -{ - Q_UNUSED(value); + prefs.cloud_git_url = copy_string(qPrintable(QString(prefs.cloud_base_url) + "/git")); } void CloudStorageSettings::setGitUrl(const QString& value) @@ -1060,7 +1055,7 @@ void DivePlannerSettings::setAscratelast6m(int value) s.beginGroup(group); s.setValue("ascratelast6m", value); prefs.ascratelast6m = value; - emit ascratelast6mChanged(); + emit ascratelast6mChanged(value); } void DivePlannerSettings::setDescrate(int value) @@ -1144,46 +1139,46 @@ void DivePlannerSettings::setDecoMode(deco_mode value) emit decoModeChanged(value); } -UnitsSettings::UnitsSettings(QObject *parent = 0) : +UnitsSettings::UnitsSettings(QObject *parent) : QObject(parent), group(QStringLiteral("Units")) { } -units::length UnitsSettings::length() const +int UnitsSettings::length() const { return prefs.units.length; } -units::pressure UnitsSettings::pressure() const +int UnitsSettings::pressure() const { return prefs.units.pressure; } -units::volume UnitsSettings::volume() const +int UnitsSettings::volume() const { return prefs.units.volume; } -units::temperature UnitsSettings::temperature() const +int UnitsSettings::temperature() const { return prefs.units.temperature; } -units::weight UnitsSettings::weight() const +int UnitsSettings::weight() const { return prefs.units.weight; } -units::vertical_speed_time UnitsSettings::verticalSpeedTime() const +int UnitsSettings::verticalSpeedTime() const { return prefs.units.vertical_speed_time; } QString UnitsSettings::unitSystem() const { - return prefs.unit_system; + return QString(); /*FIXME: there's no char * units on the prefs. */ } bool UnitsSettings::coordinatesTraditional() const @@ -1191,57 +1186,57 @@ bool UnitsSettings::coordinatesTraditional() const return prefs.coordinates_traditional; } -void UnitsSettings::setLength(units::length value) +void UnitsSettings::setLength(int value) { QSettings s; s.beginGroup(group); s.setValue("length", value); - prefs.units.length = value; + prefs.units.length = (units::LENGHT) value; emit lengthChanged(value); } -void UnitsSettings::setPressure(units::pressure value) +void UnitsSettings::setPressure(int value) { QSettings s; s.beginGroup(group); s.setValue("pressure", value); - prefs.units.pressure = value; + prefs.units.pressure = (units::PRESSURE) value; emit pressureChanged(value); } -void UnitsSettings::setVolume(units::volume value) +void UnitsSettings::setVolume(int value) { QSettings s; s.beginGroup(group); s.setValue("volume", value); - prefs.units.volume = value; + prefs.units.volume = (units::VOLUME) value; emit volumeChanged(value); } -void UnitsSettings::setTemperature(units::temperature value) +void UnitsSettings::setTemperature(int value) { QSettings s; s.beginGroup(group); s.setValue("temperature", value); - prefs.units.temperature = value; + prefs.units.temperature = (units::TEMPERATURE) value; emit temperatureChanged(value); } -void UnitsSettings::setWeight(units::weight value) +void UnitsSettings::setWeight(int value) { QSettings s; s.beginGroup(group); s.setValue("weight", value); - prefs.units.weight = value; + prefs.units.weight = (units::WEIGHT) value; emit weightChanged(value); } -void UnitsSettings::setVerticalSpeedTime(units::vertical_speed_time value) +void UnitsSettings::setVerticalSpeedTime(int value) { QSettings s; s.beginGroup(group); s.setValue("vertical_speed_time", value); - prefs.units.vertical_speed_time = value; + prefs.units.vertical_speed_time = (units::TIME) value; emit verticalSpeedTimeChanged(value); } @@ -1249,7 +1244,7 @@ void UnitsSettings::setCoordinatesTraditional(bool value) { QSettings s; s.setValue("coordinates", value); - prefs.coordinates_traditional = value.; + prefs.coordinates_traditional = value; emit coordinatesTraditionalChanged(value); } @@ -1257,7 +1252,6 @@ 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; @@ -1334,7 +1328,7 @@ void GeneralSettingsObjectWrapper::setDefaultFileBehavior(short value) { QSettings s; s.setValue("default_file_behavior", value); - prefs.default_file_behavior = value.; + prefs.default_file_behavior = value; if (prefs.default_file_behavior == UNDEFINED_DEFAULT_FILE) { // undefined, so check if there's a filename set and // use that, otherwise go with no default file @@ -1350,7 +1344,7 @@ void GeneralSettingsObjectWrapper::setUseDefaultFile(bool value) { QSettings s; s.setValue("use_default_file", value); - prefs.use_default_file = value.; + prefs.use_default_file = value; emit useDefaultFileChanged(value); } @@ -1358,7 +1352,7 @@ void GeneralSettingsObjectWrapper::setDefaultSetPoint(int value) { QSettings s; s.setValue("defaultsetpoint", value); - prefs.defaultsetpoint = value.; + prefs.defaultsetpoint = value; emit defaultSetPointChanged(value); } @@ -1366,7 +1360,7 @@ void GeneralSettingsObjectWrapper::setO2Consumption(int value) { QSettings s; s.setValue("o2consumption", value); - prefs.o2consumption = value.; + prefs.o2consumption = value; emit o2ConsumptionChanged(value); } @@ -1374,7 +1368,7 @@ void GeneralSettingsObjectWrapper::setPscrRatio(int value) { QSettings s; s.setValue("pscr_ratio", value); - prefs.pscr_ratio = value.; + prefs.pscr_ratio = value; emit pscrRatioChanged(value); } @@ -1403,22 +1397,23 @@ void DisplaySettingsObjectWrapper::setDivelistFont(const QString& value) { QSettings s; s.setValue("divelist_font", value); + QString newValue = value; if (value.contains(",")) - value = value.left(value.indexOf(",")); + newValue = value.left(value.indexOf(",")); - if (!subsurface_ignore_font(value.toUtf8().constData())) { + if (!subsurface_ignore_font(newValue.toUtf8().constData())) { free((void *)prefs.divelist_font); - prefs.divelist_font = strdup(value.toUtf8().constData()); - qApp->setFont(QFont(value)); + prefs.divelist_font = strdup(newValue.toUtf8().constData()); + qApp->setFont(QFont(newValue)); } - emit divelistFontChanged(value); + emit divelistFontChanged(newValue); } void DisplaySettingsObjectWrapper::setFontSize(double value) { QSettings s; s.setValue("font_size", value); - prefs.font_size = value.; + prefs.font_size = value; QFont defaultFont = qApp->font(); defaultFont.setPointSizeF(prefs.font_size); qApp->setFont(defaultFont); @@ -1429,7 +1424,7 @@ void DisplaySettingsObjectWrapper::setDisplayInvalidDives(short value) { QSettings s; s.setValue("displayinvalid", value); - prefs.display_invalid_dives = value.; + prefs.display_invalid_dives = value; emit displayInvalidDivesChanged(value); } @@ -1518,7 +1513,7 @@ void LanguageSettingsObjectWrapper::setTimeFormatOverride(bool value) { QSettings s; s.setValue("time_format_override", value); - prefs.time_format_override = value.; + prefs.time_format_override = value; emit timeFormatOverrideChanged(value); } @@ -1526,24 +1521,86 @@ void LanguageSettingsObjectWrapper::setDateFormatOverride(bool value) { QSettings s; s.setValue("date_format_override", value); - prefs.date_format_override = value.; + prefs.date_format_override = value; emit dateFormatOverrideChanged(value); } +AnimationsSettingsObjectWrapper::AnimationsSettingsObjectWrapper(QObject* parent): + QObject(parent), + group("Animations") + +{ +} + +int AnimationsSettingsObjectWrapper::animationSpeed() const +{ + return prefs.animation_speed; +} + +void AnimationsSettingsObjectWrapper::setAnimationSpeed(int value) +{ + QSettings s; + s.setValue("animation_speed", value); + prefs.animation_speed = value; + emit animationSpeedChanged(value); +} + +LocationServiceSettingsObjectWrapper::LocationServiceSettingsObjectWrapper(QObject* parent): + QObject(parent), + group("locationService") +{ +} + +int LocationServiceSettingsObjectWrapper::distanceThreshold() const +{ + return prefs.distance_threshold; +} + +int LocationServiceSettingsObjectWrapper::timeThreshold() const +{ + return prefs.time_threshold; +} + +void LocationServiceSettingsObjectWrapper::setDistanceThreshold(int value) +{ + QSettings s; + s.setValue("distance_threshold", value); + prefs.distance_threshold = value; + emit distanceThresholdChanged(value); +} + +void LocationServiceSettingsObjectWrapper::setTimeThreshold(int value) +{ + QSettings s; + s.setValue("time_threshold", value); + prefs.time_threshold = value; + emit timeThresholdChanged( value); +} + SettingsObjectWrapper::SettingsObjectWrapper(QObject* parent): QObject(parent), - techDetails(new TechnicalDetailsSettings()), - pp_gas(new PartialPressureGasSettings()), - facebook(new FacebookSettings()), - geocoding(new GeocodingPreferences()), - proxy(new ProxySettings()), - cloud_storage(new CloudStorageSettings()), - planner_settings(new DivePlannerSettings()), - unit_settings(new UnitsSettings()), - general_settings(new GeneralSettingsObjectWrapper()), - display_settings(new DisplaySettingsObjectWrapper()), - language_settings(new LanguageSettingsObjectWrapper()), - animation_settings(new AnimationsSettingsObjectWrapper()), - location_settings(new LocationServiceSettingsObjectWrapper()) + techDetails(new TechnicalDetailsSettings(this)), + pp_gas(new PartialPressureGasSettings(this)), + facebook(new FacebookSettings(this)), + geocoding(new GeocodingPreferences(this)), + proxy(new ProxySettings(this)), + cloud_storage(new CloudStorageSettings(this)), + planner_settings(new DivePlannerSettings(this)), + unit_settings(new UnitsSettings(this)), + general_settings(new GeneralSettingsObjectWrapper(this)), + display_settings(new DisplaySettingsObjectWrapper(this)), + language_settings(new LanguageSettingsObjectWrapper(this)), + animation_settings(new AnimationsSettingsObjectWrapper(this)), + location_settings(new LocationServiceSettingsObjectWrapper(this)) +{ +} + +void SettingsObjectWrapper::setSaveUserIdLocal(short int value) +{ + //TODO: Find where this is stored on the preferences. +} + +short int SettingsObjectWrapper::saveUserIdLocal() const { + return prefs.save_userid_local; } diff --git a/subsurface-core/subsurface-qt/SettingsObjectWrapper.h b/subsurface-core/subsurface-qt/SettingsObjectWrapper.h index 2b28d21bd..6a8aa73b8 100644 --- a/subsurface-core/subsurface-qt/SettingsObjectWrapper.h +++ b/subsurface-core/subsurface-qt/SettingsObjectWrapper.h @@ -413,43 +413,43 @@ private: class UnitsSettings : public QObject { Q_OBJECT - 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(int length READ length WRITE setLength NOTIFY lengthChanged) + Q_PROPERTY(int pressure READ pressure WRITE setPressure NOTIFY pressureChanged) + Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(int temperature READ temperature WRITE setTemperature NOTIFY temperatureChanged) + Q_PROPERTY(int 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) + Q_PROPERTY(int 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; + int length() const; + int pressure() const; + int volume() const; + int temperature() const; + int weight() const; + int 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 setLength(int value); + void setPressure(int value); + void setVolume(int value); + void setTemperature(int value); + void setWeight(int value); + void setVerticalSpeedTime(int 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 lengthChanged(int value); + void pressureChanged(int value); + void volumeChanged(int value); + void temperatureChanged(int value); + void weightChanged(int value); + void verticalSpeedTimeChanged(int value); void unitSystemChanged(const QString& value); void coordinatesTraditionalChanged(bool value); private: diff --git a/subsurface-core/units.h b/subsurface-core/units.h index 9d1b0fc8c..9ad4b7282 100644 --- a/subsurface-core/units.h +++ b/subsurface-core/units.h @@ -228,29 +228,29 @@ static inline int mbar_to_PSI(int mbar) #undef PASCAL #endif struct units { - enum { + enum LENGHT { METERS, FEET } length; - enum { + enum VOLUME { LITER, CUFT } volume; - enum { + enum PRESSURE { BAR, PSI, PASCAL } pressure; - enum { + enum TEMPERATURE { CELSIUS, FAHRENHEIT, KELVIN } temperature; - enum { + enum WEIGHT { KG, LBS } weight; - enum { + enum TIME { SECONDS, MINUTES } vertical_speed_time; |