|
2 | 2 | #include "ui_mainwindow.h" |
3 | 3 | #include "constants.h" |
4 | 4 | #include <QJsonArray> |
| 5 | +#include <QFileDialog> |
| 6 | +#include <QJsonDocument> |
5 | 7 | #include "comboboxitemdelegate.h" |
6 | 8 |
|
7 | 9 | MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), m_ui(new Ui::MainWindow), m_endpoint(new Endpoint), m_iWebSocket(new InputWebSocket), m_iMqtt(new InputMqtt), m_audioDevice(new AudioEndpointController) |
@@ -280,6 +282,9 @@ bool MainWindow::nativeEvent(const QByteArray& eventType, void* message, long* r |
280 | 282 |
|
281 | 283 | void MainWindow::loadSettingsFromRegistry() |
282 | 284 | { |
| 285 | + restoreGeometry(readFromRegistry("geometry").toByteArray()); |
| 286 | + restoreState(readFromRegistry("windowState").toByteArray()); |
| 287 | + |
283 | 288 | //Setting for last known WebSocket address |
284 | 289 | QUrl lastWsUrl = readFromRegistry(Names::SettingLastWsAddress).toUrl(); |
285 | 290 | m_ui->lineEditWebSocketAddr->setText(lastWsUrl.toString()); |
@@ -383,9 +388,14 @@ void MainWindow::savePayloadMap() |
383 | 388 | payloadTable->repaint(); |
384 | 389 | } |
385 | 390 |
|
386 | | -void MainWindow::loadPayloadMap() |
| 391 | +void MainWindow::loadPayloadMap(const QJsonDocument &file) |
387 | 392 | { |
388 | | - QJsonObject payloadObject = readFromRegistry(Names::SettingPayloadMap).toJsonObject(); |
| 393 | + QJsonObject payloadObject; |
| 394 | + if(file.isEmpty()) { |
| 395 | + payloadObject = readFromRegistry(Names::SettingPayloadMap).toJsonObject(); |
| 396 | + } else { |
| 397 | + payloadObject = file.object(); |
| 398 | + } |
389 | 399 |
|
390 | 400 | auto payloadTable = m_ui->tableWidget; |
391 | 401 |
|
@@ -420,6 +430,9 @@ void MainWindow::loadPayloadMap() |
420 | 430 |
|
421 | 431 | void MainWindow::on_pushButtonSaveSettings_clicked() |
422 | 432 | { |
| 433 | + writeToRegistry("geometry", saveGeometry()); |
| 434 | + writeToRegistry("windowState", saveState()); |
| 435 | + |
423 | 436 | //Autostart enabled |
424 | 437 | QSettings bootSettings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); |
425 | 438 | QString path = QDir::toNativeSeparators(QCoreApplication::applicationFilePath()); |
@@ -525,3 +538,29 @@ void MainWindow::on_pushButtonRefreshAudio_clicked() |
525 | 538 | m_ui->comboBoxAudioList->clear(); |
526 | 539 | setupAudioCombobox(m_audioDevice->getAllAudioDevices()); |
527 | 540 | } |
| 541 | + |
| 542 | +void MainWindow::on_pushButtonExportPayloadMap_clicked() |
| 543 | +{ |
| 544 | + QJsonDocument doc; |
| 545 | + doc.setObject(m_payloadMap); |
| 546 | + QString fileName = QFileDialog::getSaveFileName(this, "Save Payload Mapping", "", "JSON (*.json)"); |
| 547 | + if(fileName.isEmpty()) |
| 548 | + return; |
| 549 | + else { |
| 550 | + QFile file(fileName); |
| 551 | + file.open(QFile::WriteOnly | QFile::Text | QFile::Truncate); |
| 552 | + file.write(doc.toJson(QJsonDocument::Compact)); |
| 553 | + file.close(); |
| 554 | + } |
| 555 | +} |
| 556 | + |
| 557 | +void MainWindow::on_pushButtonImportPayloadMap_clicked() |
| 558 | +{ |
| 559 | + QString fileName = QFileDialog::getOpenFileName(this, "Load Payload Mapping", "", "JSON (*.json)"); |
| 560 | + QFile file(fileName); |
| 561 | + file.open(QIODevice::ReadOnly | QIODevice::Text); |
| 562 | + QJsonParseError jsonParseError; |
| 563 | + QJsonDocument importFile = QJsonDocument::fromJson(file.readAll(), &jsonParseError); |
| 564 | + file.close(); |
| 565 | + loadPayloadMap(importFile); |
| 566 | +} |
0 commit comments