summaryrefslogtreecommitdiffstats
path: root/mobile-widgets
diff options
context:
space:
mode:
Diffstat (limited to 'mobile-widgets')
-rw-r--r--mobile-widgets/qml/CloudCredentials.qml1
-rw-r--r--mobile-widgets/qmlmanager.cpp36
-rw-r--r--mobile-widgets/qmlmanager.h2
3 files changed, 38 insertions, 1 deletions
diff --git a/mobile-widgets/qml/CloudCredentials.qml b/mobile-widgets/qml/CloudCredentials.qml
index 083bbdc65..bbf33a633 100644
--- a/mobile-widgets/qml/CloudCredentials.qml
+++ b/mobile-widgets/qml/CloudCredentials.qml
@@ -148,6 +148,7 @@ Item {
manager.syncToCloud = false
manager.credentialStatus = QMLManager.CS_NOCLOUD
manager.saveCloudCredentials()
+ manager.openNoCloudRepo()
}
}
}
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index 9df276d6f..6d2d8039a 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -247,6 +247,13 @@ void QMLManager::mergeLocalRepo()
process_dives(true, false);
}
+void QMLManager::clearCredentials()
+{
+ setCloudUserName(NULL);
+ setCloudPassword(NULL);
+ setCloudPin(NULL);
+}
+
void QMLManager::cancelCredentialsPinSetup()
{
/*
@@ -374,7 +381,7 @@ void QMLManager::saveCloudCredentials()
cloudCredentialsChanged |= !same_string(prefs.cloud_storage_password, qPrintable(cloudPwd));
- if (!cloudCredentialsChanged) {
+ if (credentialStatus() != CS_NOCLOUD && !cloudCredentialsChanged) {
// just go back to the dive list
setCredentialStatus(oldStatus());
}
@@ -1067,6 +1074,32 @@ void QMLManager::changesNeedSaving()
saveChangesCloud(false);
#endif
}
+
+void QMLManager::openNoCloudRepo()
+/*
+ * Open the No Cloud repo. In case this repo does not (yet)
+ * exists, create one first. When done, open the repo, which
+ * is obviously empty when just created.
+ */
+{
+ char *filename = NOCLOUD_LOCALSTORAGE;
+ const char *branch;
+ struct git_repository *git;
+
+ git = is_git_repository(filename, &branch, NULL, false);
+
+ if (git == dummy_git_repository) {
+ if (git_create_local_repo(filename))
+ appendTextToLog(get_error_string());
+ set_filename(filename, true);
+ GeneralSettingsObjectWrapper s(this);
+ s.setDefaultFilename(filename);
+ s.setDefaultFileBehavior(LOCAL_DEFAULT_FILE);
+ }
+
+ openLocalThenRemote(filename);
+}
+
void QMLManager::saveChangesLocal()
{
if (unsaved_changes()) {
@@ -1445,6 +1478,7 @@ void QMLManager::setCredentialStatus(const cloud_status_qml value)
if (value == CS_NOCLOUD) {
appendTextToLog("Switching to no cloud mode");
set_filename(NOCLOUD_LOCALSTORAGE, true);
+ clearCredentials();
}
m_credentialStatus = value;
emit credentialStatusChanged();
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h
index d89c1e27d..cde8b8dec 100644
--- a/mobile-widgets/qmlmanager.h
+++ b/mobile-widgets/qmlmanager.h
@@ -163,6 +163,7 @@ public slots:
QString diveMaster, QString weight, QString notes, QString startpressure,
QString endpressure, QString gasmix, QString cylinder, int rating, int visibility);
void changesNeedSaving();
+ void openNoCloudRepo();
void saveChangesLocal();
void saveChangesCloud(bool forceRemoteSync);
void deleteDive(int id);
@@ -175,6 +176,7 @@ public slots:
void populateGpsData();
void cancelDownloadDC();
void clearGpsData();
+ void clearCredentials();
void cancelCredentialsPinSetup();
void finishSetup();
void openLocalThenRemote(QString url);