Overte C++ Documentation
AccountSettings.h
1 //
2 // AccountSettings.h
3 // libraries/networking/src
4 //
5 // Created by Clement Brisset on 9/12/19.
6 // Copyright 2019 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_AccountSettings_h
13 #define hifi_AccountSettings_h
14 
15 #include <QJsonObject>
16 #include <QReadWriteLock>
17 #include <QString>
18 
19 class AccountSettings {
20 public:
21  enum State {
22  LoggedOut,
23  Loading,
24  Loaded,
25  NotPresent
26  };
27 
28  void loggedOut();
29  void startedLoading();
30  quint64 lastChangeTimestamp() const { return _lastChangeTimestamp; }
31 
32  QJsonObject pack();
33  void unpack(QJsonObject data);
34 
35  State homeLocationState() const { QReadLocker lock(&_settingsLock); return _homeLocationState; }
36  QString getHomeLocation() const { QReadLocker lock(&_settingsLock); return _homeLocation; }
37  void setHomeLocation(QString homeLocation);
38 
39 private:
40  mutable QReadWriteLock _settingsLock;
41  quint64 _lastChangeTimestamp { 0 };
42 
43  State _homeLocationState { LoggedOut };
44  QString _homeLocation;
45 };
46 
47 #endif /* hifi_AccountSettings_h */