summaryrefslogtreecommitdiffstats
path: root/libraries/ganalytics/src/ganalytics_worker.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ganalytics/src/ganalytics_worker.h')
-rw-r--r--libraries/ganalytics/src/ganalytics_worker.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/libraries/ganalytics/src/ganalytics_worker.h b/libraries/ganalytics/src/ganalytics_worker.h
new file mode 100644
index 00000000..280f9ab2
--- /dev/null
+++ b/libraries/ganalytics/src/ganalytics_worker.h
@@ -0,0 +1,61 @@
+#pragma once
+
+#include <QUrlQuery>
+#include <QDateTime>
+#include <QTimer>
+#include <QNetworkRequest>
+#include <QQueue>
+
+struct QueryBuffer
+{
+ QUrlQuery postQuery;
+ QDateTime time;
+};
+
+class GAnalyticsWorker : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit GAnalyticsWorker(GAnalytics *parent = 0);
+
+ GAnalytics *q;
+
+ QNetworkAccessManager *networkManager = nullptr;
+
+ QQueue<QueryBuffer> m_messageQueue;
+ QTimer m_timer;
+ QNetworkRequest m_request;
+ GAnalytics::LogLevel m_logLevel;
+
+ QString m_trackingID;
+ QString m_clientID;
+ QString m_userID;
+ QString m_appName;
+ QString m_appVersion;
+ QString m_language;
+ QString m_screenResolution;
+ QString m_viewportSize;
+
+ bool m_isSending;
+
+ const static int fourHours = 4 * 60 * 60 * 1000;
+ const static QLatin1String dateTimeFormat;
+
+public:
+ void logMessage(GAnalytics::LogLevel level, const QString &message);
+
+ QUrlQuery buildStandardPostQuery(const QString &type);
+ QString getScreenResolution();
+ QString getUserAgent();
+ QList<QString> persistMessageQueue();
+ void readMessagesFromFile(const QList<QString> &dataList);
+
+ void enqueQueryWithCurrentTime(const QUrlQuery &query);
+ void setIsSending(bool doSend);
+
+public slots:
+ void postMessage();
+ void postMessageFinished();
+};
+