aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/pref.h3
-rw-r--r--mobile-widgets/qml/DiveList.qml11
-rw-r--r--mobile-widgets/qml/main.qml14
-rw-r--r--mobile-widgets/qmlmanager.cpp40
-rw-r--r--mobile-widgets/qmlmanager.h29
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;