summaryrefslogtreecommitdiffstats
path: root/libraries/ganalytics/include/ganalytics.h
blob: bfca6d37b953618e1c52103efcdc566028329f0a (plain)
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
#pragma once

#include <QObject>
#include <QVariantMap>

class QNetworkAccessManager;
class GAnalyticsWorker;

class GAnalytics : public QObject
{
	Q_OBJECT
	Q_ENUMS(LogLevel)

public:
	explicit GAnalytics(const QString &trackingID, const QString &clientID, const int version, QObject *parent = 0);
	~GAnalytics();

public:
	enum LogLevel
	{
		Debug,
		Info,
		Error
	};

	int version();

	void setLogLevel(LogLevel logLevel);
	LogLevel logLevel() const;

	// Getter and Setters
	void setViewportSize(const QString &viewportSize);
	QString viewportSize() const;

	void setLanguage(const QString &language);
	QString language() const;

	void setAnonymizeIPs(bool anonymize);
	bool anonymizeIPs();

	void setSendInterval(int milliseconds);
	int sendInterval() 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);
	QNetworkAccessManager *networkAccessManager() const;

public slots:
	void sendScreenView(const QString &screenName, const QVariantMap &customValues = QVariantMap());
	void sendEvent(const QString &category, const QString &action, const QString &label = QString(), const QVariant &value = QVariant(),
				   const QVariantMap &customValues = QVariantMap());
	void sendException(const QString &exceptionDescription, bool exceptionFatal = true, const QVariantMap &customValues = QVariantMap());
	void startSession();
	void endSession();

private:
	GAnalyticsWorker *d;

	friend QDataStream &operator<<(QDataStream &outStream, const GAnalytics &analytics);
	friend QDataStream &operator>>(QDataStream &inStream, GAnalytics &analytics);
};

QDataStream &operator<<(QDataStream &outStream, const GAnalytics &analytics);
QDataStream &operator>>(QDataStream &inStream, GAnalytics &analytics);