40 #include <QStandardItem> |
40 #include <QStandardItem> |
41 #include <QWidget> |
41 #include <QWidget> |
42 #include <QtWidgets/QTableWidget> |
42 #include <QtWidgets/QTableWidget> |
43 #include <QtWidgets/QGroupBox> |
43 #include <QtWidgets/QGroupBox> |
44 #include <QtWidgets/QPushButton> |
44 #include <QtWidgets/QPushButton> |
|
45 #include <QUrl> |
45 |
46 |
46 |
47 |
47 MainWindow::MainWindow(bool useDevelopOption, bool startConfigOption, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) |
48 MainWindow::MainWindow(bool useDevelopOption, bool startConfigOption, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) |
48 { |
49 { |
49 qDebug() << Q_FUNC_INFO << useDevelopOption << startConfigOption; |
50 qDebug() << Q_FUNC_INFO << useDevelopOption << startConfigOption; |
51 setWindowTitle( QString("BMSapp - %1").arg(VERSIONSTRING) ); |
52 setWindowTitle( QString("BMSapp - %1").arg(VERSIONSTRING) ); |
52 |
53 |
53 readsettings(); |
54 readsettings(); |
54 db = new DataBase(); |
55 db = new DataBase(); |
55 db->openDataBase(useDevelopOption); |
56 db->openDataBase(useDevelopOption); |
|
57 |
|
58 openWS(useDevelopOption); |
56 } |
59 } |
57 |
60 |
58 |
61 |
59 MainWindow::~MainWindow() |
62 MainWindow::~MainWindow() |
60 { |
63 { |
61 qDebug() << Q_FUNC_INFO; |
64 qDebug() << Q_FUNC_INFO; |
62 |
65 |
63 writesettings(); |
66 writesettings(); |
|
67 webSocket->close(QWebSocketProtocol::CloseCodeNormal, ""); |
64 db->closeDataBase(); |
68 db->closeDataBase(); |
65 delete ui; |
69 delete ui; |
|
70 } |
|
71 |
|
72 |
|
73 |
|
74 bool MainWindow::openWS(bool develop) |
|
75 { |
|
76 QString server; |
|
77 if (develop) |
|
78 server = wsDev.host; |
|
79 else |
|
80 server = wsProd.host; |
|
81 QUrl url(QString("ws://%1/ws").arg(server)); |
|
82 qDebug() << "Open websocket:" << url; |
|
83 |
|
84 webSocket = new QWebSocket; |
|
85 QObject::connect(webSocket, &QWebSocket::connected, this, &MainWindow::wsConnected); |
|
86 QObject::connect(webSocket, &QWebSocket::disconnected, this, &MainWindow::wsClosed); |
|
87 |
|
88 webSocket->open(QUrl(url)); |
|
89 return true; |
|
90 } |
|
91 |
|
92 |
|
93 void MainWindow::wsConnected() |
|
94 { |
|
95 qDebug() << Q_FUNC_INFO; |
|
96 |
|
97 connect(webSocket, &QWebSocket::textMessageReceived, this, &MainWindow::wsTextMessageReceived); |
|
98 } |
|
99 |
|
100 |
|
101 void MainWindow::wsClosed() |
|
102 { |
|
103 qDebug() << Q_FUNC_INFO << webSocket->closeReason(); |
|
104 |
|
105 // Should triger a periodic timer to try to reconnect. |
|
106 } |
|
107 |
|
108 |
|
109 void MainWindow::wsTextMessageReceived(QString message) |
|
110 { |
|
111 // qDebug() << "WS received:" << message; |
66 } |
112 } |
67 |
113 |
68 |
114 |
69 void MainWindow::readsettings() |
115 void MainWindow::readsettings() |
70 { |
116 { |
118 dbDev.charset = settings.value("charset").toString(); |
164 dbDev.charset = settings.value("charset").toString(); |
119 } |
165 } |
120 settings.endGroup(); |
166 settings.endGroup(); |
121 qDebug() << "MySQL dev" << dbDev.host << dbDev.port << dbDev.name << dbDev.pass; |
167 qDebug() << "MySQL dev" << dbDev.host << dbDev.port << dbDev.name << dbDev.pass; |
122 |
168 |
123 settings.beginGroup("mqttprod"); |
169 settings.beginGroup("wsprod"); |
124 mqttProd.host = settings.value("host").toString(); |
170 wsProd.host = settings.value("host").toString(); |
125 if (mqttProd.host.isEmpty()) { |
171 if (wsProd.host.isEmpty()) { |
126 mqttProd.host = "localhost"; |
172 wsProd.host = "localhost"; |
127 mqttProd.port = "1883"; |
173 settings.setValue("host", wsProd.host); |
128 mqttProd.user = "nobody"; |
|
129 mqttProd.pass = "secret"; |
|
130 settings.setValue("host", mqttProd.host); |
|
131 settings.setValue("port", mqttProd.port); |
|
132 settings.setValue("user", mqttProd.user); |
|
133 settings.setValue("pass", mqttProd.pass); |
|
134 } else { |
|
135 mqttProd.port = settings.value("port").toString(); |
|
136 mqttProd.user = settings.value("user").toString(); |
|
137 mqttProd.pass = settings.value("pass").toString(); |
|
138 } |
174 } |
139 settings.endGroup(); |
175 settings.endGroup(); |
140 qDebug() << "MQTT prod" << mqttProd.host << mqttProd.port << mqttProd.user << mqttProd.pass; |
176 qDebug() << "WS prod" << wsProd.host; |
141 |
177 |
142 settings.beginGroup("mqttdev"); |
178 settings.beginGroup("wsdev"); |
143 mqttDev.host = settings.value("host").toString(); |
179 wsDev.host = settings.value("host").toString(); |
144 if (mqttDev.host.isEmpty()) { |
180 if (wsDev.host.isEmpty()) { |
145 mqttDev.host = "localhost"; |
181 wsDev.host = "localhost"; |
146 mqttDev.port = "1883"; |
182 settings.setValue("host", wsDev.host); |
147 mqttDev.user = "nobody"; |
|
148 mqttDev.pass = "secret"; |
|
149 settings.setValue("host", mqttDev.host); |
|
150 settings.setValue("port", mqttDev.port); |
|
151 settings.setValue("user", mqttDev.user); |
|
152 settings.setValue("pass", mqttDev.pass); |
|
153 } else { |
|
154 mqttDev.port = settings.value("port").toString(); |
|
155 mqttDev.user = settings.value("user").toString(); |
|
156 mqttDev.pass = settings.value("pass").toString(); |
|
157 } |
183 } |
158 settings.endGroup(); |
184 settings.endGroup(); |
159 qDebug() << "MQTT dev" << mqttDev.host << mqttDev.port << mqttDev.user << mqttDev.pass; |
185 qDebug() << "WS dev" << wsDev.host; |
160 } |
186 } |
161 |
187 |
162 |
188 |
163 void MainWindow::writesettings() |
189 void MainWindow::writesettings() |
164 { |
190 { |
180 settings.setValue("user", dbDev.user); |
206 settings.setValue("user", dbDev.user); |
181 settings.setValue("pass", dbDev.pass); |
207 settings.setValue("pass", dbDev.pass); |
182 settings.setValue("charset", dbDev.charset); |
208 settings.setValue("charset", dbDev.charset); |
183 settings.endGroup(); |
209 settings.endGroup(); |
184 |
210 |
185 settings.beginGroup("mqttprod"); |
211 settings.beginGroup("wsprod"); |
186 settings.setValue("host", mqttProd.host); |
212 settings.setValue("host", wsProd.host); |
187 settings.setValue("port", mqttProd.port); |
213 settings.endGroup(); |
188 settings.setValue("user", mqttProd.user); |
214 |
189 settings.setValue("pass", mqttProd.pass); |
215 settings.beginGroup("wsdev"); |
190 settings.endGroup(); |
216 settings.setValue("host", wsDev.host); |
191 |
|
192 settings.beginGroup("mqttdev"); |
|
193 settings.setValue("host", mqttDev.host); |
|
194 settings.setValue("port", mqttDev.port); |
|
195 settings.setValue("user", mqttDev.user); |
|
196 settings.setValue("pass", mqttDev.pass); |
|
197 settings.endGroup(); |
217 settings.endGroup(); |
198 |
218 |
199 qDebug() << "writesettings() done."; |
219 qDebug() << "writesettings() done."; |
200 } |
220 } |
201 |
221 |