From 81d5d82b7bfb1a7a1cfe44b8d33befe9b31a2099 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Wed, 10 Aug 2016 13:27:03 -0300 Subject: Settings update: Clean up save user id local So, prefs.save_userid_local is being set outside of a preferences set (it's set to true and false while loading the files via xml or git) and because of that I had to bypass a few method calls. When something triggers a preferences change, the application will be notified that the preferences changed, thing that I couldn't do while reading the xml or git because that should be local-only. Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- core/dive.c | 5 ----- core/load-git.c | 4 ++-- core/parse-xml.c | 9 +++++++-- core/subsurface-qt/SettingsObjectWrapper.cpp | 22 +++++++++++----------- core/subsurface-qt/SettingsObjectWrapper.h | 11 +++++------ .../preferences/preferences_network.cpp | 16 ++++++++-------- desktop-widgets/subsurfacewebservices.cpp | 4 +++- 7 files changed, 36 insertions(+), 35 deletions(-) diff --git a/core/dive.c b/core/dive.c index d6fe0c8c4..e2107c120 100644 --- a/core/dive.c +++ b/core/dive.c @@ -3353,11 +3353,6 @@ timestamp_t get_times() return dive->when; } -void set_save_userid_local(short value) -{ - prefs.save_userid_local = value; -} - void set_userid(char *rUserId) { if (prefs.userid) diff --git a/core/load-git.c b/core/load-git.c index 670658d1b..abe1a5ad0 100644 --- a/core/load-git.c +++ b/core/load-git.c @@ -811,7 +811,7 @@ static void parse_settings_userid(char *line, struct membuffer *str, void *_unus (void) str; (void) _unused; if (line) { - set_save_userid_local(true); + prefs.save_userid_local = true; set_userid(line); } } @@ -1520,7 +1520,7 @@ static int parse_settings_entry(git_repository *repo, const git_tree_entry *entr git_blob *blob = git_tree_entry_blob(repo, entry); if (!blob) return report_error("Unable to read settings file"); - set_save_userid_local(false); + prefs.save_userid_local = false; for_each_line(blob, settings_parser, NULL); git_blob_free(blob); return 0; diff --git a/core/parse-xml.c b/core/parse-xml.c index 052cb124c..aa2e7125f 100644 --- a/core/parse-xml.c +++ b/core/parse-xml.c @@ -1771,7 +1771,12 @@ static void divecomputer_end(void) static void userid_start(void) { in_userid = true; - set_save_userid_local(true); //if the xml contains userid, keep saving it. + //if the xml contains userid, keep saving it. + // don't call the prefs method here as we don't wanna + // actually change the preferences, this is temporary and + // will be reverted when the file finishes. + + prefs.save_userid_local = true; } static void userid_stop(void) @@ -2045,7 +2050,7 @@ int parse_xml_buffer(const char *url, const char *buffer, int size, if (!doc) return report_error(translate("gettextFromC", "Failed to parse '%s'"), url); - set_save_userid_local(false); + prefs.save_userid_local = false; reset_all(); dive_start(); doc = test_xslt_transforms(doc, params); diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index b0e552bf2..fe012c9b9 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/core/subsurface-qt/SettingsObjectWrapper.cpp @@ -811,6 +811,17 @@ void CloudStorageSettings::setBackgroundSync(bool value) emit backgroundSyncChanged(value); } +void CloudStorageSettings::setSaveUserIdLocal(short int value) +{ + prefs.save_userid_local = value; + emit saveUserIdLocalChanged(value); +} + +short int CloudStorageSettings::saveUserIdLocal() const +{ + return prefs.save_userid_local; +} + void CloudStorageSettings::setBaseUrl(const QString& value) { free((void*)prefs.cloud_base_url); @@ -1621,17 +1632,6 @@ QObject(parent), { } -void SettingsObjectWrapper::setSaveUserIdLocal(short int value) -{ - Q_UNUSED(value); - //TODO: Find where this is stored on the preferences. -} - -short int SettingsObjectWrapper::saveUserIdLocal() const -{ - return prefs.save_userid_local; -} - SettingsObjectWrapper* SettingsObjectWrapper::instance() { static SettingsObjectWrapper settings; diff --git a/core/subsurface-qt/SettingsObjectWrapper.h b/core/subsurface-qt/SettingsObjectWrapper.h index c1fd8a7ef..157c7432c 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.h +++ b/core/subsurface-qt/SettingsObjectWrapper.h @@ -262,6 +262,7 @@ class CloudStorageSettings : public QObject { Q_PROPERTY(QString userid READ userId WRITE setUserId NOTIFY userIdChanged) Q_PROPERTY(QString base_url READ baseUrl WRITE setBaseUrl NOTIFY baseUrlChanged) Q_PROPERTY(QString git_url READ gitUrl WRITE setGitUrl NOTIFY gitUrlChanged) + Q_PROPERTY(short save_userid_local READ saveUserIdLocal WRITE setSaveUserIdLocal NOTIFY saveUserIdLocalChanged) Q_PROPERTY(bool git_local_only READ gitLocalOnly WRITE setGitLocalOnly NOTIFY gitLocalOnlyChanged) Q_PROPERTY(bool save_password_local READ savePasswordLocal WRITE setSavePasswordLocal NOTIFY savePasswordLocalChanged) Q_PROPERTY(short verification_status READ verificationStatus WRITE setVerificationStatus NOTIFY verificationStatusChanged) @@ -279,6 +280,7 @@ public: short verificationStatus() const; bool backgroundSync() const; bool gitLocalOnly() const; + short saveUserIdLocal() const; public slots: void setPassword(const QString& value); @@ -292,6 +294,7 @@ public slots: void setVerificationStatus(short value); void setBackgroundSync(bool value); void setGitLocalOnly(bool value); + void setSaveUserIdLocal(short value); signals: void passwordChanged(const QString& value); @@ -305,6 +308,8 @@ signals: void verificationStatusChanged(short value); void backgroundSyncChanged(bool value); void gitLocalOnlyChanged(bool value); + void saveUserIdLocalChanged(short value); + private: QString group; }; @@ -601,7 +606,6 @@ private: class SettingsObjectWrapper : public QObject { Q_OBJECT - Q_PROPERTY(short save_userid_local READ saveUserIdLocal WRITE setSaveUserIdLocal NOTIFY saveUserIdLocalChanged) Q_PROPERTY(TechnicalDetailsSettings* techical_details MEMBER techDetails CONSTANT) Q_PROPERTY(PartialPressureGasSettings* pp_gas MEMBER pp_gas CONSTANT) @@ -619,7 +623,6 @@ class SettingsObjectWrapper : public QObject { Q_PROPERTY(LocationServiceSettingsObjectWrapper* Location MEMBER location_settings CONSTANT) public: static SettingsObjectWrapper *instance(); - short saveUserIdLocal() const; TechnicalDetailsSettings *techDetails; PartialPressureGasSettings *pp_gas; @@ -635,12 +638,8 @@ public: AnimationsSettingsObjectWrapper *animation_settings; LocationServiceSettingsObjectWrapper *location_settings; -public slots: - void setSaveUserIdLocal(short value); private: SettingsObjectWrapper(QObject *parent = NULL); -signals: - void saveUserIdLocalChanged(short value); }; #endif diff --git a/desktop-widgets/preferences/preferences_network.cpp b/desktop-widgets/preferences/preferences_network.cpp index 7d89d4496..5d7f70665 100644 --- a/desktop-widgets/preferences/preferences_network.cpp +++ b/desktop-widgets/preferences/preferences_network.cpp @@ -4,7 +4,7 @@ #include "subsurfacewebservices.h" #include "core/prefs-macros.h" #include "core/cloudstorage.h" - +#include "core/subsurface-qt/SettingsObjectWrapper.h" #include #include @@ -29,8 +29,6 @@ PreferencesNetwork::~PreferencesNetwork() void PreferencesNetwork::refreshSettings() { - QSettings s; - ui->proxyHost->setText(prefs.proxy_host); ui->proxyPort->setValue(prefs.proxy_port); ui->proxyAuthRequired->setChecked(prefs.proxy_auth); @@ -42,17 +40,19 @@ void PreferencesNetwork::refreshSettings() ui->save_password_local->setChecked(prefs.save_password_local); ui->cloud_background_sync->setChecked(prefs.cloud_background_sync); ui->save_uid_local->setChecked(prefs.save_userid_local); - ui->default_uid->setText(s.value("subsurface_webservice_uid").toString().toUpper()); - + ui->default_uid->setText(QString(prefs.userid).toUpper()); cloudPinNeeded(); } void PreferencesNetwork::syncSettings() { - QSettings s; - s.setValue("subsurface_webservice_uid", ui->default_uid->text().toUpper()); - set_save_userid_local(ui->save_uid_local->checkState()); + auto cloud = SettingsObjectWrapper::instance()->cloud_storage; + auto proxy = SettingsObjectWrapper::instance()->proxy; + + cloud->setUserId(ui->default_uid->text().toUpper()); + cloud->setSaveUserIdLocal(ui->save_uid_local->checkState()); + QSettings s; s.beginGroup("Network"); s.setValue("proxy_type", ui->proxyType->itemData(ui->proxyType->currentIndex()).toInt()); s.setValue("proxy_host", ui->proxyHost->text()); diff --git a/desktop-widgets/subsurfacewebservices.cpp b/desktop-widgets/subsurfacewebservices.cpp index bd798c729..68b7737c3 100644 --- a/desktop-widgets/subsurfacewebservices.cpp +++ b/desktop-widgets/subsurfacewebservices.cpp @@ -8,6 +8,7 @@ #include "desktop-widgets/maintab.h" #include "core/display.h" #include "core/membuffer.h" +#include "core/subsurface-qt/SettingsObjectWrapper.h" #include #include "core/cloudstorage.h" @@ -436,7 +437,8 @@ void SubsurfaceWebServices::buttonClicked(QAbstractButton *button) QSettings s; QString qDialogUid = ui.userID->text().toUpper(); bool qSaveUid = ui.saveUidLocal->checkState(); - set_save_userid_local(qSaveUid); + SettingsObjectWrapper::instance()->cloud_storage->setSaveUserIdLocal(qSaveUid); + if (qSaveUid) { QString qSettingUid = s.value("subsurface_webservice_uid").toString(); QString qFileUid = QString(prefs.userid); -- cgit v1.2.3-70-g09d2