Ref T709, UI for XPlane settings (plugin config window)

This commit is contained in:
Klaus Basan
2019-07-26 02:28:21 +02:00
committed by Mat Sutcliffe
parent dab3e03d0b
commit f416285c62
3 changed files with 140 additions and 20 deletions

View File

@@ -16,6 +16,7 @@
using namespace BlackGui; using namespace BlackGui;
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Simulation::Settings;
using namespace BlackMisc::Simulation::XPlane; using namespace BlackMisc::Simulation::XPlane;
namespace BlackSimPlugin namespace BlackSimPlugin
@@ -27,8 +28,15 @@ namespace BlackSimPlugin
ui(new Ui::CSimulatorXPlaneConfigWindow) ui(new Ui::CSimulatorXPlaneConfigWindow)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->comp_SettingsXSwiftBus->setDefaultP2PAddress(m_xswiftbusServerSetting.getDefault()); ui->comp_SettingsXSwiftBus->setDefaultP2PAddress(m_xSwiftBusServerSettings.getDefault().getDBusServerAddressQt());
ui->comp_SettingsXSwiftBus->set(m_xswiftbusServerSetting.getThreadLocal());
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::accepted, this, &CSimulatorXPlaneConfigWindow::onSettingsAccepted);
connect(ui->bb_OkCancel, &QDialogButtonBox::rejected, this, &CSimulatorXPlaneConfigWindow::close); connect(ui->bb_OkCancel, &QDialogButtonBox::rejected, this, &CSimulatorXPlaneConfigWindow::close);
@@ -39,16 +47,39 @@ namespace BlackSimPlugin
void CSimulatorXPlaneConfigWindow::onSettingsAccepted() void CSimulatorXPlaneConfigWindow::onSettingsAccepted()
{ {
const QString currentAddress = m_xswiftbusServerSetting.getThreadLocal(); const CXSwiftBusSettings s = m_xSwiftBusServerSettings.getThreadLocal();
const QString updatedAddress = ui->comp_SettingsXSwiftBus->getDBusAddress(); const CXSwiftBusSettings changed = this->getSettingsFromUI();
if (currentAddress != ui->comp_SettingsXSwiftBus->getDBusAddress()) if (s != changed)
{ {
m_xswiftbusServerSetting.set(updatedAddress); m_xSwiftBusServerSettings.set(changed);
CXSwiftBusConfigWriter xswiftbusConfigWriter; CXSwiftBusConfigWriter xswiftbusConfigWriter;
xswiftbusConfigWriter.setDBusAddress(updatedAddress); xswiftbusConfigWriter.setDBusAddress(changed.getDBusServerAddressQt());
xswiftbusConfigWriter.updateInAllXPlaneVersions(); 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
} // ns } // ns

View File

@@ -34,14 +34,23 @@ namespace BlackSimPlugin
CSimulatorXPlaneConfigWindow(QWidget *parent); CSimulatorXPlaneConfigWindow(QWidget *parent);
//! Dtor. //! Dtor.
virtual ~CSimulatorXPlaneConfigWindow(); virtual ~CSimulatorXPlaneConfigWindow() override;
private: private:
//! Settings have been accepted //! Settings have been accepted
void onSettingsAccepted(); 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::CSimulatorXPlaneConfigWindow> ui; QScopedPointer<Ui::CSimulatorXPlaneConfigWindow> ui;
BlackMisc::CSetting<BlackMisc::Simulation::Settings::TXSwiftBusServer> m_xswiftbusServerSetting { this }; BlackMisc::CSetting<BlackMisc::Simulation::Settings::TXSwiftBusSettings> m_xSwiftBusServerSettings { this, &CSimulatorXPlaneConfigWindow::onSettingsChanged };
}; };
} // ns } // ns
} // ns } // ns

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>275</width> <width>250</width>
<height>175</height> <height>272</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@@ -35,7 +35,38 @@
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<item row="1" column="0"> <item row="0" column="0">
<widget class="QGroupBox" name="gb_DBus">
<property name="title">
<string>XSwiftBus DBus</string>
</property>
<layout class="QVBoxLayout" name="vl_DBus">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="BlackGui::Components::CDBusServerAddressSelector" name="comp_SettingsXSwiftBus">
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QDialogButtonBox" name="bb_OkCancel"> <widget class="QDialogButtonBox" name="bb_OkCancel">
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
@@ -45,14 +76,58 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0" alignment="Qt::AlignTop"> <item row="1" column="0">
<widget class="BlackGui::Components::CDBusServerAddressSelector" name="comp_SettingsXSwiftBus"> <widget class="QGroupBox" name="gb_XPSettings">
<property name="minimumSize"> <property name="title">
<size> <string>Settings</string>
<width>0</width>
<height>100</height>
</size>
</property> </property>
<layout class="QFormLayout" name="formLayout">
<item row="1" column="0">
<widget class="QLabel" name="lbl_MaxAircraft">
<property name="text">
<string>Max.aircraft</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="sb_MaxAircraft">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_MaxDistance">
<property name="text">
<string>Max.distance</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="ds_MaxDrawDistanceNM">
<property name="suffix">
<string>NM</string>
</property>
<property name="maximum">
<double>250.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_Labels">
<property name="text">
<string>Labels</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="cb_DrawLabels">
<property name="text">
<string>draw labels</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>
@@ -65,6 +140,11 @@
<container>1</container> <container>1</container>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<tabstops>
<tabstop>sb_MaxAircraft</tabstop>
<tabstop>ds_MaxDrawDistanceNM</tabstop>
<tabstop>cb_DrawLabels</tabstop>
</tabstops>
<resources/> <resources/>
<connections/> <connections/>
</ui> </ui>