diff options
Diffstat (limited to 'libraries')
-rw-r--r-- | libraries/ganalytics/include/ganalytics.h | 7 | ||||
-rw-r--r-- | libraries/ganalytics/src/ganalytics.cpp | 9 | ||||
-rw-r--r-- | libraries/ganalytics/src/ganalytics_worker.cpp | 57 | ||||
-rw-r--r-- | libraries/ganalytics/src/ganalytics_worker.h | 4 |
4 files changed, 37 insertions, 40 deletions
diff --git a/libraries/ganalytics/include/ganalytics.h b/libraries/ganalytics/include/ganalytics.h index 48025dc1..1776c71e 100644 --- a/libraries/ganalytics/include/ganalytics.h +++ b/libraries/ganalytics/include/ganalytics.h @@ -39,8 +39,8 @@ public: void setSendInterval(int milliseconds); int sendInterval() const; - void startSending(); - bool isSending() const; + void enable(bool state = true); + bool isEnabled(); /// Get or set the network access manager. If none is set, the class creates its own on the first request void setNetworkAccessManager(QNetworkAccessManager *networkAccessManager); @@ -54,9 +54,6 @@ public slots: void startSession(); void endSession(); -signals: - void isSendingChanged(bool isSending); - private: GAnalyticsWorker *d; diff --git a/libraries/ganalytics/src/ganalytics.cpp b/libraries/ganalytics/src/ganalytics.cpp index a03dfcad..bc3fe21e 100644 --- a/libraries/ganalytics/src/ganalytics.cpp +++ b/libraries/ganalytics/src/ganalytics.cpp @@ -80,15 +80,14 @@ int GAnalytics::sendInterval() const return (d->m_timer.interval()); } -void GAnalytics::startSending() +bool GAnalytics::isEnabled() { - if (!isSending()) - d->postMessage(); + return d->m_isEnabled; } -bool GAnalytics::isSending() const +void GAnalytics::enable(bool state) { - return d->m_isSending; + d->enable(state); } void GAnalytics::setNetworkAccessManager(QNetworkAccessManager *networkAccessManager) diff --git a/libraries/ganalytics/src/ganalytics_worker.cpp b/libraries/ganalytics/src/ganalytics_worker.cpp index 2b03e14c..d002924f 100644 --- a/libraries/ganalytics/src/ganalytics_worker.cpp +++ b/libraries/ganalytics/src/ganalytics_worker.cpp @@ -23,10 +23,31 @@ GAnalyticsWorker::GAnalyticsWorker(GAnalytics *parent) m_language = QLocale::system().name().toLower().replace("_", "-"); m_screenResolution = getScreenResolution(); - m_timer.start(30000); + m_timer.setInterval(m_timerInterval); connect(&m_timer, &QTimer::timeout, this, &GAnalyticsWorker::postMessage); } +void GAnalyticsWorker::enable(bool state) +{ + // state change to the same is not valid. + if(m_isEnabled == state) + { + return; + } + + m_isEnabled = state; + if(m_isEnabled) + { + // enable -> start doing things :) + m_timer.start(); + } + else + { + // disable -> stop the timer + m_timer.stop(); + } +} + void GAnalyticsWorker::logMessage(GAnalytics::LogLevel level, const QString &message) { if (m_logLevel > level) @@ -146,30 +167,6 @@ void GAnalyticsWorker::enqueQueryWithCurrentTime(const QUrlQuery &query) } /** - * Change status of class. Emit signal that status was changed. - */ -void GAnalyticsWorker::setIsSending(bool doSend) -{ - if (doSend) - { - m_timer.stop(); - } - else - { - m_timer.start(); - } - - bool changed = (m_isSending != doSend); - - m_isSending = doSend; - - if (changed) - { - emit q->isSendingChanged(m_isSending); - } -} - -/** * This function is called by a timer interval. * The function tries to send a messages from the queue. * If message was successfully send then this function @@ -183,12 +180,14 @@ void GAnalyticsWorker::postMessage() { if (m_messageQueue.isEmpty()) { - setIsSending(false); + // queue empty -> try sending later + m_timer.start(); return; } else { - setIsSending(true); + // queue has messages -> stop timer and start sending + m_timer.stop(); } QString connection = "close"; @@ -243,8 +242,8 @@ void GAnalyticsWorker::postMessageFinished() { logMessage(GAnalytics::Error, QString("Error posting message: %s").arg(reply->errorString())); - // An error ocurred. - setIsSending(false); + // An error ocurred. Try sending later. + m_timer.start(); return; } else diff --git a/libraries/ganalytics/src/ganalytics_worker.h b/libraries/ganalytics/src/ganalytics_worker.h index 88fa223a..3504a032 100644 --- a/libraries/ganalytics/src/ganalytics_worker.h +++ b/libraries/ganalytics/src/ganalytics_worker.h @@ -38,7 +38,8 @@ public: QString m_viewportSize; bool m_anonymizeIPs = false; - bool m_isSending = false; + bool m_isEnabled = false; + int m_timerInterval = 30000; const static int fourHours = 4 * 60 * 60 * 1000; const static QLatin1String dateTimeFormat; @@ -54,6 +55,7 @@ public: void enqueQueryWithCurrentTime(const QUrlQuery &query); void setIsSending(bool doSend); + void enable(bool state); public slots: void postMessage(); |