swift
distributorlistpreferences.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 #include <QtGlobal>
7 
8 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::misc::simulation, CDistributorListPreferences)
9 
10 namespace swift::misc::simulation
11 {
13  {
14  Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
15  switch (simulator.getSimulator())
16  {
17  case CSimulatorInfo::P3D: return m_distributorsP3d;
18  case CSimulatorInfo::FG: return m_distributorsFG;
19  case CSimulatorInfo::XPLANE: return m_distributorsXPlane;
20  case CSimulatorInfo::MSFS: return m_distributorsMsfs;
21  case CSimulatorInfo::MSFS2024: return m_distributorsMsfs2024;
22  default: Q_ASSERT_X(false, Q_FUNC_INFO, "Wrong simulator"); break;
23  }
24 
25  static const CDistributorList empty;
26  return empty;
27  }
28 
30  {
31  return this->getDistributors(simulator).frontOrDefault();
32  }
33 
35  const CSimulatorInfo &simulator)
36  {
37  Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
38  CDistributorList d(distributors);
39  d.sortAscendingByOrder(); // make sure we are sorted by order
40  m_lastUpdatedSimulator = simulator;
41 
42  switch (simulator.getSimulator())
43  {
44  case CSimulatorInfo::P3D: m_distributorsP3d = d; break;
45  case CSimulatorInfo::FG: m_distributorsFG = d; break;
46  case CSimulatorInfo::XPLANE: m_distributorsXPlane = d; break;
47  case CSimulatorInfo::MSFS: m_distributorsMsfs = d; break;
48  case CSimulatorInfo::MSFS2024: m_distributorsMsfs2024 = d; break;
49  default: Q_ASSERT_X(false, Q_FUNC_INFO, "Wrong simulator"); break;
50  }
51  }
52 
54  {
55  Q_UNUSED(i18n);
56  static const QString p("Preferences P3D %1, XP %2 FG %3");
57  return p.arg(m_distributorsP3d.size()).arg(m_distributorsXPlane.size()).arg(m_distributorsFG.size());
58  }
59 } // namespace swift::misc::simulation
size_type size() const
Returns number of elements in the sequence.
Definition: sequence.h:273
const_reference frontOrDefault() const
Access the first element, or a default-initialized value if the sequence is empty.
Definition: sequence.h:239
void sortAscendingByOrder()
Sort ascending.
Definition: orderablelist.h:24
Value object encapsulating information of software distributor.
Definition: distributor.h:33
Value object encapsulating a list of distributors.
CDistributor getFirstOrDefaultDistributor(const CSimulatorInfo &simulator) const
Get distributor for simulator.
const CDistributorList & getDistributors(const CSimulatorInfo &simulator) const
Get distributors.
void setDistributors(const CDistributorList &distributors, const CSimulatorInfo &simulator)
Get distributors.
QString convertToQString(bool i18n=false) const
Cast as QString.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
bool isSingleSimulator() const
Single simulator selected.
Simulator getSimulator() const
Simulator.
QString arg(Args &&... args) const const
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67