only two patches but they fix tons of preferences mistakes made by me on the last batch of commits.
most of them where not paying too much attention to copy and paste. I'm still debugging this, but with this there's no more easy crashes and almost (all?) preferences loads and behaves correctly. I'll continue to test preferences - by - preference tomorrow, it's currently 10 pm here and I'm exausted.
From 3c8cab45cca89240afc3240befc354a43a80ecd6 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Sat, 27 Aug 2016 22:13:33 -0300 Subject: [PATCH 2/2] Fix missing groups and Language initialization there's one function named uiLanguage() that should return the current uiLanguage() that subsurface is running, but it actually sets a whole lot of preferences, I think that the general idea of that function is okay, but it seems broken for me. still, I used it to load the correct language from the preferences since it's what this function is currently doing right now. Also, a lot of missing groups where added. Signed-off-by: Tomaz Canabrava <[email protected]> --- core/qthelper.cpp | 4 ++++ core/subsurface-qt/SettingsObjectWrapper.cpp | 14 +++++++++++++- desktop-widgets/preferences/preferences_language.cpp | 7 ++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/qthelper.cpp b/core/qthelper.cpp index a986a68..f345478 100644 --- a/core/qthelper.cpp +++ b/core/qthelper.cpp @@ -481,6 +481,9 @@ extern "C" const char *subsurface_user_agent() return strdup(qPrintable(uA)); } +/* TOOD: Move this to SettingsObjectWrapper, and also fix this complexity. + * gezus. + */ QString uiLanguage(QLocale *callerLoc) { QString shortDateFormat; @@ -489,6 +492,7 @@ QString uiLanguage(QLocale *callerLoc) QSettings s; QVariant v; s.beginGroup("Language"); + GET_BOOL("UseSystemLanguage", locale.use_system_language); if (!s.value("UseSystemLanguage", true).toBool()) { loc = QLocale(s.value("UiLanguage", QLocale().uiLanguages().first()).toString()); diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index f3b156a..64d4e27 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/core/subsurface-qt/SettingsObjectWrapper.cpp @@ -1618,6 +1618,7 @@ void UnitsSettings::setCoordinatesTraditional(bool value) if (value == prefs.coordinates_traditional) return; QSettings s; + s.beginGroup(group); s.setValue("coordinates", value); prefs.coordinates_traditional = value; emit coordinatesTraditionalChanged(value); @@ -1633,6 +1634,7 @@ void UnitsSettings::setUnitSystem(const QString& value) return; QSettings s; + s.setValue("unit_system", value); if (value == QStringLiteral("metric")) { @@ -1893,6 +1895,7 @@ void LanguageSettingsObjectWrapper::setUseSystemLanguage(bool value) if (value == prefs.locale.use_system_language) return; QSettings s; + s.beginGroup(group); s.setValue("UseSystemLanguage", value); prefs.locale.use_system_language = copy_string(qPrintable(value)); emit useSystemLanguageChanged(value); @@ -1903,6 +1906,7 @@ void LanguageSettingsObjectWrapper::setLanguage(const QString& value) if (value == prefs.locale.language) return; QSettings s; + s.beginGroup(group); s.setValue("UiLanguage", value); prefs.locale.language = copy_string(qPrintable(value)); emit languageChanged(value); @@ -1913,6 +1917,7 @@ void LanguageSettingsObjectWrapper::setTimeFormat(const QString& value) if (value == prefs.time_format) return; QSettings s; + s.beginGroup(group); s.setValue("time_format", value); prefs.time_format = copy_string(qPrintable(value));; emit timeFormatChanged(value); @@ -1924,6 +1929,7 @@ void LanguageSettingsObjectWrapper::setDateFormat(const QString& value) return; QSettings s; + s.beginGroup(group); s.setValue("date_format", value); prefs.date_format = copy_string(qPrintable(value));; emit dateFormatChanged(value); @@ -1935,6 +1941,7 @@ void LanguageSettingsObjectWrapper::setDateFormatShort(const QString& value) return; QSettings s; + s.beginGroup(group); s.setValue("date_format_short", value); prefs.date_format_short = copy_string(qPrintable(value));; emit dateFormatShortChanged(value); @@ -1945,6 +1952,7 @@ void LanguageSettingsObjectWrapper::setTimeFormatOverride(bool value) if (value == prefs.time_format_override) return; QSettings s; + s.beginGroup(group); s.setValue("time_format_override", value); prefs.time_format_override = value; emit timeFormatOverrideChanged(value); @@ -1956,6 +1964,7 @@ void LanguageSettingsObjectWrapper::setDateFormatOverride(bool value) return; QSettings s; + s.beginGroup(group); s.setValue("date_format_override", value); prefs.date_format_override = value; emit dateFormatOverrideChanged(value); @@ -1979,6 +1988,7 @@ void AnimationsSettingsObjectWrapper::setAnimationSpeed(int value) return; QSettings s; + s.beginGroup(group); s.setValue("animation_speed", value); prefs.animation_speed = value; emit animationSpeedChanged(value); @@ -2005,6 +2015,7 @@ void LocationServiceSettingsObjectWrapper::setDistanceThreshold(int value) if (value == prefs.distance_threshold) return; QSettings s; + s.beginGroup(group); s.setValue("distance_threshold", value); prefs.distance_threshold = value; emit distanceThresholdChanged(value); @@ -2016,9 +2027,10 @@ void LocationServiceSettingsObjectWrapper::setTimeThreshold(int value) return; QSettings s; + s.beginGroup(group); s.setValue("time_threshold", value); prefs.time_threshold = value; - emit timeThresholdChanged( value); + emit timeThresholdChanged(value); } SettingsObjectWrapper::SettingsObjectWrapper(QObject* parent): diff --git a/desktop-widgets/preferences/preferences_language.cpp b/desktop-widgets/preferences/preferences_language.cpp index 75297a8..64e937a 100644 --- a/desktop-widgets/preferences/preferences_language.cpp +++ b/desktop-widgets/preferences/preferences_language.cpp @@ -42,18 +42,19 @@ void PreferencesLanguage::refreshSettings() ui->languageDropdown->setCurrentIndex(languages.first().row()); } +#include <QDebug> void PreferencesLanguage::syncSettings() { - auto lang = SettingsObjectWrapper::instance()->language_settings; bool useSystemLang = prefs.locale.use_system_language; + QString currentText = ui->languageDropdown->currentText(); - QAbstractItemModel *m = ui->languageDropdown->model(); - QString currentText = m->data(m->index(ui->languageDropdown->currentIndex(),0), Qt::UserRole).toString(); if (useSystemLang != ui->languageSystemDefault->isChecked() || (!useSystemLang && currentText != prefs.locale.language)) { QMessageBox::warning(this, tr("Restart required"), tr("To correctly load a new language you must restart Subsurface.")); } + + auto lang = SettingsObjectWrapper::instance()->language_settings; lang->setLanguage(currentText); lang->setUseSystemLanguage(ui->languageSystemDefault->isChecked()); lang->setTimeFormatOverride(!ui->timeFormatSystemDefault->isChecked()); -- 2.9.3
From b07c607884f5ecdbad8dbe591d423e26cd7aebe6 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Sat, 27 Aug 2016 21:33:27 -0300 Subject: [PATCH 1/2] Settings - only set if value changed + bugfixes. Only set the settings if it actually changes, when the user clicked on the save button on the preferences, the code would run in every dialog saving each preferences on disk, but this is uneeded if the value didn't changed. Also, while doing that, I found a couple of places where I used the wrong field, wich are now fixed. Signed-off-by: Tomaz Canabrava <[email protected]> --- core/subsurface-qt/SettingsObjectWrapper.cpp | 310 ++++++++++++++++++++++++++- 1 file changed, 300 insertions(+), 10 deletions(-) diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index e71e1b1..f3b156a 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/core/subsurface-qt/SettingsObjectWrapper.cpp @@ -35,6 +35,9 @@ int DiveComputerSettings::downloadMode() const void DiveComputerSettings::setVendor(const QString& vendor) { + if (vendor == prefs.dive_computer.vendor) + return; + QSettings s; s.beginGroup(group); s.setValue("dive_computer_vendor", vendor); @@ -44,6 +47,9 @@ void DiveComputerSettings::setVendor(const QString& vendor) void DiveComputerSettings::setProduct(const QString& product) { + if (product == prefs.dive_computer.product) + return; + QSettings s; s.beginGroup(group); s.setValue("dive_computer_product", product); @@ -53,6 +59,9 @@ void DiveComputerSettings::setProduct(const QString& product) void DiveComputerSettings::setDevice(const QString& device) { + if (device == prefs.dive_computer.device) + return; + QSettings s; s.beginGroup(group); s.setValue("dive_computer_device", device); @@ -62,6 +71,9 @@ void DiveComputerSettings::setDevice(const QString& device) void DiveComputerSettings::setDownloadMode(int mode) { + if (mode == prefs.dive_computer.download_mode) + return; + QSettings s; s.beginGroup(group); s.setValue("dive_computer_download_mode", mode); @@ -95,6 +107,9 @@ QDate UpdateManagerSettings::nextCheck() const void UpdateManagerSettings::setDontCheckForUpdates(bool value) { + if (value == prefs.update_manager.dont_check_for_updates) + return; + QSettings s; s.beginGroup(group); s.setValue("DontCheckForUpdates", value); @@ -103,8 +118,11 @@ void UpdateManagerSettings::setDontCheckForUpdates(bool value) emit dontCheckForUpdatesChanged(value); } -void UpdateManagerSettings::setLastVersionUsed(const QString& value)\ +void UpdateManagerSettings::setLastVersionUsed(const QString& value) { + if (value == prefs.update_manager.last_version_used) + return; + QSettings s; s.beginGroup(group); s.setValue("LastVersionUsed", value); @@ -115,6 +133,9 @@ void UpdateManagerSettings::setLastVersionUsed(const QString& value)\ void UpdateManagerSettings::setNextCheck(const QDate& date) { + if (date.toString() == prefs.update_manager.next_check) + return; + QSettings s; s.beginGroup(group); s.setValue("NextCheck", date); @@ -164,6 +185,9 @@ double PartialPressureGasSettings::pheThreshold() const void PartialPressureGasSettings::setShowPo2(short value) { + if (value == prefs.pp_graphs.po2) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("po2graph", value); @@ -173,6 +197,9 @@ void PartialPressureGasSettings::setShowPo2(short value) void PartialPressureGasSettings::setShowPn2(short value) { + if (value == prefs.pp_graphs.pn2) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("pn2graph", value); @@ -182,6 +209,9 @@ void PartialPressureGasSettings::setShowPn2(short value) void PartialPressureGasSettings::setShowPhe(short value) { + if (value == prefs.pp_graphs.phe) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("phegraph", value); @@ -191,6 +221,9 @@ void PartialPressureGasSettings::setShowPhe(short value) void PartialPressureGasSettings::setPo2Threshold(double value) { + if (value == prefs.pp_graphs.po2_threshold) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("po2threshold", value); @@ -200,6 +233,9 @@ void PartialPressureGasSettings::setPo2Threshold(double value) void PartialPressureGasSettings::setPn2Threshold(double value) { + if (value == prefs.pp_graphs.pn2_threshold) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("pn2threshold", value); @@ -209,6 +245,9 @@ void PartialPressureGasSettings::setPn2Threshold(double value) void PartialPressureGasSettings::setPheThreshold(double value) { + if (value == prefs.pp_graphs.phe_threshold) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("phethreshold", value); @@ -339,6 +378,9 @@ bool TechnicalDetailsSettings::showPicturesInProfile() const void TechnicalDetailsSettings::setModp02(double value) { + if (value == prefs.modpO2) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("modpO2", value); @@ -348,6 +390,9 @@ void TechnicalDetailsSettings::setModp02(double value) void TechnicalDetailsSettings::setShowPicturesInProfile(bool value) { + if (value == prefs.show_pictures_in_profile) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("show_pictures_in_profile", value); @@ -357,6 +402,9 @@ void TechnicalDetailsSettings::setShowPicturesInProfile(bool value) void TechnicalDetailsSettings::setEad(bool value) { + if (value == prefs.ead) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("ead", value); @@ -366,6 +414,9 @@ void TechnicalDetailsSettings::setEad(bool value) void TechnicalDetailsSettings::setMod(bool value) { + if (value == prefs.mod) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("mod", value); @@ -375,6 +426,9 @@ void TechnicalDetailsSettings::setMod(bool value) void TechnicalDetailsSettings::setDCceiling(bool value) { + if (value == prefs.dcceiling) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("dcceiling", value); @@ -384,6 +438,9 @@ void TechnicalDetailsSettings::setDCceiling(bool value) void TechnicalDetailsSettings::setRedceiling(bool value) { + if (value == prefs.redceiling) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("redceiling", value); @@ -393,6 +450,9 @@ void TechnicalDetailsSettings::setRedceiling(bool value) void TechnicalDetailsSettings::setCalcceiling(bool value) { + if (value == prefs.calcceiling) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("calcceiling", value); @@ -402,6 +462,9 @@ void TechnicalDetailsSettings::setCalcceiling(bool value) void TechnicalDetailsSettings::setCalcceiling3m(bool value) { + if (value == prefs.calcceiling3m) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("calcceiling3m", value); @@ -411,6 +474,9 @@ void TechnicalDetailsSettings::setCalcceiling3m(bool value) void TechnicalDetailsSettings::setCalcalltissues(bool value) { + if (value == prefs.calcalltissues) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("calcalltissues", value); @@ -420,6 +486,9 @@ void TechnicalDetailsSettings::setCalcalltissues(bool value) void TechnicalDetailsSettings::setCalcndltts(bool value) { + if (value == prefs.calcndltts) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("calcndltts", value); @@ -429,6 +498,9 @@ void TechnicalDetailsSettings::setCalcndltts(bool value) void TechnicalDetailsSettings::setGflow(bool value) { + if (value == prefs.gflow) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("gflow", value); @@ -439,6 +511,9 @@ void TechnicalDetailsSettings::setGflow(bool value) void TechnicalDetailsSettings::setGfhigh(bool value) { + if (value == prefs.gfhigh) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("gfhigh", value); @@ -449,6 +524,9 @@ void TechnicalDetailsSettings::setGfhigh(bool value) void TechnicalDetailsSettings::setHRgraph(bool value) { + if (value == prefs.hrgraph) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("hrgraph", value); @@ -458,6 +536,9 @@ void TechnicalDetailsSettings::setHRgraph(bool value) void TechnicalDetailsSettings::setTankBar(bool value) { + if (value == prefs.tankbar) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("tankbar", value); @@ -467,6 +548,9 @@ void TechnicalDetailsSettings::setTankBar(bool value) void TechnicalDetailsSettings::setPercentageGraph(bool value) { + if (value == prefs.percentagegraph) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("percentagegraph", value); @@ -476,6 +560,8 @@ void TechnicalDetailsSettings::setPercentageGraph(bool value) void TechnicalDetailsSettings::setRulerGraph(bool value) { + if (value == prefs.rulergraph) + return; /* TODO: search for the QSettings of the RulerBar */ QSettings s; s.beginGroup(tecDetails); @@ -486,6 +572,9 @@ void TechnicalDetailsSettings::setRulerGraph(bool value) void TechnicalDetailsSettings::setShowCCRSetpoint(bool value) { + if (value == prefs.show_ccr_setpoint) + return; + QSettings s; s.beginGroup(tecDetails); s.setValue("show_ccr_setpoint", value); @@ -495,6 +584,8 @@ void TechnicalDetailsSettings::setShowCCRSetpoint(bool value) void TechnicalDetailsSettings::setShowCCRSensors(bool value) { + if (value == prefs.show_ccr_sensors) + return; QSettings s; s.beginGroup(tecDetails); s.setValue("show_ccr_sensors", value); @@ -504,6 +595,8 @@ void TechnicalDetailsSettings::setShowCCRSensors(bool value) void TechnicalDetailsSettings::setZoomedPlot(bool value) { + if (value == prefs.zoomed_plot) + return; QSettings s; s.beginGroup(tecDetails); s.setValue("zoomed_plot", value); @@ -513,6 +606,8 @@ void TechnicalDetailsSettings::setZoomedPlot(bool value) void TechnicalDetailsSettings::setShowSac(bool value) { + if (value == prefs.show_sac) + return; QSettings s; s.beginGroup(tecDetails); s.setValue("show_sac", value); @@ -522,6 +617,8 @@ void TechnicalDetailsSettings::setShowSac(bool value) void TechnicalDetailsSettings::setGfLowAtMaxDepth(bool value) { + if (value == prefs.gf_low_at_maxdepth) + return; QSettings s; s.beginGroup(tecDetails); s.setValue("gf_low_at_maxdepth", value); @@ -532,6 +629,8 @@ void TechnicalDetailsSettings::setGfLowAtMaxDepth(bool value) void TechnicalDetailsSettings::setDisplayUnusedTanks(bool value) { + if (value == prefs.display_unused_tanks) + return; QSettings s; s.beginGroup(tecDetails); s.setValue("display_unused_tanks", value); @@ -541,6 +640,8 @@ void TechnicalDetailsSettings::setDisplayUnusedTanks(bool value) void TechnicalDetailsSettings::setShowAverageDepth(bool value) { + if (value == prefs.show_average_depth) + return; QSettings s; s.beginGroup(tecDetails); s.setValue("show_average_depth", value); @@ -548,8 +649,6 @@ void TechnicalDetailsSettings::setShowAverageDepth(bool value) emit showAverageDepthChanged(value); } - - FacebookSettings::FacebookSettings(QObject *parent) : QObject(parent), group(QStringLiteral("WebApps")), @@ -586,6 +685,8 @@ void FacebookSettings::setAccessToken (const QString& value) void FacebookSettings::setUserId(const QString& value) { + if (value == prefs.facebook.user_id) + return; #if SAVE_FB_CREDENTIALS QSettings s; s.beginGroup(group); @@ -598,6 +699,8 @@ void FacebookSettings::setUserId(const QString& value) void FacebookSettings::setAlbumId(const QString& value) { + if (value == prefs.facebook.album_id) + return; #if SAVE_FB_CREDENTIALS QSettings s; s.beginGroup(group); @@ -648,6 +751,8 @@ taxonomy_category GeocodingPreferences::thirdTaxonomyCategory() const void GeocodingPreferences::setEnableGeocoding(bool value) { + if (value == prefs.geocoding.enable_geocoding) + return; QSettings s; s.beginGroup(group); s.setValue("enable_geocoding", value); @@ -657,6 +762,8 @@ void GeocodingPreferences::setEnableGeocoding(bool value) void GeocodingPreferences::setParseDiveWithoutGps(bool value) { + if (value == prefs.geocoding.parse_dive_without_gps) + return; QSettings s; s.beginGroup(group); s.setValue("parse_dives_without_gps", value); @@ -666,6 +773,8 @@ void GeocodingPreferences::setParseDiveWithoutGps(bool value) void GeocodingPreferences::setTagExistingDives(bool value) { + if (value == prefs.geocoding.tag_existing_dives) + return; QSettings s; s.beginGroup(group); s.setValue("tag_existing_dives", value); @@ -675,28 +784,34 @@ void GeocodingPreferences::setTagExistingDives(bool value) void GeocodingPreferences::setFirstTaxonomyCategory(taxonomy_category value) { + if (value == prefs.geocoding.category[0]) + return; QSettings s; s.beginGroup(group); s.setValue("cat0", value); - prefs.show_average_depth = value; + prefs.geocoding.category[0] = value; emit firstTaxonomyCategoryChanged(value); } void GeocodingPreferences::setSecondTaxonomyCategory(taxonomy_category value) { + if (value == prefs.geocoding.category[1]) + return; QSettings s; s.beginGroup(group); s.setValue("cat1", value); - prefs.show_average_depth = value; + prefs.geocoding.category[1]= value; emit secondTaxonomyCategoryChanged(value); } void GeocodingPreferences::setThirdTaxonomyCategory(taxonomy_category value) { + if (value == prefs.geocoding.category[2]) + return; QSettings s; s.beginGroup(group); s.setValue("cat2", value); - prefs.show_average_depth = value; + prefs.geocoding.category[2] = value; emit thirdTaxonomyCategoryChanged(value); } @@ -738,6 +853,8 @@ QString ProxySettings::pass() const void ProxySettings::setType(int value) { + if (value == prefs.proxy_type) + return; QSettings s; s.beginGroup(group); s.setValue("proxy_type", value); @@ -747,6 +864,8 @@ void ProxySettings::setType(int value) void ProxySettings::setHost(const QString& value) { + if (value == prefs.proxy_host) + return; QSettings s; s.beginGroup(group); s.setValue("proxy_host", value); @@ -757,6 +876,8 @@ void ProxySettings::setHost(const QString& value) void ProxySettings::setPort(int value) { + if (value == prefs.proxy_port) + return; QSettings s; s.beginGroup(group); s.setValue("proxy_port", value); @@ -766,6 +887,8 @@ void ProxySettings::setPort(int value) void ProxySettings::setAuth(short value) { + if (value == prefs.proxy_auth) + return; QSettings s; s.beginGroup(group); s.setValue("proxy_auth", value); @@ -775,6 +898,8 @@ void ProxySettings::setAuth(short value) void ProxySettings::setUser(const QString& value) { + if (value == prefs.proxy_user) + return; QSettings s; s.beginGroup(group); s.setValue("proxy_user", value); @@ -785,6 +910,8 @@ void ProxySettings::setUser(const QString& value) void ProxySettings::setPass(const QString& value) { + if (value == prefs.proxy_pass) + return; QSettings s; s.beginGroup(group); s.setValue("proxy_pass", value); @@ -857,16 +984,20 @@ QString CloudStorageSettings::gitUrl() const void CloudStorageSettings::setPassword(const QString& value) { + if (value == prefs.cloud_storage_password) + return; QSettings s; s.beginGroup(group); s.setValue("password", value); - free(prefs.proxy_pass); - prefs.proxy_pass = copy_string(qPrintable(value)); + free(prefs.cloud_storage_password); + prefs.cloud_storage_password = copy_string(qPrintable(value)); emit passwordChanged(value); } void CloudStorageSettings::setNewPassword(const QString& value) { + if (value == prefs.cloud_storage_newpassword) + return; /*TODO: This looks like wrong, but 'new password' is not saved on disk, why it's on prefs? */ free(prefs.cloud_storage_newpassword); prefs.cloud_storage_newpassword = copy_string(qPrintable(value)); @@ -875,6 +1006,8 @@ void CloudStorageSettings::setNewPassword(const QString& value) void CloudStorageSettings::setEmail(const QString& value) { + if (value == prefs.cloud_storage_email) + return; QSettings s; s.beginGroup(group); s.setValue("email", value); @@ -885,6 +1018,8 @@ void CloudStorageSettings::setEmail(const QString& value) void CloudStorageSettings::setUserId(const QString& value) { + if (value == prefs.userid) + return; //WARNING: UserId is stored outside of any group, but it belongs to Cloud Storage. QSettings s; s.setValue("subsurface_webservice_uid", value); @@ -895,6 +1030,8 @@ void CloudStorageSettings::setUserId(const QString& value) void CloudStorageSettings::setEmailEncoded(const QString& value) { + if (value == prefs.cloud_storage_email_encoded) + return; /*TODO: This looks like wrong, but 'email encoded' is not saved on disk, why it's on prefs? */ free(prefs.cloud_storage_email_encoded); prefs.cloud_storage_email_encoded = copy_string(qPrintable(value)); @@ -903,6 +1040,8 @@ void CloudStorageSettings::setEmailEncoded(const QString& value) void CloudStorageSettings::setSavePasswordLocal(bool value) { + if (value == prefs.save_password_local) + return; QSettings s; s.beginGroup(group); s.setValue("save_password_local", value); @@ -912,6 +1051,8 @@ void CloudStorageSettings::setSavePasswordLocal(bool value) void CloudStorageSettings::setVerificationStatus(short value) { + if (value == prefs.cloud_verification_status) + return; QSettings s; s.beginGroup(group); s.setValue("cloud_verification_status", value); @@ -921,6 +1062,8 @@ void CloudStorageSettings::setVerificationStatus(short value) void CloudStorageSettings::setBackgroundSync(bool value) { + if (value == prefs.cloud_background_sync) + return; QSettings s; s.beginGroup(group); s.setValue("cloud_background_sync", value); @@ -930,6 +1073,9 @@ void CloudStorageSettings::setBackgroundSync(bool value) void CloudStorageSettings::setSaveUserIdLocal(short int value) { + //TODO: this is not saved on disk? + if (value == prefs.save_userid_local) + return; prefs.save_userid_local = value; emit saveUserIdLocalChanged(value); } @@ -941,6 +1087,9 @@ short int CloudStorageSettings::saveUserIdLocal() const void CloudStorageSettings::setBaseUrl(const QString& value) { + if (value == prefs.cloud_base_url) + return; + qDebug() << prefs.cloud_base_url << prefs.cloud_git_url; free((void*)prefs.cloud_base_url); free((void*)prefs.cloud_git_url); prefs.cloud_base_url = copy_string(qPrintable(value)); @@ -954,6 +1103,8 @@ void CloudStorageSettings::setGitUrl(const QString& value) void CloudStorageSettings::setGitLocalOnly(bool value) { + if (value == prefs.git_local_only) + return; prefs.git_local_only = value; emit gitLocalOnlyChanged(value); } @@ -1081,6 +1232,8 @@ deco_mode DivePlannerSettings::decoMode() const void DivePlannerSettings::setLastStop(bool value) { + if (value == prefs.last_stop) + return; QSettings s; s.beginGroup(group); s.setValue("last_stop", value); @@ -1090,6 +1243,9 @@ void DivePlannerSettings::setLastStop(bool value) void DivePlannerSettings::setVerbatimPlan(bool value) { + if (value == prefs.verbatim_plan) + return; + QSettings s; s.beginGroup(group); s.setValue("verbatim_plan", value); @@ -1099,6 +1255,9 @@ void DivePlannerSettings::setVerbatimPlan(bool value) void DivePlannerSettings::setDisplayRuntime(bool value) { + if (value == prefs.display_runtime) + return; + QSettings s; s.beginGroup(group); s.setValue("display_runtime", value); @@ -1108,6 +1267,9 @@ void DivePlannerSettings::setDisplayRuntime(bool value) void DivePlannerSettings::setDisplayDuration(bool value) { + if (value == prefs.display_duration) + return; + QSettings s; s.beginGroup(group); s.setValue("display_duration", value); @@ -1117,6 +1279,9 @@ void DivePlannerSettings::setDisplayDuration(bool value) void DivePlannerSettings::setDisplayTransitions(bool value) { + if (value == prefs.display_transitions) + return; + QSettings s; s.beginGroup(group); s.setValue("display_transitions", value); @@ -1126,6 +1291,8 @@ void DivePlannerSettings::setDisplayTransitions(bool value) void DivePlannerSettings::setDoo2breaks(bool value) { + if (value == prefs.doo2breaks) + return; QSettings s; s.beginGroup(group); s.setValue("doo2breaks", value); @@ -1135,6 +1302,8 @@ void DivePlannerSettings::setDoo2breaks(bool value) void DivePlannerSettings::setDropStoneMode(bool value) { + if (value == prefs.drop_stone_mode) + return; QSettings s; s.beginGroup(group); s.setValue("drop_stone_mode", value); @@ -1144,6 +1313,8 @@ void DivePlannerSettings::setDropStoneMode(bool value) void DivePlannerSettings::setSafetyStop(bool value) { + if (value == prefs.safetystop) + return; QSettings s; s.beginGroup(group); s.setValue("safetystop", value); @@ -1153,6 +1324,8 @@ void DivePlannerSettings::setSafetyStop(bool value) void DivePlannerSettings::setSwitchAtRequiredStop(bool value) { + if (value == prefs.switch_at_req_stop) + return; QSettings s; s.beginGroup(group); s.setValue("switch_at_req_stop", value); @@ -1162,6 +1335,8 @@ void DivePlannerSettings::setSwitchAtRequiredStop(bool value) void DivePlannerSettings::setAscrate75(int value) { + if (value == prefs.ascrate75) + return; QSettings s; s.beginGroup(group); s.setValue("ascrate75", value); @@ -1171,6 +1346,9 @@ void DivePlannerSettings::setAscrate75(int value) void DivePlannerSettings::setAscrate50(int value) { + if (value == prefs.ascrate50) + return; + QSettings s; s.beginGroup(group); s.setValue("ascrate50", value); @@ -1180,6 +1358,8 @@ void DivePlannerSettings::setAscrate50(int value) void DivePlannerSettings::setAscratestops(int value) { + if (value == prefs.ascratestops) + return; QSettings s; s.beginGroup(group); s.setValue("ascratestops", value); @@ -1189,6 +1369,9 @@ void DivePlannerSettings::setAscratestops(int value) void DivePlannerSettings::setAscratelast6m(int value) { + if (value == prefs.ascratelast6m) + return; + QSettings s; s.beginGroup(group); s.setValue("ascratelast6m", value); @@ -1198,6 +1381,9 @@ void DivePlannerSettings::setAscratelast6m(int value) void DivePlannerSettings::setDescrate(int value) { + if (value == prefs.descrate) + return; + QSettings s; s.beginGroup(group); s.setValue("descrate", value); @@ -1207,6 +1393,9 @@ void DivePlannerSettings::setDescrate(int value) void DivePlannerSettings::setBottompo2(int value) { + if (value == prefs.bottompo2) + return; + QSettings s; s.beginGroup(group); s.setValue("bottompo2", value); @@ -1216,6 +1405,9 @@ void DivePlannerSettings::setBottompo2(int value) void DivePlannerSettings::setDecopo2(int value) { + if (value == prefs.decopo2) + return; + QSettings s; s.beginGroup(group); s.setValue("decopo2", value); @@ -1225,6 +1417,9 @@ void DivePlannerSettings::setDecopo2(int value) void DivePlannerSettings::setBestmixend(int value) { + if (value == prefs.bestmixend.mm) + return; + QSettings s; s.beginGroup(group); s.setValue("bestmixend", value); @@ -1234,6 +1429,9 @@ void DivePlannerSettings::setBestmixend(int value) void DivePlannerSettings::setReserveGas(int value) { + if (value == prefs.reserve_gas) + return; + QSettings s; s.beginGroup(group); s.setValue("reserve_gas", value); @@ -1243,6 +1441,9 @@ void DivePlannerSettings::setReserveGas(int value) void DivePlannerSettings::setMinSwitchDuration(int value) { + if (value == prefs.min_switch_duration) + return; + QSettings s; s.beginGroup(group); s.setValue("min_switch_duration", value); @@ -1252,6 +1453,9 @@ void DivePlannerSettings::setMinSwitchDuration(int value) void DivePlannerSettings::setBottomSac(int value) { + if (value == prefs.bottomsac) + return; + QSettings s; s.beginGroup(group); s.setValue("bottomsac", value); @@ -1261,6 +1465,9 @@ void DivePlannerSettings::setBottomSac(int value) void DivePlannerSettings::setSecoSac(int value) { + if (value == prefs.decosac) + return; + QSettings s; s.beginGroup(group); s.setValue("decosac", value); @@ -1270,6 +1477,9 @@ void DivePlannerSettings::setSecoSac(int value) void DivePlannerSettings::setConservatismLevel(int value) { + if (value == prefs.conservatism_level) + return; + QSettings s; s.beginGroup(group); s.setValue("conservatism", value); @@ -1279,6 +1489,9 @@ void DivePlannerSettings::setConservatismLevel(int value) void DivePlannerSettings::setDecoMode(deco_mode value) { + if (value == prefs.deco_mode) + return; + QSettings s; s.beginGroup(group); s.setValue("deco_mode", value); @@ -1335,6 +1548,9 @@ bool UnitsSettings::coordinatesTraditional() const void UnitsSettings::setLength(int value) { + if (value == prefs.units.length) + return; + QSettings s; s.beginGroup(group); s.setValue("length", value); @@ -1344,6 +1560,8 @@ void UnitsSettings::setLength(int value) void UnitsSettings::setPressure(int value) { + if (value == prefs.units.pressure) + return; QSettings s; s.beginGroup(group); s.setValue("pressure", value); @@ -1353,6 +1571,8 @@ void UnitsSettings::setPressure(int value) void UnitsSettings::setVolume(int value) { + if (value == prefs.units.volume) + return; QSettings s; s.beginGroup(group); s.setValue("volume", value); @@ -1362,6 +1582,8 @@ void UnitsSettings::setVolume(int value) void UnitsSettings::setTemperature(int value) { + if (value == prefs.units.temperature) + return; QSettings s; s.beginGroup(group); s.setValue("temperature", value); @@ -1371,6 +1593,8 @@ void UnitsSettings::setTemperature(int value) void UnitsSettings::setWeight(int value) { + if (value == prefs.units.weight) + return; QSettings s; s.beginGroup(group); s.setValue("weight", value); @@ -1380,6 +1604,8 @@ void UnitsSettings::setWeight(int value) void UnitsSettings::setVerticalSpeedTime(int value) { + if (value == prefs.units.vertical_speed_time) + return; QSettings s; s.beginGroup(group); s.setValue("vertical_speed_time", value); @@ -1389,6 +1615,8 @@ void UnitsSettings::setVerticalSpeedTime(int value) void UnitsSettings::setCoordinatesTraditional(bool value) { + if (value == prefs.coordinates_traditional) + return; QSettings s; s.setValue("coordinates", value); prefs.coordinates_traditional = value; @@ -1397,6 +1625,13 @@ void UnitsSettings::setCoordinatesTraditional(bool value) void UnitsSettings::setUnitSystem(const QString& value) { + short int v = value == QStringLiteral("metric") ? METRIC + : value == QStringLiteral("imperial")? IMPERIAL + : PERSONALIZE; + + if (v == prefs.unit_system) + return; + QSettings s; s.setValue("unit_system", value); @@ -1457,6 +1692,9 @@ int GeneralSettingsObjectWrapper::pscrRatio() const void GeneralSettingsObjectWrapper::setDefaultFilename(const QString& value) { + if (value == prefs.default_filename) + return; + QSettings s; s.beginGroup(group); s.setValue("default_filename", value); @@ -1466,6 +1704,9 @@ void GeneralSettingsObjectWrapper::setDefaultFilename(const QString& value) void GeneralSettingsObjectWrapper::setDefaultCylinder(const QString& value) { + if (value == prefs.default_cylinder) + return; + QSettings s; s.beginGroup(group); s.setValue("default_cylinder", value); @@ -1475,6 +1716,9 @@ void GeneralSettingsObjectWrapper::setDefaultCylinder(const QString& value) void GeneralSettingsObjectWrapper::setDefaultFileBehavior(short value) { + if (value == prefs.default_file_behavior && prefs.default_file_behavior != UNDEFINED_DEFAULT_FILE) + return; + QSettings s; s.beginGroup(group); s.setValue("default_file_behavior", value); @@ -1492,6 +1736,9 @@ void GeneralSettingsObjectWrapper::setDefaultFileBehavior(short value) void GeneralSettingsObjectWrapper::setUseDefaultFile(bool value) { + if (value == prefs.use_default_file) + return; + QSettings s; s.beginGroup(group); s.setValue("use_default_file", value); @@ -1501,6 +1748,9 @@ void GeneralSettingsObjectWrapper::setUseDefaultFile(bool value) void GeneralSettingsObjectWrapper::setDefaultSetPoint(int value) { + if (value == prefs.defaultsetpoint) + return; + QSettings s; s.beginGroup(group); s.setValue("defaultsetpoint", value); @@ -1510,6 +1760,8 @@ void GeneralSettingsObjectWrapper::setDefaultSetPoint(int value) void GeneralSettingsObjectWrapper::setO2Consumption(int value) { + if (value == prefs.o2consumption) + return; QSettings s; s.beginGroup(group); s.setValue("o2consumption", value); @@ -1519,6 +1771,8 @@ void GeneralSettingsObjectWrapper::setO2Consumption(int value) void GeneralSettingsObjectWrapper::setPscrRatio(int value) { + if (value == prefs.pscr_ratio) + return; QSettings s; s.beginGroup(group); s.setValue("pscr_ratio", value); @@ -1549,12 +1803,17 @@ short DisplaySettingsObjectWrapper::displayInvalidDives() const void DisplaySettingsObjectWrapper::setDivelistFont(const QString& value) { - QSettings s; - s.setValue("divelist_font", value); + QString newValue = value; if (value.contains(",")) newValue = value.left(value.indexOf(",")); + if (newValue == prefs.divelist_font) + return; + + QSettings s; + s.setValue("divelist_font", value); + if (!subsurface_ignore_font(newValue.toUtf8().constData())) { free((void *)prefs.divelist_font); prefs.divelist_font = strdup(newValue.toUtf8().constData()); @@ -1565,6 +1824,9 @@ void DisplaySettingsObjectWrapper::setDivelistFont(const QString& value) void DisplaySettingsObjectWrapper::setFontSize(double value) { + if (value == prefs.font_size) + return; + QSettings s; s.setValue("font_size", value); prefs.font_size = value; @@ -1576,6 +1838,9 @@ void DisplaySettingsObjectWrapper::setFontSize(double value) void DisplaySettingsObjectWrapper::setDisplayInvalidDives(short value) { + if (value == prefs.display_invalid_dives) + return; + QSettings s; s.setValue("displayinvalid", value); prefs.display_invalid_dives = value; @@ -1625,6 +1890,8 @@ bool LanguageSettingsObjectWrapper::useSystemLanguage() const void LanguageSettingsObjectWrapper::setUseSystemLanguage(bool value) { + if (value == prefs.locale.use_system_language) + return; QSettings s; s.setValue("UseSystemLanguage", value); prefs.locale.use_system_language = copy_string(qPrintable(value)); @@ -1633,6 +1900,8 @@ void LanguageSettingsObjectWrapper::setUseSystemLanguage(bool value) void LanguageSettingsObjectWrapper::setLanguage(const QString& value) { + if (value == prefs.locale.language) + return; QSettings s; s.setValue("UiLanguage", value); prefs.locale.language = copy_string(qPrintable(value)); @@ -1641,6 +1910,8 @@ void LanguageSettingsObjectWrapper::setLanguage(const QString& value) void LanguageSettingsObjectWrapper::setTimeFormat(const QString& value) { + if (value == prefs.time_format) + return; QSettings s; s.setValue("time_format", value); prefs.time_format = copy_string(qPrintable(value));; @@ -1649,6 +1920,9 @@ void LanguageSettingsObjectWrapper::setTimeFormat(const QString& value) void LanguageSettingsObjectWrapper::setDateFormat(const QString& value) { + if (value == prefs.date_format) + return; + QSettings s; s.setValue("date_format", value); prefs.date_format = copy_string(qPrintable(value));; @@ -1657,6 +1931,9 @@ void LanguageSettingsObjectWrapper::setDateFormat(const QString& value) void LanguageSettingsObjectWrapper::setDateFormatShort(const QString& value) { + if (value == prefs.date_format_short) + return; + QSettings s; s.setValue("date_format_short", value); prefs.date_format_short = copy_string(qPrintable(value));; @@ -1665,6 +1942,8 @@ void LanguageSettingsObjectWrapper::setDateFormatShort(const QString& value) void LanguageSettingsObjectWrapper::setTimeFormatOverride(bool value) { + if (value == prefs.time_format_override) + return; QSettings s; s.setValue("time_format_override", value); prefs.time_format_override = value; @@ -1673,6 +1952,9 @@ void LanguageSettingsObjectWrapper::setTimeFormatOverride(bool value) void LanguageSettingsObjectWrapper::setDateFormatOverride(bool value) { + if (value == prefs.date_format_override) + return; + QSettings s; s.setValue("date_format_override", value); prefs.date_format_override = value; @@ -1693,6 +1975,9 @@ int AnimationsSettingsObjectWrapper::animationSpeed() const void AnimationsSettingsObjectWrapper::setAnimationSpeed(int value) { + if (value == prefs.animation_speed) + return; + QSettings s; s.setValue("animation_speed", value); prefs.animation_speed = value; @@ -1717,6 +2002,8 @@ int LocationServiceSettingsObjectWrapper::timeThreshold() const void LocationServiceSettingsObjectWrapper::setDistanceThreshold(int value) { + if (value == prefs.distance_threshold) + return; QSettings s; s.setValue("distance_threshold", value); prefs.distance_threshold = value; @@ -1725,6 +2012,9 @@ void LocationServiceSettingsObjectWrapper::setDistanceThreshold(int value) void LocationServiceSettingsObjectWrapper::setTimeThreshold(int value) { + if (value == prefs.time_threshold) + return; + QSettings s; s.setValue("time_threshold", value); prefs.time_threshold = value; -- 2.9.3
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
