diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-04-04 22:02:03 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-04-04 22:33:58 -0700 |
commit | 7be962bfc2879a72c32ff67518731347dcdff6de (patch) | |
tree | d05bf7ab234a448ee37a15b608e2b939f2285d07 /mobile-widgets/qmlmanager.h | |
parent | 2d760a7bff71c46c5aeba37c40d236ea16eefea2 (diff) | |
download | subsurface-7be962bfc2879a72c32ff67518731347dcdff6de.tar.gz |
Move subsurface-core to core and qt-mobile to mobile-widgets
Having subsurface-core as a directory name really messes with
autocomplete and is obviously redundant. Simmilarly, qt-mobile caused an
autocomplete conflict and also was inconsistent with the desktop-widget
name for the directory containing the "other" UI.
And while cleaning up the resulting change in the path name for include
files, I decided to clean up those even more to make them consistent
overall.
This could have been handled in more commits, but since this requires a
make clean before the build, it seemed more sensible to do it all in one.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'mobile-widgets/qmlmanager.h')
-rw-r--r-- | mobile-widgets/qmlmanager.h | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h new file mode 100644 index 000000000..bd55f68e4 --- /dev/null +++ b/mobile-widgets/qmlmanager.h @@ -0,0 +1,162 @@ +#ifndef QMLMANAGER_H +#define QMLMANAGER_H + +#include <QObject> +#include <QString> +#include <QNetworkAccessManager> +#include <QScreen> +#include <QElapsedTimer> + +#include "core/gpslocation.h" + +class QMLManager : public QObject { + Q_OBJECT + Q_ENUMS(credentialStatus_t) + Q_PROPERTY(QString cloudUserName READ cloudUserName WRITE setCloudUserName NOTIFY cloudUserNameChanged) + Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged) + Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged) + Q_PROPERTY(bool locationServiceEnabled READ locationServiceEnabled WRITE setLocationServiceEnabled NOTIFY locationServiceEnabledChanged) + Q_PROPERTY(int distanceThreshold READ distanceThreshold WRITE setDistanceThreshold NOTIFY distanceThresholdChanged) + Q_PROPERTY(int timeThreshold READ timeThreshold WRITE setTimeThreshold NOTIFY timeThresholdChanged) + 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(int accessingCloud READ accessingCloud WRITE setAccessingCloud NOTIFY accessingCloudChanged) + Q_PROPERTY(bool syncToCloud READ syncToCloud WRITE setSyncToCloud NOTIFY syncToCloudChanged) + +public: + QMLManager(); + ~QMLManager(); + + enum credentialStatus_t { + INCOMPLETE, + UNKNOWN, + INVALID, + VALID_EMAIL, + VALID + }; + + static QMLManager *instance(); + + QString cloudUserName() const; + void setCloudUserName(const QString &cloudUserName); + + QString cloudPassword() const; + void setCloudPassword(const QString &cloudPassword); + + bool locationServiceEnabled() const; + void setLocationServiceEnabled(bool locationServiceEnable); + + bool verboseEnabled() const; + void setVerboseEnabled(bool verboseMode); + + int distanceThreshold() const; + void setDistanceThreshold(int distance); + + int timeThreshold() const; + void setTimeThreshold(int time); + + bool loadFromCloud() const; + void setLoadFromCloud(bool done); + void syncLoadFromCloud(); + + QString startPageText() const; + void setStartPageText(const QString& text); + + credentialStatus_t credentialStatus() const; + void setCredentialStatus(const credentialStatus_t value); + + QString logText() const; + void setLogText(const QString &logText); + + int accessingCloud() const; + void setAccessingCloud(int status); + + bool syncToCloud() const; + void setSyncToCloud(bool status); + + typedef void (QMLManager::*execute_function_type)(); + +public slots: + void applicationStateChanged(Qt::ApplicationState state); + void savePreferences(); + void saveCloudCredentials(); + void checkCredentialsAndExecute(execute_function_type execute); + void tryRetrieveDataFromBackend(); + void handleError(QNetworkReply::NetworkError nError); + void handleSslErrors(const QList<QSslError> &errors); + void retrieveUserid(); + void loadDivesWithValidCredentials(); + void loadDiveProgress(int percent); + void provideAuth(QNetworkReply *reply, QAuthenticator *auth); + void commitChanges(QString diveId, QString date, QString location, + QString gps, QString duration, QString depth, + QString airtemp, QString watertemp, QString suit, + QString buddy, QString diveMaster, QString weight, QString notes, + QString startpressure, QString endpressure, QString gasmix); + + void saveChanges(); + void deleteDive(int id); + void undoDelete(int id); + QString addDive(); + void addDiveAborted(int id); + void applyGpsData(); + void sendGpsData(); + void downloadGpsData(); + void populateGpsData(); + void clearGpsData(); + void finishSetup(); + void openLocalThenRemote(QString url); + int getIndex(const QString& diveId); + QString getNumber(const QString& diveId); + QString getDate(const QString& diveId); + QString getCurrentPosition(); + QString getVersion() const; + void deleteGpsFix(quint64 when); + void refreshDiveList(); + void screenChanged(QScreen *screen); + qreal lastDevicePixelRatio(); + void appendTextToLog(const QString &newText); + +private: + QString m_cloudUserName; + QString m_cloudPassword; + QString m_ssrfGpsWebUserid; + QString m_startPageText; + QString m_logText; + bool m_locationServiceEnabled; + bool m_verboseEnabled; + int m_distanceThreshold; + int m_timeThreshold; + GpsLocation *locationProvider; + bool m_loadFromCloud; + static QMLManager *m_instance; + QNetworkReply *reply; + QNetworkRequest request; + struct dive *deletedDive; + struct dive_trip *deletedTrip; + int m_accessingCloud; + bool m_syncToCloud; + credentialStatus_t m_credentialStatus; + qreal m_lastDevicePixelRatio; + QElapsedTimer timer; + bool alreadySaving; + +signals: + void cloudUserNameChanged(); + void cloudPasswordChanged(); + void locationServiceEnabledChanged(); + void verboseEnabledChanged(); + void logTextChanged(); + void timeThresholdChanged(); + void distanceThresholdChanged(); + void loadFromCloudChanged(); + void startPageTextChanged(); + void credentialStatusChanged(); + void accessingCloudChanged(); + void syncToCloudChanged(); + void sendScreenChanged(QScreen *screen); +}; + +#endif |