diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-04-06 11:42:38 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-04-06 11:42:38 -0700 |
commit | 6a23e0ef664d081ec9351603c76af8c46edd4e89 (patch) | |
tree | 63f7729315127b563c542b33599d64023d01737b | |
parent | f21b36d9ba15bb36b4b3cda49498cbf95606c2ae (diff) | |
download | subsurface-6a23e0ef664d081ec9351603c76af8c46edd4e89.tar.gz |
QML UI: save with unchanged credentials returns to dive list
If the user is on the credentials page, doesn't change the credentials
but simply taps on save, they now get back to the dive list.
Fixes #1047
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | mobile-widgets/qml/main.qml | 2 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.cpp | 17 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.h | 6 |
3 files changed, 24 insertions, 1 deletions
diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml index 2bc62dbe3..36c225ef8 100644 --- a/mobile-widgets/qml/main.qml +++ b/mobile-widgets/qml/main.qml @@ -16,7 +16,7 @@ Kirigami.ApplicationWindow { header.preferredHeight: Kirigami.Units.gridUnit * (Qt.platform.os == "ios" ? 2 : 1) header.maximumHeight: Kirigami.Units.gridUnit * 2 property bool fullscreen: true - property int oldStatus: -1 + property alias oldStatus: manager.oldStatus property alias accessingCloud: manager.accessingCloud property QtObject notification: null property bool showingDiveList: false diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index d030f5a72..3d478178d 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -213,6 +213,10 @@ void QMLManager::saveCloudCredentials() cloudCredentialsChanged |= !same_string(prefs.cloud_storage_password, qPrintable(cloudPassword())); + if (!cloudCredentialsChanged) { + // just go back to the dive list + setCredentialStatus(oldStatus()); + } if (!same_string(prefs.cloud_storage_password, qPrintable(cloudPassword()))) { free(prefs.cloud_storage_password); prefs.cloud_storage_password = strdup(qPrintable(cloudPassword())); @@ -1014,6 +1018,19 @@ void QMLManager::setCredentialStatus(const credentialStatus_t value) } } +QMLManager::credentialStatus_t QMLManager::oldStatus() const +{ + return m_oldStatus; +} + +void QMLManager::setOldStatus(const credentialStatus_t value) +{ + if (m_oldStatus != value) { + m_oldStatus = value; + emit oldStatusChanged(); + } +} + // where in the QML dive list is that dive? int QMLManager::getIndex(const QString &diveId) { diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h index bd55f68e4..ba37c4f58 100644 --- a/mobile-widgets/qmlmanager.h +++ b/mobile-widgets/qmlmanager.h @@ -22,6 +22,7 @@ class QMLManager : public QObject { Q_PROPERTY(QString startPageText READ startPageText WRITE setStartPageText NOTIFY startPageTextChanged) Q_PROPERTY(bool verboseEnabled READ verboseEnabled WRITE setVerboseEnabled NOTIFY verboseEnabledChanged) Q_PROPERTY(credentialStatus_t credentialStatus READ credentialStatus WRITE setCredentialStatus NOTIFY credentialStatusChanged) + Q_PROPERTY(credentialStatus_t oldStatus READ oldStatus WRITE setOldStatus NOTIFY oldStatusChanged) Q_PROPERTY(int accessingCloud READ accessingCloud WRITE setAccessingCloud NOTIFY accessingCloudChanged) Q_PROPERTY(bool syncToCloud READ syncToCloud WRITE setSyncToCloud NOTIFY syncToCloudChanged) @@ -67,6 +68,9 @@ public: credentialStatus_t credentialStatus() const; void setCredentialStatus(const credentialStatus_t value); + credentialStatus_t oldStatus() const; + void setOldStatus(const credentialStatus_t value); + QString logText() const; void setLogText(const QString &logText); @@ -139,6 +143,7 @@ private: int m_accessingCloud; bool m_syncToCloud; credentialStatus_t m_credentialStatus; + credentialStatus_t m_oldStatus; qreal m_lastDevicePixelRatio; QElapsedTimer timer; bool alreadySaving; @@ -154,6 +159,7 @@ signals: void loadFromCloudChanged(); void startPageTextChanged(); void credentialStatusChanged(); + void oldStatusChanged(); void accessingCloudChanged(); void syncToCloudChanged(); void sendScreenChanged(QScreen *screen); |