swift
settingsxswiftbuscomponent.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2017 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 
8 #include "ui_settingsxswiftbuscomponent.h"
9 
10 #include "misc/dbusserver.h"
11 #include "misc/logmessage.h"
13 
14 using namespace swift::misc;
15 using namespace swift::misc::simulation::settings;
16 using namespace swift::misc::simulation::xplane;
17 
18 namespace swift::gui::components
19 {
20  const QStringList &CSettingsXSwiftBusComponent::getLogCategories()
21  {
22  static const QStringList cats { CLogCategories::guiComponent() };
23  return cats;
24  }
25 
26  CSettingsXSwiftBusComponent::CSettingsXSwiftBusComponent(QWidget *parent)
27  : QFrame(parent), ui(new Ui::CSettingsXSwiftBusComponent)
28  {
29  ui->setupUi(this);
30 
31  connect(ui->pb_Save, &QPushButton::released, this, &CSettingsXSwiftBusComponent::saveServer);
32  connect(ui->pb_Reset, &QPushButton::released, this, &CSettingsXSwiftBusComponent::resetServer);
33 
34  const QString dBusAddress = m_xSwiftBusSettings.get().getDBusServerAddressQt();
35  ui->comp_DBusServer->setForXSwiftBus();
36  ui->comp_DBusServer->set(dBusAddress);
37  }
38 
40 
41  void CSettingsXSwiftBusComponent::resetServer()
42  {
43  const QString s = TXSwiftBusSettings::defaultValue().getDBusServerAddressQt();
44  ui->comp_DBusServer->set(s);
45  }
46 
47  void CSettingsXSwiftBusComponent::saveServer()
48  {
49  const QString dBusAddress = ui->comp_DBusServer->getDBusAddress();
50  if (dBusAddress.isEmpty()) { return; }
51  CXSwiftBusSettings s = m_xSwiftBusSettings.getThreadLocal();
52 
53  if (dBusAddress != s.getDBusServerAddressQt())
54  {
55  s.setDBusServerAddressQt(dBusAddress);
56  const CStatusMessage msg = m_xSwiftBusSettings.setAndSave(dBusAddress);
57  CXSwiftBusConfigWriter xswiftbusConfigWriter;
58  xswiftbusConfigWriter.setDBusAddress(dBusAddress);
59  xswiftbusConfigWriter.updateInAllXPlaneVersions();
60  CLogMessage::preformatted(msg);
61  }
62  }
63 } // namespace swift::gui::components
CStatusMessage setAndSave(const T &value, qint64 timestamp=0)
Write and save in the same step. Must be called from the thread in which the owner lives.
Definition: valuecache.h:417
const T & getThreadLocal() const
Read the current value.
Definition: valuecache.h:400
T get() const
Get a copy of the current value.
Definition: valuecache.h:408
static const QString & guiComponent()
GUI components.
Definition: logcategories.h:94
Streamable status message, e.g.
void setDBusServerAddressQt(const QString &dBusAddress)
Set DBus server.
void updateInAllXPlaneVersions()
Update xswiftbus.conf in all known X-Plane versions (XP9 - XP11 are supported)
void setDBusAddress(const QString &dBusAddress)
Set new DBus address.
High level reusable GUI components.
Definition: aboutdialog.cpp:13
Free functions in swift::misc.