618d26bddee0fff45b0d40f41115b7d2bf066619
[apps/navigation.git] / app / file_operation.h
1 #ifndef FILE_OPERATION_H
2 #define FILE_OPERATION_H
3 #include <QObject>
4 #include <QString>
5 #include <QFile>
6 #include <QFile>
7 #include <QJsonObject>
8 #include <QJsonDocument>
9
10 /******************************************************
11  * Write access token of mapbox in /etc/mapAccessToken
12  ******************************************************/
13 #define MAP_ACCESS_TOKEN_FILEPATH "/etc/mapAccessToken"
14
15 class File_Operation: public QObject{
16
17     Q_OBJECT
18 public:
19     Q_INVOKABLE QString getMapAccessToken() {
20     #if 0
21         char buf[512];
22         QString mapAccessToken = "";
23
24         FILE* filep = fopen(qPrintable(MAP_ACCESS_TOKEN_FILEPATH), "r");
25         if (!filep) {
26             fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
27             return mapAccessToken;
28         }
29         if (!fgets(buf, 512, filep)) {
30             fprintf(stderr,"Failed to read mapAccessToken from mapAccessToken file \"%s\"", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
31             fclose(filep);
32             return mapAccessToken;
33         }
34         if (strlen(buf) > 0 && buf[strlen(buf)-1] == '\n') {
35             buf[strlen(buf)-1] = '\0';
36         }
37         mapAccessToken = QString(buf);
38
39         fclose(filep);
40
41         return mapAccessToken;
42     #else
43         QString mapAccessToken = "";
44         QFile file(MAP_ACCESS_TOKEN_FILEPATH);
45         if (!file.open(QIODevice::ReadOnly)){
46             fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
47             return mapAccessToken;
48         }
49         QByteArray data = file.readAll();
50         QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
51         QJsonObject jsonObj(jsonDoc.object());
52         if(jsonObj.contains("mapAccessToken")){
53                 mapAccessToken = jsonObj["mapAccessToken"].toString();
54         }else{
55                 fprintf(stderr,"Failed to find mapAccessToken data \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
56         }
57         
58         file.close();
59         return mapAccessToken;
60     #endif
61     }
62     
63     Q_INVOKABLE double getSpeed() {
64         double speed = 60;      // km/h
65         QFile file(MAP_ACCESS_TOKEN_FILEPATH);
66         if (!file.open(QIODevice::ReadOnly)){
67             fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
68             return speed;
69         }
70         QByteArray data = file.readAll();
71         QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
72         QJsonObject jsonObj(jsonDoc.object());
73         if(jsonObj.contains("speed")){
74                 speed = jsonObj["speed"].toDouble();
75         }else{
76                 fprintf(stderr,"Failed to find speed data \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
77         }
78         
79         file.close();
80         return speed;
81     }
82     
83     Q_INVOKABLE int getInterval() {
84         int interval = 15;      // ms
85         QFile file(MAP_ACCESS_TOKEN_FILEPATH);
86         if (!file.open(QIODevice::ReadOnly)){
87             fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
88             return interval;
89         }
90         QByteArray data = file.readAll();
91         QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
92         QJsonObject jsonObj(jsonDoc.object());
93         if(jsonObj.contains("interval")){
94                 interval = (int)jsonObj["interval"].toDouble();
95         }else{
96                 fprintf(stderr,"Failed to find interval data \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
97         }
98         
99         file.close();
100         return interval;
101     }
102     
103     Q_INVOKABLE double getLatitude() {
104         double latitude = 36.136261;
105         QFile file(MAP_ACCESS_TOKEN_FILEPATH);
106         if (!file.open(QIODevice::ReadOnly)){
107             fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
108             return latitude;
109         }
110         QByteArray data = file.readAll();
111         QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
112         QJsonObject jsonObj(jsonDoc.object());
113         if(jsonObj.contains("latitude")){
114                 latitude = jsonObj["latitude"].toDouble();
115         }else{
116                 fprintf(stderr,"Failed to find latitude data \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
117         }
118         
119         file.close();
120         return latitude;
121     }
122     
123      Q_INVOKABLE double getLongitude() {
124         double longitute = -115.151254;
125         QFile file(MAP_ACCESS_TOKEN_FILEPATH);
126         if (!file.open(QIODevice::ReadOnly)){
127             fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
128             return longitute;
129         }
130         QByteArray data = file.readAll();
131         QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
132         QJsonObject jsonObj(jsonDoc.object());
133         if(jsonObj.contains("longitute")){
134                 longitute = jsonObj["longitute"].toDouble();
135         }else{
136                 fprintf(stderr,"Failed to find longitute data \"%s\": %m", qPrintable(MAP_ACCESS_TOKEN_FILEPATH));
137         }
138         
139         file.close();
140         return longitute;
141     }
142 };
143
144 #endif // FILE_OPERATION_H