diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-11-20 12:04:29 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-11-20 12:04:29 +0100 |
commit | 2ec15c32e4419c94995f78b1d1ef8790e71b3317 (patch) | |
tree | 986f1212e9fa3156a532e912736338edf69964a7 /libraries/ganalytics/ganalytics.h | |
parent | 69be23c5f629884465dec98efcb9d5a2678b4df5 (diff) | |
download | MultiMC-2ec15c32e4419c94995f78b1d1ef8790e71b3317.tar MultiMC-2ec15c32e4419c94995f78b1d1ef8790e71b3317.tar.gz MultiMC-2ec15c32e4419c94995f78b1d1ef8790e71b3317.tar.lz MultiMC-2ec15c32e4419c94995f78b1d1ef8790e71b3317.tar.xz MultiMC-2ec15c32e4419c94995f78b1d1ef8790e71b3317.zip |
NOISSUE import google analytics from third party
See: https://github.com/HSAnet/qt-google-analytics
Sadly, the API and its internals are not acceptable and it needs changes
upstream likely wouldn't allow.
Diffstat (limited to 'libraries/ganalytics/ganalytics.h')
-rw-r--r-- | libraries/ganalytics/ganalytics.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/libraries/ganalytics/ganalytics.h b/libraries/ganalytics/ganalytics.h new file mode 100644 index 00000000..f67e737b --- /dev/null +++ b/libraries/ganalytics/ganalytics.h @@ -0,0 +1,108 @@ +#ifndef GANALYTICS_H +#define GANALYTICS_H + +#include <QObject> +#include <QVariantMap> + +#ifdef QT_QML_LIB +#include <QQmlParserStatus> +#endif // QT_QML_LIB + +class QNetworkAccessManager; + +class GAnalytics : public QObject +#ifdef QT_QML_LIB + , public QQmlParserStatus +#endif // QT_QML_LIB +{ + Q_OBJECT +#ifdef QT_QML_LIB + Q_INTERFACES(QQmlParserStatus) +#endif // QT_QML_LIB + Q_ENUMS(LogLevel) + Q_PROPERTY(LogLevel logLevel READ logLevel WRITE setLogLevel NOTIFY logLevelChanged) + Q_PROPERTY(QString viewportSize READ viewportSize WRITE setViewportSize NOTIFY viewportSizeChanged) + Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged) + Q_PROPERTY(QString trackingID READ trackingID WRITE setTrackingID NOTIFY trackingIDChanged) + Q_PROPERTY(int sendInterval READ sendInterval WRITE setSendInterval NOTIFY sendIntervalChanged) + Q_PROPERTY(bool isSending READ isSending NOTIFY isSendingChanged) + +public: + explicit GAnalytics(QObject *parent = 0); + explicit GAnalytics(const QString &trackingID, QObject *parent = 0); + ~GAnalytics(); + +public: + enum LogLevel + { + Debug, + Info, + Error + }; + + 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 setTrackingID(const QString &trackingID); + QString trackingID() const; + + void setSendInterval(int milliseconds); + int sendInterval() const; + + void startSending(); + bool isSending() const; + + /// 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; + +#ifdef QT_QML_LIB + // QQmlParserStatus interface + void classBegin(); + void componentComplete(); +#endif // QT_QML_LIB + +public slots: + void sendScreenView(const QString &screenName, + const QVariantMap &customValues = QVariantMap()); + void sendAppView(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(); + + +signals: + void logLevelChanged(); + void viewportSizeChanged(); + void languageChanged(); + void trackingIDChanged(); + void sendIntervalChanged(); + void isSendingChanged(bool isSending); + +private: + class Private; + Private *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); + +#endif // GANALYTICS_H |