From 905bc2e440060a6228725fe1e7abd9a1fce7b1e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 20 Nov 2016 20:40:59 +0100 Subject: NOISSUE most basic analytics integration possible --- application/MultiMC.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'application/MultiMC.cpp') diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp index 64c380ec..c3ab7827 100644 --- a/application/MultiMC.cpp +++ b/application/MultiMC.cpp @@ -64,6 +64,7 @@ #include #include #include +#include #if defined Q_OS_WIN32 #ifndef WIN32_LEAN_AND_MEAN @@ -104,7 +105,10 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv) } #endif setOrganizationName("MultiMC"); + setOrganizationDomain("multimc.org"); setApplicationName("MultiMC5"); + setApplicationDisplayName("MultiMC 5"); + setApplicationVersion(BuildConfig.printableVersionString()); startTime = QDateTime::currentDateTime(); @@ -310,6 +314,8 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv) setIconTheme(settings()->get("IconTheme").toString()); setApplicationTheme(settings()->get("ApplicationTheme").toString()); + initAnalytics(); + if(!m_instanceIdToLaunch.isEmpty()) { auto inst = instances()->getInstanceById(m_instanceIdToLaunch); @@ -499,6 +505,42 @@ void MultiMC::shutdownLogger() qInstallMessageHandler(nullptr); } +void MultiMC::initAnalytics() +{ + if(BuildConfig.ANALYTICS_ID.isEmpty()) + { + qDebug() << "Analytics disabled by build."; + return; + } + if(!m_settings->get("Analytics").toBool()) + { + qDebug() << "Analytics disabled by user."; + return; + } + QString clientID = m_settings->get("AnalyticsClientID").toString(); + if(clientID.isEmpty()) + { + clientID = QUuid::createUuid().toString(); + clientID.remove(QLatin1Char('{')); + clientID.remove(QLatin1Char('}')); + m_settings->set("AnalyticsClientID", clientID); + } + m_analytics = new GAnalytics(BuildConfig.ANALYTICS_ID, clientID, this); + m_analytics->setLogLevel(GAnalytics::Debug); + m_analytics->setNetworkAccessManager(&ENV.qnam()); + m_analytics->startSending(); + qDebug() << "Initialized analytics with tid" << BuildConfig.ANALYTICS_ID << "and cid" << clientID; + // TODO: load unsent messages? +} + +void MultiMC::shutdownAnalytics() +{ + if(m_analytics) + { + // TODO: persist unsent messages? send them now? + } +} + void MultiMC::initInstances() { auto InstDirSetting = m_settings->getSetting("InstanceDir"); @@ -656,6 +698,10 @@ void MultiMC::initGlobalSettings() // paste.ee API key m_settings->registerSetting("PasteEEAPIKey", "multimc"); + // Analytics + m_settings->registerSetting("Analytics", true); + m_settings->registerSetting("AnalyticsClientID", QString()); + // Init page provider { m_globalSettingsProvider = std::make_shared(tr("Settings")); @@ -915,6 +961,10 @@ MainWindow* MultiMC::showMainWindow(bool minimized) m_mainWindow->checkInstancePathForProblems(); m_openWindows++; } + if(m_analytics) + { + m_analytics->sendScreenView("Main Window"); + } return m_mainWindow; } -- cgit v1.2.3