Overte C++ Documentation
DiscoverabilityManager.h
1 //
2 // DiscoverabilityManager.h
3 // interface/src
4 //
5 // Created by Stephen Birarda on 2015-03-09.
6 // Copyright 2015 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_DiscoverabilityManager_h
13 #define hifi_DiscoverabilityManager_h
14 
15 #include <QJsonObject>
16 
17 #include <DependencyManager.h>
18 #include <SettingHandle.h>
19 
20 class QNetworkReply;
21 
22 namespace Discoverability {
23  enum Mode {
24  None,
25  Friends,
26  Connections,
27  All
28  };
29 }
30 
31 Q_DECLARE_METATYPE(Discoverability::Mode);
32 
33 class DiscoverabilityManager : public QObject, public Dependency {
34  Q_OBJECT
35  SINGLETON_DEPENDENCY
36 
37 public slots:
38  void updateLocation();
39  void removeLocation();
40 
41  Discoverability::Mode getDiscoverabilityMode() { return static_cast<Discoverability::Mode>(_mode.get()); }
42  void setDiscoverabilityMode(Discoverability::Mode discoverabilityMode);
43 
44  void setVisibility();
45  void visibilityChanged(Discoverability::Mode discoverabilityMode);
46 
47 signals:
48  void discoverabilityModeChanged(Discoverability::Mode discoverabilityMode);
49 
50 public:
51  static QString findableByString(Discoverability::Mode discoverabilityMode);
52 
53 private slots:
54  void handleHeartbeatResponse(QNetworkReply* requestReply);
55 
56 private:
57  DiscoverabilityManager();
58 
60  QJsonObject _lastLocationObject;
61 };
62 
63 #endif // hifi_DiscoverabilityManager_h