swift
simulatorinternals.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QDBusMetaType>
7 #include <QJsonObject>
8 
9 #include "misc/dbus.h"
10 
11 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::misc::simulation, CSimulatorInternals)
12 
13 namespace swift::misc::simulation
14 {
15  void CSimulatorInternals::setValue(const QString &name, const QString &value)
16  {
17  m_data.addOrReplaceValue(name, value);
18  }
19 
20  void CSimulatorInternals::setValue(const QString &name, int value) { this->setValue(name, QString::number(value)); }
21 
22  CVariant CSimulatorInternals::getVariantValue(const QString &name) const { return m_data.getVariantValue(name); }
23 
24  QString CSimulatorInternals::getStringValue(const QString &name) const { return m_data.getValueAsString(name); }
25 
26  QStringList CSimulatorInternals::getSortedNames() const { return m_data.getNames(true); }
27 
28  void CSimulatorInternals::setSimulatorVersion(const QString &versionInfo)
29  {
30  this->setValue("all/versionInfo", versionInfo);
31  }
32 
34  {
35  this->setValue("all/installDir", fullFilePath);
36  }
37 
38  QString CSimulatorInternals::getSimulatorName() const { return this->getStringValue("all/simulatorName"); }
39 
40  void CSimulatorInternals::setSimulatorName(const QString &name) { this->setValue("all/simulatorName", name); }
41 
42  QString CSimulatorInternals::getSimulatorSwiftPluginName() const { return this->getStringValue("all/pluginName"); }
43 
44  void CSimulatorInternals::setSwiftPluginName(const QString &name) { this->setValue("all/pluginName", name); }
45 
46  QString CSimulatorInternals::getSimulatorVersion() const { return this->getStringValue("all/versionInfo"); }
47 
49  {
50  return this->getStringValue("all/installDir");
51  }
52 
54  {
55  qRegisterMetaType<swift::misc::simulation::CSimulatorInternals>();
56  qDBusRegisterMetaType<swift::misc::simulation::CSimulatorInternals>();
57  registerMetaValueType<swift::misc::simulation::CSimulatorInternals>();
58  }
59 
60  QString CSimulatorInternals::convertToQString(bool i18n) const { return m_data.toQString(i18n); }
61 
63  {
64  if (index.isMyself()) { return QVariant::fromValue(*this); }
65  const ColumnIndex i = index.frontCasted<ColumnIndex>();
66  switch (i)
67  {
68  case IndexData: return QVariant::fromValue(m_data);
69  default: return CValueObject::propertyByIndex(index);
70  }
71  }
72 
73  void CSimulatorInternals::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
74  {
75  if (index.isMyself())
76  {
77  (*this) = variant.value<CSimulatorInternals>();
78  return;
79  }
80  const ColumnIndex i = index.frontCasted<ColumnIndex>();
81  switch (i)
82  {
83  case IndexData: m_data = variant.value<CNameVariantPairList>(); break;
84  default: CValueObject::setPropertyByIndex(index, variant); break;
85  }
86  }
87 } // namespace swift::misc::simulation
Value object encapsulating a list of name/variant pairs.
QStringList getNames(bool sorted=true) const
Get all names.
CVariant getVariantValue(const QString &name) const
Get pair's variant value or default if not existing.
QString getValueAsString(const QString &name) const
Get pair's variant value as string (empty if not existing)
bool addOrReplaceValue(const QString &name, const CVariant &value, const CIcon &icon=CIcon())
Add value, if name already exists replace (true) If one is sure(!) the name does not exists,...
Non-owning reference to a CPropertyIndex with a subset of its features.
CastType frontCasted() const
First element casted to given type, usually the PropertIndex enum.
bool isMyself() const
Myself index, used with nesting.
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Definition: variant.h:66
ColumnIndex
Base class enums.
Definition: mixinindex.h:44
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: mixinindex.h:160
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition: mixinindex.h:167
QString toQString(bool i18n=false) const
Cast as QString.
Definition: mixinstring.h:76
Simulator internals for flight simulators. Those are obtained from a running simulator and represent ...
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
QString getSimulatorVersion() const
Simulator version info, something like "10.3.2".
QStringList getSortedNames() const
Get sorted names.
void setSimulatorName(const QString &name)
Set simulator name.
void setSimulatorInstallationDirectory(const QString &fullFilePath)
Path where simulator is installed.
QString convertToQString(bool i18n=false) const
Cast as QString.
QString getSimulatorInstallationDirectory() const
Path where simulator is installed.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
static void registerMetadata()
Register metadata.
void setValue(const QString &name, const QString &value)
Set value.
void setSimulatorVersion(const QString &versionInfo)
Simulator version info, something like "10.3.2".
QString getSimulatorName() const
Get the simulator name.
QString getSimulatorSwiftPluginName() const
Plugin name.
void setSwiftPluginName(const QString &name)
Set plugin name.
QString getStringValue(const QString &name) const
Get string value.
CVariant getVariantValue(const QString &name) const
Get value.
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67