swift
textmessagesettings.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 
4 #include "textmessagesettings.h"
5 
8 
9 using namespace swift::misc;
10 using namespace swift::misc::network;
11 using namespace swift::misc::simulation;
12 
13 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::gui::settings, CTextMessageSettings)
14 
15 namespace swift::gui::settings
16 {
17  bool CTextMessageSettings::popupPrivateMessages() const
18  {
19  return this->getPopupAllMessages() || m_popupPrivateMessages;
20  }
21 
22  bool CTextMessageSettings::popupSupervisorMessages() const
23  {
24  return this->getPopupAllMessages() || m_popupSupervisorMessages;
25  }
26 
27  bool CTextMessageSettings::popupFrequencyMessages() const
28  {
29  return this->getPopupAllMessages() || m_popupFrequencyMessages;
30  }
31 
32  bool CTextMessageSettings::popupSelcalMessages() const
33  {
34  return this->getPopupAllMessages() || m_popupSelcalMessages;
35  }
36 
37  void CTextMessageSettings::disableAllPopups()
38  {
39  m_popupPrivateMessages = false;
40  m_popupSupervisorMessages = false;
41  m_popupFrequencyMessages = false;
42  m_popupAllMessages = false;
43  m_popupSelcalMessages = false;
44  m_focus = false;
45  }
46 
47  bool CTextMessageSettings::popup(const CTextMessage &textMessage) const
48  {
49  if (this->getPopupAllMessages()) { return true; }
50  if (textMessage.isPrivateMessage() && this->popupPrivateMessages()) { return true; }
51  if (textMessage.isSupervisorMessage() && this->popupSupervisorMessages()) { return true; }
52  if (textMessage.isSelcalMessage() && this->popupSelcalMessages()) { return true; }
53  return false;
54  }
55 
56  bool CTextMessageSettings::popup(const CTextMessage &textMessage, const CSimulatedAircraft &ownAircraft) const
57  {
58  if (this->popup(textMessage)) { return true; }
59  if (textMessage.isRadioMessage())
60  {
61  if (!this->popupFrequencyMessages()) { return false; }
62  if (ownAircraft.hasComActiveFrequency(textMessage.getFrequency())) { return true; }
63  }
64  return false;
65  }
66 
67  QString CTextMessageSettings::convertToQString(bool i18n) const
68  {
69  Q_UNUSED(i18n);
70  return QStringLiteral("Private: %1 supervisor: %2 frequency: %3 all: %4 focus: %5 latest 1st: %6")
71  .arg(boolToOnOff(this->getPopupPrivateMessages()), boolToOnOff(this->getPopupSupervisorMessages()),
72  boolToOnOff(this->getPopupFrequencyMessages()), boolToOnOff(this->getPopupAllMessages()),
73  boolToYesNo(this->focusOverlayWindow()), boolToYesNo(this->isLatestFirst()));
74  }
75 
76  QVariant CTextMessageSettings::propertyByIndex(CPropertyIndexRef index) const
77  {
78  if (index.isMyself()) { return QVariant::fromValue(*this); }
79  const auto i = index.frontCasted<ColumnIndex>();
80  switch (i)
81  {
82  case IndexPopupAllMessages: return QVariant::fromValue(this->getPopupAllMessages());
83  case IndexPopupFrequencyMessages: return QVariant::fromValue(this->popupFrequencyMessages());
84  case IndexPopupPrivateMessages: return QVariant::fromValue(this->popupPrivateMessages());
85  case IndexPopupSupervisorMessages: return QVariant::fromValue(this->popupSupervisorMessages());
86  case IndexPopupSelcalMessages: return QVariant::fromValue(this->popupSelcalMessages());
87  case IndexStyle: return QVariant::fromValue(this->getStyleSheet());
88  case IndexLatestFirst: return QVariant::fromValue(this->isLatestFirst());
89  case IndexFocus: return QVariant::fromValue(this->focusOverlayWindow());
90  default: return CValueObject::propertyByIndex(index);
91  }
92  }
93 
94  void CTextMessageSettings::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
95  {
96  if (index.isMyself())
97  {
98  (*this) = variant.value<CTextMessageSettings>();
99  return;
100  }
101  const auto i = index.frontCasted<ColumnIndex>();
102  switch (i)
103  {
104  case IndexPopupAllMessages: this->setPopupAllMessages(variant.toBool()); break;
105  case IndexPopupFrequencyMessages: this->setPopupFrequencyMessages(variant.toBool()); break;
106  case IndexPopupSupervisorMessages: this->setSupervisorMessages(variant.toBool()); break;
107  case IndexPopupPrivateMessages: this->setPopupPrivateMessages(variant.toBool()); break;
108  case IndexPopupSelcalMessages: this->setPopupSelcalMessages(variant.toBool()); break;
109  case IndexFocus: this->setFocusOverlayWindows(variant.toBool()); break;
110  case IndexLatestFirst: this->setLatestFirst(variant.toBool()); break;
111  case IndexStyle: this->setStyleSheet(variant.toString()); break;
112  default: CValueObject::setPropertyByIndex(index, variant); break;
113  }
114  }
115 } // namespace swift::gui::settings
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.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: mixinindex.h:158
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition: mixinindex.h:165
Value object encapsulating information of a text message.
Definition: textmessage.h:31
bool isPrivateMessage() const
Is private message?
Definition: textmessage.cpp:53
bool isRadioMessage() const
Is radio message?
const physical_quantities::CFrequency & getFrequency() const
Get frequency.
Definition: textmessage.h:96
bool isSelcalMessage() const
Is this a text message encapsulating a SELCAL.
bool isSupervisorMessage() const
Supervisor message?
Definition: textmessage.cpp:58
Comprehensive information of an aircraft.
bool hasComActiveFrequency(const physical_quantities::CFrequency &comFrequency) const
Is comFrequency selected in COM1 or COM2 as active frequency (with 5 kHz spacing for ....
Free functions in swift::misc.
SWIFT_MISC_EXPORT const QString & boolToOnOff(bool v)
Bool to on/off.
SWIFT_MISC_EXPORT const QString & boolToYesNo(bool v)
Bool to yes/no.
QVariant fromValue(T &&value)
bool toBool() const const
QString toString() const const
T value() const &const
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67