Add speed limitation in user profile
[staging/HomeScreen.git] / HomeScreen / src2 / usermanagement.h
1 #ifndef USERMANAGEMENT_H
2 #define USERMANAGEMENT_H
3
4 #define REAL_SERVER "ws://localhost:1212/api?token=hello"
5
6 #include <QObject>
7 #include "applicationmodel.h"
8 #include <QTimer>
9 #include <QPointF>
10 #include <QtWebSockets/QWebSocket>
11 #ifndef REAL_SERVER
12 #include <QtWebSockets/QWebSocketServer>
13 #endif
14 //{"postal_address":"201 Mission Street","loc":"37.7914374,-122.3950694","country":"USA","mail":"bjensen@example.com",
15 //"city":"San Francisco","graphEmail":"bjensen@example.com","graphPreferredLanguage":"en","ccNumberMasked":"************1212",
16 //"ccExpYear":"19","description":"Original description","ccExpMonth":"01","groups":[],"last_name":"Jensen"
17 //"ccNumber":"123-1111-2222-3333-1212","house_identifier":"ForgeRock","phone":"+1 408 555 1862","name":"bjensen"
18 //"state":"CA","fax":"+1 408 555 1862","common_name":"Barbara Jensen","postal_code":"94105","first_name":"Barbara","keytoken":"EB:7C:23:C6:21:BF"}
19 //"graphActions":"Install App,Update Software,Exceed 100 Kph,Open Trunk,View Online"
20 struct User {
21     QString postal_address;
22     QPointF loc;
23     QString country;
24     QString mail;
25     QString city;
26     QString graphEmail;
27     QString graphPreferredLanguage;
28     QString ccNumberMasked;
29     QString ccExpYear;
30     QString description;
31     QString ccExpMonth;
32     QStringList groups;
33     QString last_name;
34     QString ccNumber;
35     QString house_identifier;
36     QString phone;
37     QString name;
38     QString state;
39     QString fax;
40     QString common_name;
41     QString postal_code;
42     QString first_name;
43     QString keytoken;
44     QStringList graphActions;
45 };
46
47 class UserManagement : public QObject
48 {
49     Q_OBJECT
50 public:
51     explicit UserManagement(QObject *root);
52
53 signals:
54
55 public slots:
56     void connectWebsockets();
57     void onConnected();
58     void onClosed();
59     void onTextMessageReceived(QString message);
60     void onWebSocketError(QAbstractSocket::SocketError);
61     void slot_sendData();
62 #ifndef REAL_SERVER
63     void onServerNewConnection();
64     void onServerClosed();
65     void processBinaryMessage(QByteArray message);
66     void processTextMessage(QString message);
67     void serverSocketDisconnected();
68     void slot_timerTest();
69 #endif
70 private:
71     QObject *home;
72     QObject *shortcutArea;
73     QObject *statusArea;
74     QObject *logo;
75     QByteArray data;
76     ApplicationModel *appModel;
77     QWebSocket webSocket;
78     int sequence;
79     bool jsonToMap(const QByteArray &buf, QVariantMap *map) const;
80     bool mapToJson(const QVariantMap &map, QByteArray *json) const;
81     bool jsonToList(const QByteArray &buf, QList<QVariant> *list) const;
82     bool listToJson(const QList<QVariant> &list, QByteArray *json) const;
83     void setUser(const User &user);
84 #ifndef REAL_SERVER
85     QTimer timerTest;
86     QWebSocket *pSocket;
87     QWebSocketServer *webSocketServer;
88     void launchServer();
89 #endif
90 };
91
92 #endif // USERMANAGEMENT_H