mobile-widgets: add oldStatus variable to qmlmanager

oldStatus() is kept in qmlPrefs during the login process to allow
for a couple of special cases:
- if a user have added dives in NO_CLOUD mode and changes to use the
  cloud these dives are copied to the Cloud, instead of being lost.
- if a user does a bailout from the login process (this should not
  happen anymore) the old status is restored.

The pure solution would be to have oldStatus at the top level (e.g.
a property in qml) and only change it when actually being in the
login process, however due to way the qmlmanager is written it proved
very difficult and not worth the effort.

In order to be able to remove qmlPrefs, oldStatus are moved to
qmlManager.

This commit only contain the creation of the variable and the supporting
code.

Signed-off-by: Jan Iversen <jan@casacondor.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
jan Iversen 2019-12-29 12:29:05 +01:00 committed by Dirk Hohndel
parent 25e17443f9
commit 3d6d71aa9f
2 changed files with 22 additions and 1 deletions

View file

@ -154,7 +154,8 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false),
m_selectedDiveTimestamp(0),
alreadySaving(false),
m_pluggedInDeviceName(""),
m_showNonDiveComputers(false)
m_showNonDiveComputers(false),
m_oldStatus(qPrefCloudStorage::CS_UNKNOWN)
{
m_instance = this;
m_lastDevicePixelRatio = qApp->devicePixelRatio();
@ -2196,3 +2197,15 @@ void QMLManager::uploadFinishSlot(bool success, const QString &text, const QByte
emit uploadFinish(success, text);
}
qPrefCloudStorage::cloud_status QMLManager::oldStatus() const
{
return m_oldStatus;
}
void QMLManager::setOldStatus(const qPrefCloudStorage::cloud_status value)
{
if (m_oldStatus != value) {
m_oldStatus = value;
emit oldStatusChanged();
}
}

View file

@ -16,6 +16,7 @@
#include "qt-models/divelistmodel.h"
#include "qt-models/completionmodels.h"
#include "qt-models/divelocationmodel.h"
#include "core/settings/qPrefCloudStorage.h"
#define NOCLOUD_LOCALSTORAGE format_string("%s/cloudstorage/localrepo[master]", system_default_directory())
@ -49,6 +50,8 @@ class QMLManager : public QObject {
Q_PROPERTY(int DC_deviceId READ DC_deviceId WRITE DC_setDeviceId)
Q_PROPERTY(QString pluggedInDeviceName MEMBER m_pluggedInDeviceName NOTIFY pluggedInDeviceNameChanged)
Q_PROPERTY(bool showNonDiveComputers MEMBER m_showNonDiveComputers WRITE setShowNonDiveComputers NOTIFY showNonDiveComputersChanged)
Q_PROPERTY(qPrefCloudStorage::cloud_status oldStatus MEMBER m_oldStatus WRITE setOldStatus NOTIFY oldStatusChanged)
public:
QMLManager();
~QMLManager();
@ -163,6 +166,8 @@ public:
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
void writeToAppLogFile(QString logText);
#endif
qPrefCloudStorage::cloud_status oldStatus() const;
void setOldStatus(const qPrefCloudStorage::cloud_status value);
public slots:
void appInitialized();
@ -273,6 +278,7 @@ private:
QFile appLogFile;
bool appLogFileOpen;
#endif
qPrefCloudStorage::cloud_status m_oldStatus;
signals:
void locationServiceEnabledChanged();
@ -295,11 +301,13 @@ signals:
void pluggedInDeviceNameChanged();
void showNonDiveComputersChanged();
void DC_ForceDownloadChanged();
void oldStatusChanged();
// From upload process
void uploadFinish(bool success, const QString &text);
void uploadProgress(qreal percentage);
private slots:
void uploadFinishSlot(bool success, const QString &text, const QByteArray &html);
};