src/MainWindow.cpp

changeset 91
409d9c7214be
parent 90
2396457a8167
child 103
6da4e93b6ceb
equal deleted inserted replaced
90:2396457a8167 91:409d9c7214be
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

mercurial