swift
simulatorflightgearconfigwindow.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QComboBox>
7 #include <QDialogButtonBox>
8 
9 #include "ui_simulatorflightgearconfigwindow.h"
10 
11 #include "core/application.h"
12 #include "gui/guiapplication.h"
13 
14 using namespace swift::gui;
15 using namespace swift::misc;
16 using namespace swift::misc::simulation::settings;
17 // using namespace swift::misc::simulation::Flightgear;
18 
19 namespace swift::simplugin::flightgear
20 {
21  CSimulatorFlightgearConfigWindow::CSimulatorFlightgearConfigWindow(QWidget *parent)
23  {
24  ui->setupUi(this);
25  CGuiUtility::disableMinMaxCloseButtons(this);
26  ui->comp_SettingsFGSwiftBus->setDefaultP2PAddress(
27  m_fgswiftbusServerSetting.getDefault().getDBusServerAddress());
28  ui->comp_SettingsFGSwiftBus->set(m_fgswiftbusServerSetting.getThreadLocal().getDBusServerAddress());
29 
30  connect(ui->bb_OkCancel, &QDialogButtonBox::accepted, this,
31  &CSimulatorFlightgearConfigWindow::onSettingsAccepted);
32  connect(ui->bb_OkCancel, &QDialogButtonBox::rejected, this, &CSimulatorFlightgearConfigWindow::close);
33  }
34 
36 
37  CFGSwiftBusSettings CSimulatorFlightgearConfigWindow::getSettingsFromUI() const
38  {
39  CFGSwiftBusSettings s = m_fgswiftbusServerSetting.getThreadLocal();
40  s.setDBusServerAddress(ui->comp_SettingsFGSwiftBus->getDBusAddress());
41  return s;
42  }
43 
44  void CSimulatorFlightgearConfigWindow::onSettingsChanged()
45  {
46  ui->comp_SettingsFGSwiftBus->set(m_fgswiftbusServerSetting.getThreadLocal().getDBusServerAddress());
47  }
48 
49  void CSimulatorFlightgearConfigWindow::onSettingsAccepted()
50  {
51  if (!sGui || sGui->isShuttingDown()) { return; }
52 
53  const CFGSwiftBusSettings s = m_fgswiftbusServerSetting.getThreadLocal();
54  CFGSwiftBusSettings changed = getSettingsFromUI();
55 
56  if (s != changed) { m_fgswiftbusServerSetting.set(changed); }
57  close();
58  }
59 } // namespace swift::simplugin::flightgear
bool isShuttingDown() const
Is application shutting down?
Base class for plugin config window.
CStatusMessage set(const T &value, qint64 timestamp=0)
Write a new value. Must be called from the thread in which the owner lives.
Definition: valuecache.h:411
const T & getThreadLocal() const
Read the current value.
Definition: valuecache.h:400
auto getDefault() const
Gets the default value.
Definition: settingscache.h:97
void setDBusServerAddress(const QString &dBusServer)
Set DBus server.
A window that shows all the Flightgear plugin options.
SWIFT_GUI_EXPORT swift::gui::CGuiApplication * sGui
Single instance of GUI application object.
GUI related classes.
Free functions in swift::misc.