diff options
-rw-r--r-- | core/pref.h | 3 | ||||
-rw-r--r-- | mobile-widgets/qml/DiveList.qml | 11 | ||||
-rw-r--r-- | mobile-widgets/qml/main.qml | 14 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.cpp | 40 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.h | 29 |
5 files changed, 50 insertions, 47 deletions
diff --git a/core/pref.h b/core/pref.h index 14699153e..f22999981 100644 --- a/core/pref.h +++ b/core/pref.h @@ -174,7 +174,8 @@ enum cloud_status { CS_UNKNOWN, CS_INCORRECT_USER_PASSWD, CS_NEED_TO_VERIFY, - CS_VERIFIED + CS_VERIFIED, + CS_NOCLOUD }; extern struct preferences prefs, default_prefs, git_prefs; diff --git a/mobile-widgets/qml/DiveList.qml b/mobile-widgets/qml/DiveList.qml index 1dccb5b75..be659e6b9 100644 --- a/mobile-widgets/qml/DiveList.qml +++ b/mobile-widgets/qml/DiveList.qml @@ -24,7 +24,7 @@ Kirigami.ScrollablePage { supportsRefreshing: true onRefreshingChanged: { if (refreshing) { - if (manager.credentialStatus === QMLManager.VALID) { + if (manager.credentialStatus === QMLManager.CS_VERIFIED) { console.log("User pulled down dive list - syncing with cloud storage") detailsWindow.endEditMode() manager.saveChangesCloud(true) @@ -266,7 +266,7 @@ Kirigami.ScrollablePage { StartPage { id: startPage anchors.fill: parent - opacity: credentialStatus === QMLManager.NOCLOUD || (credentialStatus === QMLManager.VALID) ? 0 : 1 + opacity: credentialStatus === QMLManager.CS_NOCLOUD || (credentialStatus === QMLManager.CS_VERIFIED) ? 0 : 1 visible: opacity > 0 Behavior on opacity { NumberAnimation { duration: Kirigami.Units.shortDuration } } function setupActions() { @@ -274,7 +274,7 @@ Kirigami.ScrollablePage { page.actions.main = page.saveAction page.actions.right = page.offlineAction page.title = qsTr("Cloud credentials") - } else if(manager.credentialStatus === QMLManager.VALID || manager.credentialStatus === QMLManager.NOCLOUD) { + } else if(manager.credentialStatus === QMLManager.CS_VERIFIED || manager.credentialStatus === QMLManager.CS_NOCLOUD) { page.actions.main = page.downloadFromDCAction page.actions.right = page.addDiveAction page.title = qsTr("Dive list") @@ -289,6 +289,7 @@ Kirigami.ScrollablePage { onVisibleChanged: { setupActions(); } + Component.onCompleted: { setupActions(); } @@ -355,12 +356,12 @@ Kirigami.ScrollablePage { iconName: "qrc:/qml/nocloud.svg" onTriggered: { manager.syncToCloud = false - manager.credentialStatus = QMLManager.NOCLOUD + manager.credentialStatus = QMLManager.CS_NOCLOUD } } onBackRequested: { - if (startPage.visible && diveListView.count > 0 && manager.credentialStatus !== QMLManager.INVALID) { + if (startPage.visible && diveListView.count > 0 && manager.credentialStatus !== QMLManager.CS_INCORRECT_USER_PASSWD) { manager.credentialStatus = oldStatus event.accepted = true; } diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml index e34e89e50..1cf1ea35d 100644 --- a/mobile-widgets/qml/main.qml +++ b/mobile-widgets/qml/main.qml @@ -117,10 +117,10 @@ Kirigami.ApplicationWindow { text: qsTr("Dive list") onTriggered: { manager.appendTextToLog("requested dive list with credential status " + manager.credentialStatus) - if (manager.credentialStatus == QMLManager.UNKNOWN) { + if (manager.credentialStatus == QMLManager.CS_UNKNOWN) { // the user has asked to change credentials - if the credentials before that // were valid, go back to dive list - if (oldStatus == QMLManager.VALID) { + if (oldStatus == QMLManager.CS_VERIFIED) { manager.credentialStatus = oldStatus } } @@ -134,7 +134,7 @@ Kirigami.ApplicationWindow { Kirigami.Action { iconName: "icons/ic_add.svg" text: qsTr("Add dive manually") - enabled: manager.credentialStatus === QMLManager.VALID || manager.credentialStatus === QMLManager.NOCLOUD + enabled: manager.credentialStatus === QMLManager.CS_VERIFIED || manager.credentialStatus === QMLManager.CS_NOCLOUD onTriggered: { returnTopPage() // otherwise odd things happen with the page stack startAddDive() @@ -159,13 +159,13 @@ Kirigami.ApplicationWindow { Kirigami.Action { iconName: "icons/cloud_sync.svg" text: qsTr("Manual sync with cloud") - enabled: manager.credentialStatus === QMLManager.VALID || manager.credentialStatus === QMLManager.NOCLOUD + enabled: manager.credentialStatus === QMLManager.CS_VERIFIED || manager.credentialStatus === QMLManager.CS_NOCLOUD onTriggered: { - if (manager.credentialStatus === QMLManager.NOCLOUD) { + if (manager.credentialStatus === QMLManager.CS_NOCLOUD) { returnTopPage() oldStatus = manager.credentialStatus manager.startPageText = "Enter valid cloud storage credentials" - manager.credentialStatus = QMLManager.UNKNOWN + manager.credentialStatus = QMLManager.CS_UNKNOWN globalDrawer.close() } else { globalDrawer.close() @@ -178,7 +178,7 @@ Kirigami.ApplicationWindow { Kirigami.Action { iconName: syncToCloud ? "icons/ic_cloud_off.svg" : "icons/ic_cloud_done.svg" text: syncToCloud ? qsTr("Offline mode") : qsTr("Enable auto cloud sync") - enabled: manager.credentialStatus !== QMLManager.NOCLOUD + enabled: manager.credentialStatus !== QMLManager.CS_NOCLOUD onTriggered: { syncToCloud = !syncToCloud if (!syncToCloud) { diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 62eae8e8c..7a132a13e 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -84,7 +84,7 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false), deletedTrip(0), m_updateSelectedDive(-1), m_selectedDiveTimestamp(0), - m_credentialStatus(UNKNOWN), + m_credentialStatus(CS_UNKNOWN), alreadySaving(false), m_device_data(new DCDeviceData(this)), m_libdcLog(false) @@ -174,8 +174,8 @@ void QMLManager::openLocalThenRemote(QString url) setNotificationText(tr("Opening local data file failed")); } else { // if we can load from the cache, we know that we have a valid cloud account - if (credentialStatus() == UNKNOWN) - setCredentialStatus(VALID); + if (credentialStatus() == CS_UNKNOWN) + setCredentialStatus(CS_VERIFIED); prefs.unit_system = git_prefs.unit_system; if (git_prefs.unit_system == IMPERIAL) git_prefs.units = IMPERIAL_units; @@ -193,8 +193,8 @@ void QMLManager::openLocalThenRemote(QString url) appendTextToLog(QStringLiteral("%1 dives loaded from cache").arg(dive_table.nr)); setNotificationText(tr("%1 dives loaded from local dive data file").arg(dive_table.nr)); } - if (oldStatus() == NOCLOUD) { - // if we switch to credentials from NOCLOUD, we take things online temporarily + if (oldStatus() == CS_NOCLOUD) { + // if we switch to credentials from CS_NOCLOUD, we take things online temporarily prefs.git_local_only = false; appendTextToLog(QStringLiteral("taking things online to be able to switch to cloud account")); } @@ -231,7 +231,7 @@ void QMLManager::finishSetup() alreadySaving = true; openLocalThenRemote(url); } else if (!same_string(existing_filename, "")) { - setCredentialStatus(NOCLOUD); + setCredentialStatus(CS_NOCLOUD); appendTextToLog(tr("working in no-cloud mode")); int error = parse_file(existing_filename); if (error) { @@ -245,7 +245,7 @@ void QMLManager::finishSetup() appendTextToLog(QString("working in no-cloud mode, finished loading %1 dives from %2").arg(dive_table.nr).arg(existing_filename)); } } else { - setCredentialStatus(UNKNOWN); + setCredentialStatus(CS_UNKNOWN); appendTextToLog(tr("no cloud credentials")); setStartPageText(RED_FONT + tr("Please enter valid cloud credentials.") + END_FONT); } @@ -414,7 +414,7 @@ void QMLManager::provideAuth(QNetworkReply *reply, QAuthenticator *auth) // OK, credentials have been tried and didn't work, so they are invalid appendTextToLog("Cloud credentials are invalid"); setStartPageText(RED_FONT + tr("Cloud credentials are invalid") + END_FONT); - setCredentialStatus(INVALID); + setCredentialStatus(CS_INCORRECT_USER_PASSWD); reply->disconnect(); reply->abort(); reply->deleteLater(); @@ -455,7 +455,7 @@ void QMLManager::retrieveUserid() revertToNoCloudIfNeeded(); return; } - setCredentialStatus(VALID); + setCredentialStatus(CS_VERIFIED); QString userid(prefs.userid); if (userid.isEmpty()) { if (same_string(prefs.cloud_storage_email, "") || same_string(prefs.cloud_storage_password, "")) { @@ -474,7 +474,7 @@ void QMLManager::retrieveUserid() s.setValue("subsurface_webservice_uid", prefs.userid); s.sync(); } - setCredentialStatus(VALID); + setCredentialStatus(CS_VERIFIED); setStartPageText(tr("Cloud credentials valid, loading dives...")); // this only gets called with "alreadySaving" already locked loadDivesWithValidCredentials(); @@ -529,7 +529,7 @@ successful_exit: setLoadFromCloud(true); // if we came from local storage mode, let's merge the local data into the local cache // for the remote data - which then later gets merged with the remote data if necessary - if (oldStatus() == NOCLOUD) { + if (oldStatus() == CS_NOCLOUD) { git_storage_update_progress(qPrintable(tr("Loading dives from local storage ('no cloud' mode)"))); dive_table.preexisting = dive_table.nr; mergeLocalRepo(); @@ -557,11 +557,11 @@ void QMLManager::revertToNoCloudIfNeeded() currentGitLocalOnly = false; prefs.git_local_only = true; } - if (oldStatus() == NOCLOUD) { + if (oldStatus() == CS_NOCLOUD) { // we tried to switch to a cloud account and had previously used local data, // but connecting to the cloud account (and subsequently merging the local // and cloud data) failed - so let's delete the cloud credentials and go - // back to NOCLOUD mode in order to prevent us from losing the locally stored + // back to CS_NOCLOUD mode in order to prevent us from losing the locally stored // dives if (syncToCloud() == false) { appendTextToLog(QStringLiteral("taking things back offline since sync with cloud failed")); @@ -573,7 +573,7 @@ void QMLManager::revertToNoCloudIfNeeded() prefs.cloud_storage_password = NULL; setCloudUserName(""); setCloudPassword(""); - setCredentialStatus(NOCLOUD); + setCredentialStatus(CS_NOCLOUD); set_filename(NOCLOUD_LOCALSTORAGE, true); setStartPageText(RED_FONT + tr("Failed to connect to cloud server, reverting to no cloud status") + END_FONT); } @@ -1004,7 +1004,7 @@ void QMLManager::changesNeedSaving() void QMLManager::saveChangesLocal() { if (unsaved_changes()) { - if (credentialStatus() == NOCLOUD) { + if (credentialStatus() == CS_NOCLOUD) { if (same_string(existing_filename, "")) { char *filename = NOCLOUD_LOCALSTORAGE; if (git_create_local_repo(filename)) @@ -1367,27 +1367,27 @@ void QMLManager::setStartPageText(const QString& text) emit startPageTextChanged(); } -QMLManager::credentialStatus_t QMLManager::credentialStatus() const +QMLManager::cloud_status_qml QMLManager::credentialStatus() const { return m_credentialStatus; } -void QMLManager::setCredentialStatus(const credentialStatus_t value) +void QMLManager::setCredentialStatus(const cloud_status_qml value) { if (m_credentialStatus != value) { - if (value == NOCLOUD) + if (value == CS_NOCLOUD) appendTextToLog("Switching to no cloud mode"); m_credentialStatus = value; emit credentialStatusChanged(); } } -QMLManager::credentialStatus_t QMLManager::oldStatus() const +QMLManager::cloud_status_qml QMLManager::oldStatus() const { return m_oldStatus; } -void QMLManager::setOldStatus(const credentialStatus_t value) +void QMLManager::setOldStatus(const cloud_status_qml value) { if (m_oldStatus != value) { m_oldStatus = value; diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h index fc468baf4..dec9e6502 100644 --- a/mobile-widgets/qmlmanager.h +++ b/mobile-widgets/qmlmanager.h @@ -16,7 +16,7 @@ class QMLManager : public QObject { Q_OBJECT - Q_ENUMS(credentialStatus_t) + Q_ENUMS(cloud_status_qml) Q_PROPERTY(QString cloudUserName READ cloudUserName WRITE setCloudUserName NOTIFY cloudUserNameChanged) Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged) Q_PROPERTY(QString cloudPin READ cloudPin WRITE setCloudPin NOTIFY cloudPinChanged) @@ -29,8 +29,8 @@ class QMLManager : public QObject { Q_PROPERTY(bool loadFromCloud READ loadFromCloud WRITE setLoadFromCloud NOTIFY loadFromCloudChanged) 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(cloud_status_qml credentialStatus READ credentialStatus WRITE setCredentialStatus NOTIFY credentialStatusChanged) + Q_PROPERTY(cloud_status_qml oldStatus READ oldStatus WRITE setOldStatus NOTIFY oldStatusChanged) Q_PROPERTY(QString notificationText READ notificationText WRITE setNotificationText NOTIFY notificationTextChanged) Q_PROPERTY(bool syncToCloud READ syncToCloud WRITE setSyncToCloud NOTIFY syncToCloudChanged) Q_PROPERTY(int updateSelectedDive READ updateSelectedDive WRITE setUpdateSelectedDive NOTIFY updateSelectedDiveChanged) @@ -48,11 +48,12 @@ public: QMLManager(); ~QMLManager(); - enum credentialStatus_t { - UNKNOWN, - INVALID, - VALID, - NOCLOUD + enum cloud_status_qml { + CS_UNKNOWN, + CS_INCORRECT_USER_PASSWD, + CS_NEED_TO_VERIFY, + CS_VERIFIED, + CS_NOCLOUD }; static QMLManager *instance(); @@ -91,11 +92,11 @@ public: QString startPageText() const; void setStartPageText(const QString& text); - credentialStatus_t credentialStatus() const; - void setCredentialStatus(const credentialStatus_t value); + cloud_status_qml credentialStatus() const; + void setCredentialStatus(const cloud_status_qml value); - credentialStatus_t oldStatus() const; - void setOldStatus(const credentialStatus_t value); + cloud_status_qml oldStatus() const; + void setOldStatus(const cloud_status_qml value); QString logText() const; void setLogText(const QString &logText); @@ -207,8 +208,8 @@ private: bool m_syncToCloud; int m_updateSelectedDive; int m_selectedDiveTimestamp; - credentialStatus_t m_credentialStatus; - credentialStatus_t m_oldStatus; + cloud_status_qml m_credentialStatus; + cloud_status_qml m_oldStatus; qreal m_lastDevicePixelRatio; QElapsedTimer timer; bool alreadySaving; |