From dd6e14e2c8cecc8d994ea31f83a1dfdd113ac1c6 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 26 Jul 2019 02:28:21 +0200 Subject: [PATCH] Ref T709, UI for XPlane settings (plugin config window) --- .../simulatorxplaneconfigwindow.cpp | 47 ++++++-- .../simulatorxplaneconfigwindow.h | 13 ++- .../simulatorxplaneconfigwindow.ui | 100 ++++++++++++++++-- 3 files changed, 140 insertions(+), 20 deletions(-) diff --git a/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.cpp b/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.cpp index ebb8fb704..2d020f5e0 100644 --- a/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.cpp +++ b/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.cpp @@ -16,6 +16,7 @@ using namespace BlackGui; using namespace BlackMisc; +using namespace BlackMisc::Simulation::Settings; using namespace BlackMisc::Simulation::XPlane; namespace BlackSimPlugin @@ -27,8 +28,15 @@ namespace BlackSimPlugin ui(new Ui::CSimulatorXPlaneConfigWindow) { ui->setupUi(this); - ui->comp_SettingsXSwiftBus->setDefaultP2PAddress(m_xswiftbusServerSetting.getDefault()); - ui->comp_SettingsXSwiftBus->set(m_xswiftbusServerSetting.getThreadLocal()); + ui->comp_SettingsXSwiftBus->setDefaultP2PAddress(m_xSwiftBusServerSettings.getDefault().getDBusServerAddressQt()); + + const CXSwiftBusSettings defaultSettings = TXSwiftBusSettings::defaultValue(); + ui->sb_MaxAircraft->setMaximum(defaultSettings.getMaxPlanes() * 2); + ui->sb_FollowAircraftDistanceM->setMaximum(defaultSettings.getFollowAircraftDistanceM() * 5); + ui->ds_MaxDrawDistanceNM->setMaximum(qRound(defaultSettings.getMaxDrawDistanceNM() * 3)); + + const CXSwiftBusSettings s = m_xSwiftBusServerSettings.getThreadLocal(); + this->setUiValues(s); connect(ui->bb_OkCancel, &QDialogButtonBox::accepted, this, &CSimulatorXPlaneConfigWindow::onSettingsAccepted); connect(ui->bb_OkCancel, &QDialogButtonBox::rejected, this, &CSimulatorXPlaneConfigWindow::close); @@ -39,16 +47,39 @@ namespace BlackSimPlugin void CSimulatorXPlaneConfigWindow::onSettingsAccepted() { - const QString currentAddress = m_xswiftbusServerSetting.getThreadLocal(); - const QString updatedAddress = ui->comp_SettingsXSwiftBus->getDBusAddress(); - if (currentAddress != ui->comp_SettingsXSwiftBus->getDBusAddress()) + const CXSwiftBusSettings s = m_xSwiftBusServerSettings.getThreadLocal(); + const CXSwiftBusSettings changed = this->getSettingsFromUI(); + if (s != changed) { - m_xswiftbusServerSetting.set(updatedAddress); + m_xSwiftBusServerSettings.set(changed); CXSwiftBusConfigWriter xswiftbusConfigWriter; - xswiftbusConfigWriter.setDBusAddress(updatedAddress); + xswiftbusConfigWriter.setDBusAddress(changed.getDBusServerAddressQt()); xswiftbusConfigWriter.updateInAllXPlaneVersions(); } - close(); + this->close(); + } + + CXSwiftBusSettings CSimulatorXPlaneConfigWindow::getSettingsFromUI() const + { + CXSwiftBusSettings s = m_xSwiftBusServerSettings.getThreadLocal(); + s.setDBusServerAddressQt(ui->comp_SettingsXSwiftBus->getDBusAddress()); + s.setMaxDrawDistanceNM(ui->ds_MaxDrawDistanceNM->value()); + s.setMaxPlanes(ui->sb_MaxAircraft->value()); + s.setDrawingLabels(ui->cb_DrawLabels->isChecked()); + return s; + } + + void CSimulatorXPlaneConfigWindow::setUiValues(const CXSwiftBusSettings &settings) + { + ui->comp_SettingsXSwiftBus->set(settings.getDBusServerAddressQt()); + ui->sb_MaxAircraft->setValue(settings.getMaxPlanes()); + ui->cb_DrawLabels->setChecked(settings.isDrawingLabels()); + ui->ds_MaxDrawDistanceNM->setValue(settings.getMaxDrawDistanceNM()); + } + + void CSimulatorXPlaneConfigWindow::onSettingsChanged() + { + this->setUiValues(m_xSwiftBusServerSettings.get()); } } // ns } // ns diff --git a/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.h b/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.h index ea34c4421..755703352 100644 --- a/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.h +++ b/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.h @@ -34,14 +34,23 @@ namespace BlackSimPlugin CSimulatorXPlaneConfigWindow(QWidget *parent); //! Dtor. - virtual ~CSimulatorXPlaneConfigWindow(); + virtual ~CSimulatorXPlaneConfigWindow() override; private: //! Settings have been accepted void onSettingsAccepted(); + //! Settings from UI + BlackMisc::Simulation::Settings::CXSwiftBusSettings getSettingsFromUI() const; + + //! Set settings + void setUiValues(const BlackMisc::Simulation::Settings::CXSwiftBusSettings &settings); + + //! Settings changed + void onSettingsChanged(); + QScopedPointer ui; - BlackMisc::CSetting m_xswiftbusServerSetting { this }; + BlackMisc::CSetting m_xSwiftBusServerSettings { this, &CSimulatorXPlaneConfigWindow::onSettingsChanged }; }; } // ns } // ns diff --git a/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.ui b/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.ui index 97b35171f..76851fc43 100644 --- a/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.ui +++ b/src/plugins/simulator/xplaneconfig/simulatorxplaneconfigwindow.ui @@ -6,8 +6,8 @@ 0 0 - 275 - 175 + 250 + 272 @@ -35,7 +35,38 @@ 2 - + + + + XSwiftBus DBus + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 100 + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok @@ -45,14 +76,58 @@ - - - - - 0 - 100 - + + + + Settings + + + + + Max.aircraft + + + + + + + 250 + + + + + + + Max.distance + + + + + + + NM + + + 250.000000000000000 + + + + + + + Labels + + + + + + + draw labels + + + + @@ -65,6 +140,11 @@ 1 + + sb_MaxAircraft + ds_MaxDrawDistanceNM + cb_DrawLabels +