diff options
Diffstat (limited to 'libraries/ganalytics/src/ganalytics_worker.h')
-rw-r--r-- | libraries/ganalytics/src/ganalytics_worker.h | 61 |
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(); +}; + |