swift
callsignset.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 <QString>
8 
9 #include "misc/containerbase.h"
10 
11 SWIFT_DEFINE_COLLECTION_MIXINS(swift::misc::aviation, CCallsign, CCallsignSet)
12 
13 namespace swift::misc::aviation
14 {
16 
17  CCallsignSet::CCallsignSet(const QStringList &callsigns, CCallsign::TypeHint typeHint)
18  {
19  for (const QString &c : callsigns)
20  {
21  if (c.isEmpty()) { continue; }
22  const CCallsign cs = CCallsign(c, typeHint);
23  this->push_back(cs);
24  }
25  }
26 
28  {
29  if (callsign.isEmpty()) { return; }
30  this->push_back(callsign);
31  }
32 
34 
35  bool CCallsignSet::containsCallsign(const QString &callsign) const { return this->contains(CCallsign(callsign)); }
36 
37  QStringList CCallsignSet::getCallsignStrings(bool sorted) const
38  {
39  QStringList callsigns;
40  for (const CCallsign &cs : *this) { callsigns.push_back(cs.asString()); }
41  if (sorted) { callsigns.sort(); }
42  return callsigns;
43  }
44 
45  QString CCallsignSet::getCallsignsAsString(bool sorted, const QString &separator) const
46  {
47  if (this->isEmpty()) { return {}; }
48  return this->getCallsignStrings(sorted).join(separator);
49  }
50 
52  {
53  qRegisterMetaType<swift::misc::CSequence<CCallsign>>();
54  qDBusRegisterMetaType<swift::misc::CSequence<CCallsign>>();
55  qRegisterMetaType<swift::misc::CCollection<CCallsign>>();
56  qDBusRegisterMetaType<swift::misc::CCollection<CCallsign>>();
57  qRegisterMetaType<CCallsignSet>();
58  qDBusRegisterMetaType<CCallsignSet>();
59  registerMetaValueType<CCallsignSet>();
60  }
61 } // namespace swift::misc::aviation
bool isEmpty() const
Synonym for empty.
Definition: collection.h:191
iterator push_back(const CCallsign &value)
Synonym for insert.
Definition: collection.h:238
bool contains(const T &object) const
Return true if there is an element equal to given object. Uses the most efficient implementation avai...
Definition: range.h:109
Value object encapsulating information of a callsign.
Definition: callsign.h:30
const QString & asString() const
Get callsign (normalized)
Definition: callsign.h:96
TypeHint
Representing what.
Definition: callsign.h:44
bool isEmpty() const
Is empty?
Definition: callsign.h:63
static void registerMetadata()
Register metadata.
Definition: callsignset.cpp:51
QStringList getCallsignStrings(bool sorted=false) const
The callsign strings.
Definition: callsignset.cpp:37
QString getCallsignsAsString(bool sorted=false, const QString &separator=", ") const
Callsigns as string.
Definition: callsignset.cpp:45
CCallsignSet()
Default constructor.
Definition: callsignset.cpp:15
bool containsCallsign(const QString &callsign) const
Contains by string.
Definition: callsignset.cpp:35
#define SWIFT_DEFINE_COLLECTION_MIXINS(Namespace, T, Set)
Explicit template definition of mixins for a CCollection subclass.
Definition: collection.h:63