summaryrefslogtreecommitdiffstats
path: root/libraries/ganalytics/src
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ganalytics/src')
-rw-r--r--libraries/ganalytics/src/ganalytics.cpp9
-rw-r--r--libraries/ganalytics/src/ganalytics_worker.cpp57
-rw-r--r--libraries/ganalytics/src/ganalytics_worker.h4
3 files changed, 35 insertions, 35 deletions
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();