swift
simbriefdata.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QStringBuilder>
7 
8 #include "misc/logcategories.h"
9 
10 using namespace swift::misc::network;
11 
12 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::misc::aviation, CSimBriefData)
13 
14 namespace swift::misc::aviation
15 {
16  const QStringList &CSimBriefData::getLogCategories()
17  {
18  static const QStringList cats { CLogCategories::flightPlan() };
19  return cats;
20  }
21 
22  CSimBriefData::CSimBriefData() : m_url("https://www.simbrief.com/api/xml.fetcher.php") {}
23 
24  CSimBriefData::CSimBriefData(const QString &url, const QString &username) : m_url(url), m_username(username) {}
25 
27  {
28  CUrl url(this->getUrl());
29  if (!m_username.isEmpty()) { url.setQuery("username=" % m_username); }
30  return url;
31  }
32 
34  {
35  if (index.isMyself()) { return QVariant::fromValue(*this); }
36  const ColumnIndex i = index.frontCasted<ColumnIndex>();
37  switch (i)
38  {
39  case IndexUrl: return QVariant::fromValue(m_url);
40  case IndexUsername: return QVariant::fromValue(m_username);
41  default: return CValueObject::propertyByIndex(index);
42  }
43  }
44 
45  void CSimBriefData::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
46  {
47  if (index.isMyself())
48  {
49  (*this) = variant.value<CSimBriefData>();
50  return;
51  }
52  const ColumnIndex i = index.frontCasted<ColumnIndex>();
53  switch (i)
54  {
55  case IndexUrl: m_url = variant.toString(); break;
56  case IndexUsername: m_username = variant.toString(); break;
57  default: CValueObject::setPropertyByIndex(index, variant); break;
58  }
59  }
60 
61  QString CSimBriefData::convertToQString(bool i18n) const
62  {
63  Q_UNUSED(i18n);
64  return m_username % " " % m_url;
65  }
66 } // namespace swift::misc::aviation
static const QString & flightPlan()
Flight plan.
Definition: logcategories.h:80
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.
Value object for a flight plan.
Definition: simbriefdata.h:24
network::CUrl getUrlAndUsername() const
Get URL plus username.
QString convertToQString(bool i18n=false) const
Cast as QString.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
const QString & getUrl() const
Get URL.
Definition: simbriefdata.h:49
CSimBriefData()
Default constructor.
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
Value object encapsulating information of a location, kind of simplified CValueObject compliant versi...
Definition: url.h:27
void setQuery(const QString &query)
Set query.
Definition: url.cpp:58
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67