aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-mobile/qml/main.qml18
-rw-r--r--qt-mobile/qmlmanager.cpp29
-rw-r--r--qt-mobile/qmlmanager.h7
3 files changed, 34 insertions, 20 deletions
diff --git a/qt-mobile/qml/main.qml b/qt-mobile/qml/main.qml
index 6b6116611..f4f6ea28b 100644
--- a/qt-mobile/qml/main.qml
+++ b/qt-mobile/qml/main.qml
@@ -20,6 +20,7 @@ Kirigami.ApplicationWindow {
property alias accessingCloud: manager.accessingCloud
property QtObject notification: null
property bool showingDiveList: false
+ property alias syncToCloud: manager.syncToCloud
onAccessingCloudChanged: {
if (accessingCloud >= 0) {
// we now keep updating this to show progress, so timing out after 30 seconds is more useful
@@ -133,19 +134,24 @@ Kirigami.ApplicationWindow {
}
}
Kirigami.Action {
- text: "Refresh"
+ text: "Manual sync with cloud"
onTriggered: {
globalDrawer.close()
detailsWindow.endEditMode()
- manager.loadDives();
+ manager.saveChanges();
}
}
Kirigami.Action {
- text: "Upload to cloud"
+ text: syncToCloud ? "Disable auto cloud sync" : "Enable auto cloud sync"
onTriggered: {
- globalDrawer.close()
- detailsWindow.endEditMode()
- manager.saveChanges();
+ syncToCloud = !syncToCloud
+ if (!syncToCloud) {
+ var alertText = "Turning off automatic sync to cloud causes all data to only be stored locally.\n"
+ alertText += "This can be very useful in situations with limited or no network access.\n"
+ alertText += "Please chose 'Manual sync with cloud' if you have network connectivity\n"
+ alertText += "and want to sync your data to cloud storage."
+ showPassiveNotification(alertText, 10000)
+ }
}
}
},
diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp
index b8683de43..ef6ba659d 100644
--- a/qt-mobile/qmlmanager.cpp
+++ b/qt-mobile/qmlmanager.cpp
@@ -72,6 +72,7 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false),
qDebug() << QStringLiteral("build with Qt Version %1, runtime from Qt Version %2").arg(QT_VERSION_STR).arg(qVersion());
setStartPageText(tr("Starting..."));
setAccessingCloud(-1);
+ setSyncToCloud(true);
// create location manager service
locationProvider = new GpsLocation(&appendTextToLogStandalone, this);
set_git_update_cb(&gitProgressCB);
@@ -103,13 +104,7 @@ void QMLManager::applicationStateChanged(Qt::ApplicationState state)
// make sure the user sees that we are saving data if they come back
// while this is running
alreadySaving = true;
- bool cbs = prefs.cloud_background_sync;
- bool glo = prefs.git_local_only;
- prefs.cloud_background_sync = true;
- prefs.git_local_only = false;
saveChanges();
- prefs.cloud_background_sync = cbs;
- prefs.git_local_only = glo;
alreadySaving = false;
appendTextToLog(QString::number(timer.elapsed() / 1000.0,'f', 3) + ": done saving to git local / remote");
mark_divelist_changed(false);
@@ -120,10 +115,11 @@ void QMLManager::openLocalThenRemote(QString url)
{
clear_dive_file_data();
QByteArray fileNamePrt = QFile::encodeName(url);
+ bool glo = prefs.git_local_only;
prefs.git_local_only = true;
int error = parse_file(fileNamePrt.data());
setAccessingCloud(-1);
- prefs.git_local_only = false;
+ prefs.git_local_only = glo;
if (error) {
appendTextToLog(QStringLiteral("loading dives from cache failed %1").arg(error));
} else {
@@ -255,12 +251,6 @@ void QMLManager::tryRetrieveDataFromBackend()
checkCredentialsAndExecute(&QMLManager::retrieveUserid);
}
-void QMLManager::loadDives()
-{
- setAccessingCloud(0);
- checkCredentialsAndExecute(&QMLManager::loadDivesWithValidCredentials);
-}
-
void QMLManager::provideAuth(QNetworkReply *reply, QAuthenticator *auth)
{
if (auth->user() == QString(prefs.cloud_storage_email) &&
@@ -1049,6 +1039,19 @@ void QMLManager::setAccessingCloud(int status)
emit accessingCloudChanged();
}
+bool QMLManager::syncToCloud() const
+{
+ return m_syncToCloud;
+}
+
+void QMLManager::setSyncToCloud(bool status)
+{
+ m_syncToCloud = status;
+ prefs.git_local_only = !status;
+ prefs.cloud_background_sync = status;
+ emit syncToCloudChanged();
+}
+
qreal QMLManager::lastDevicePixelRatio()
{
return m_lastDevicePixelRatio;
diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h
index 15954e9ec..7c56119d5 100644
--- a/qt-mobile/qmlmanager.h
+++ b/qt-mobile/qmlmanager.h
@@ -23,6 +23,7 @@ class QMLManager : public QObject {
Q_PROPERTY(bool verboseEnabled READ verboseEnabled WRITE setVerboseEnabled NOTIFY verboseEnabledChanged)
Q_PROPERTY(credentialStatus_t credentialStatus READ credentialStatus WRITE setCredentialStatus NOTIFY credentialStatusChanged)
Q_PROPERTY(int accessingCloud READ accessingCloud WRITE setAccessingCloud NOTIFY accessingCloudChanged)
+ Q_PROPERTY(bool syncToCloud READ syncToCloud WRITE setSyncToCloud NOTIFY syncToCloudChanged)
public:
QMLManager();
@@ -72,6 +73,9 @@ public:
int accessingCloud() const;
void setAccessingCloud(int status);
+ bool syncToCloud() const;
+ void setSyncToCloud(bool status);
+
typedef void (QMLManager::*execute_function_type)();
public slots:
@@ -83,7 +87,6 @@ public slots:
void handleError(QNetworkReply::NetworkError nError);
void handleSslErrors(const QList<QSslError> &errors);
void retrieveUserid();
- void loadDives();
void loadDivesWithValidCredentials();
void loadDiveProgress(int percent);
void provideAuth(QNetworkReply *reply, QAuthenticator *auth);
@@ -134,6 +137,7 @@ private:
struct dive *deletedDive;
struct dive_trip *deletedTrip;
int m_accessingCloud;
+ bool m_syncToCloud;
credentialStatus_t m_credentialStatus;
qreal m_lastDevicePixelRatio;
QElapsedTimer timer;
@@ -151,6 +155,7 @@ signals:
void startPageTextChanged();
void credentialStatusChanged();
void accessingCloudChanged();
+ void syncToCloudChanged();
void sendScreenChanged(QScreen *screen);
};