swift
vatsimsettings.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 using namespace swift::misc;
7 using namespace swift::misc::physical_quantities;
8 
9 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::core::vatsim, CReaderSettings)
10 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::core::vatsim, CRawFsdMessageSettings)
11 
12 namespace swift::core::vatsim
13 {
14  CReaderSettings::CReaderSettings() {}
15 
16  CReaderSettings::CReaderSettings(const CTime &initialTime, const CTime &periodicTime, bool neverUpdate)
17  : m_initialTime(initialTime), m_periodicTime(periodicTime), m_neverUpdate(neverUpdate)
18  {}
19 
20  QString CReaderSettings::convertToQString(bool i18n) const
21  {
22  QString s("CReaderSettings");
23  s.append(" ").append(this->m_initialTime.convertToQString(i18n));
24  s.append(" ").append(this->m_periodicTime.convertToQString(i18n));
25  return s;
26  }
27 
29  {
30  static const CReaderSettings s(CTime { 1.0, CTimeUnit::d() }, CTime { 1.0, CTimeUnit::d() }, true);
31  return s;
32  }
33 
35  {
36  if (index.isMyself()) { return QVariant::fromValue(*this); }
37  ColumnIndex i = index.frontCasted<ColumnIndex>();
38  switch (i)
39  {
40  case IndexInitialTime: return this->m_initialTime.propertyByIndex(index.copyFrontRemoved());
41  case IndexPeriodicTime: return this->m_periodicTime.propertyByIndex(index.copyFrontRemoved());
42  case IndexNeverUpdate: return QVariant::fromValue(this->m_neverUpdate);
43  default: return CValueObject::propertyByIndex(index);
44  }
45  }
46 
47  void CReaderSettings::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
48  {
49  if (index.isMyself())
50  {
51  (*this) = variant.value<CReaderSettings>();
52  return;
53  }
54  ColumnIndex i = index.frontCasted<ColumnIndex>();
55  switch (i)
56  {
57  case IndexInitialTime: this->m_initialTime.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
58  case IndexPeriodicTime: this->m_periodicTime.setPropertyByIndex(index.copyFrontRemoved(), variant); break;
59  case IndexNeverUpdate: this->m_neverUpdate = variant.toBool(); break;
60  default: CValueObject::setPropertyByIndex(index, variant); break;
61  }
62  }
63 
65 
66  CRawFsdMessageSettings::CRawFsdMessageSettings(bool enabled, const QString &FileDir)
67  : m_rawFsdMessagesEnabled(enabled), m_FileDir(FileDir)
68  {}
69 
71  {
72  Q_UNUSED(i18n);
73  QString s("CRawFsdMessageSettings");
74  s.append(" enabled: ").append(boolToYesNo(m_rawFsdMessagesEnabled));
75  s.append(" dir: ").append(m_FileDir);
76  return s;
77  }
78 
80  {
81  if (index.isMyself()) { return QVariant::fromValue(*this); }
82  ColumnIndex i = index.frontCasted<ColumnIndex>();
83  switch (i)
84  {
85  case IndexRawFsdMessagesEnabled: return QVariant::fromValue(this->m_rawFsdMessagesEnabled);
86  case IndexFileDir: return QVariant::fromValue(this->m_FileDir);
87  case IndexFileWriteMode: return QVariant::fromValue(this->m_fileWriteMode);
88  default: return CValueObject::propertyByIndex(index);
89  }
90  }
91 
93  {
94  if (index.isMyself())
95  {
96  (*this) = variant.value<CRawFsdMessageSettings>();
97  return;
98  }
99  ColumnIndex i = index.frontCasted<ColumnIndex>();
100  switch (i)
101  {
102  case IndexRawFsdMessagesEnabled: this->m_rawFsdMessagesEnabled = variant.toBool(); break;
103  case IndexFileDir: this->m_FileDir = variant.toString(); break;
104  case IndexFileWriteMode: this->m_fileWriteMode = variant.value<FileWriteMode>(); break;
105  default: CValueObject::setPropertyByIndex(index, variant); break;
106  }
107  }
108 } // namespace swift::core::vatsim
QString convertToQString(bool i18n=false) const
Cast as QString.
QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const
Property by index.
void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Settings used with readers.
void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant)
Set property by index.
static const CReaderSettings & neverUpdateSettings()
Settings used when a reader is manually triggered and never updates.
QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const
Property by index.
QString convertToQString(bool i18n=false) const
Cast as QString.
Non-owning reference to a CPropertyIndex with a subset of its features.
Q_REQUIRED_RESULT CPropertyIndexRef copyFrontRemoved() const
Copy with first element removed.
CastType frontCasted() const
First element casted to given type, usually the PropertIndex enum.
bool isMyself() const
Myself index, used with nesting.
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 convertToQString(bool i18n=false) const
Cast as QString.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Free functions in swift::misc.
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67