1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#ifndef QMLMANAGER_H
#define QMLMANAGER_H
#include <QObject>
#include <QString>
#include <QNetworkAccessManager>
#include "gpslocation.h"
class QMLManager : public QObject {
Q_OBJECT
Q_PROPERTY(QString cloudUserName READ cloudUserName WRITE setCloudUserName NOTIFY cloudUserNameChanged)
Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged)
Q_PROPERTY(bool saveCloudPassword READ saveCloudPassword WRITE setSaveCloudPassword NOTIFY saveCloudPasswordChanged)
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)
public:
QMLManager();
~QMLManager();
static QMLManager *instance();
QString cloudUserName() const;
void setCloudUserName(const QString &cloudUserName);
QString cloudPassword() const;
void setCloudPassword(const QString &cloudPassword);
bool saveCloudPassword() const;
void setSaveCloudPassword(bool saveCloudPassword);
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);
QString startPageText() const;
void setStartPageText(const QString& text);
QString logText() const;
void setLogText(const QString &logText);
void appendTextToLog(const QString &newText);
typedef void (QMLManager::*execute_function_type)();
public slots:
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 loadDives();
void loadDivesWithValidCredentials();
void loadDiveProgress(int percent);
void provideAuth(QNetworkReply *reply, QAuthenticator *auth);
QString commitChanges(QString diveId,QString date, QString location,
QString gps, QString duration, QString depth,
QString airtemp, QString watertemp, QString suit,
QString buddy, QString diveMaster, QString notes);
void saveChanges();
QString addDive();
void addDiveAborted(int id);
void applyGpsData();
void sendGpsData();
void downloadGpsData();
void populateGpsData();
void clearGpsData();
void finishSetup();
void showMap(const QString& location);
QString getNumber(const QString& diveId);
QString getDate(const QString& diveId);
QString getCurrentPosition();
void deleteGpsFix(quint64 when);
void refreshDiveList();
private:
QString m_cloudUserName;
QString m_cloudPassword;
QString m_ssrfGpsWebUserid;
QString m_startPageText;
bool m_saveCloudPassword;
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;
signals:
void cloudUserNameChanged();
void cloudPasswordChanged();
void saveCloudPasswordChanged();
void locationServiceEnabledChanged();
void verboseEnabledChanged();
void logTextChanged();
void timeThresholdChanged();
void distanceThresholdChanged();
void loadFromCloudChanged();
void startPageTextChanged();
};
#endif
|