Overte C++ Documentation
UserActivityLogger.h
1 //
2 // UserActivityLogger.h
3 //
4 //
5 // Created by Clement on 5/21/14.
6 // Copyright 2014 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_UserActivityLogger_h
13 #define hifi_UserActivityLogger_h
14 
15 #include "AccountManager.h"
16 
17 #include <QObject>
18 #include <QString>
19 #include <QJsonObject>
20 #include <QNetworkReply>
21 #include <QElapsedTimer>
22 
23 #include <SettingHandle.h>
24 #include "AddressManager.h"
25 
26 const QString USER_ACTIVITY_URL = "/api/v1/user_activities";
27 
28 class UserActivityLogger : public QObject {
29  Q_OBJECT
30 
31 public:
32  static UserActivityLogger& getInstance();
33 
34 public slots:
35  bool isEnabled() { return !_disabled.get(); }
36  bool isDisabledSettingSet() const { return _disabled.isSet(); }
37 
38 
39  void disable(bool disable);
40  void logAction(QString action, QJsonObject details = QJsonObject(), JSONCallbackParameters params = JSONCallbackParameters());
41 
42  void launch(QString applicationVersion, bool previousSessionCrashed, int previousSessionRuntime);
43 
44  void insufficientGLVersion(const QJsonObject& glData);
45 
46  void changedDisplayName(QString displayName);
47  void changedModel(QString typeOfModel, QString modelURL);
48  void changedDomain(QString domainURL);
49  void connectedDevice(QString typeOfDevice, QString deviceName);
50  void loadedScript(QString scriptName);
51  void wentTo(AddressManager::LookupTrigger trigger, QString destinationType, QString destinationName);
52 
53 signals:
54 
61  void crashReportingEnabledChanged();
62 
63 private slots:
64  void requestError(QNetworkReply* errorReply);
65 
66 private:
67  UserActivityLogger();
68  Setting::Handle<bool> _disabled { "UserActivityLoggerDisabled", true };
69 
70 
71 
72  QElapsedTimer _timer;
73 };
74 
75 #endif // hifi_UserActivityLogger_h