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  CTextMessageSettings::CTextMessageSettings() {}
18 
19  bool CTextMessageSettings::popupPrivateMessages() const
20  {
21  return this->getPopupAllMessages() || m_popupPrivateMessages;
22  }
23 
24  bool CTextMessageSettings::popupSupervisorMessages() const
25  {
26  return this->getPopupAllMessages() || m_popupSupervisorMessages;
27  }
28 
29  bool CTextMessageSettings::popupFrequencyMessages() const
30  {
31  return this->getPopupAllMessages() || m_popupFrequencyMessages;
32  }
33 
34  bool CTextMessageSettings::popupSelcalMessages() const
35  {
36  return this->getPopupAllMessages() || m_popupSelcalMessages;
37  }
38 
39  void CTextMessageSettings::disableAllPopups()
40  {
41  m_popupPrivateMessages = false;
42  m_popupSupervisorMessages = false;
43  m_popupFrequencyMessages = false;
44  m_popupAllMessages = false;
45  m_popupSelcalMessages = false;
46  m_focus = false;
47  }
48 
49  bool CTextMessageSettings::popup(const CTextMessage &textMessage) const
50  {
51  if (this->getPopupAllMessages()) { return true; }
52  if (textMessage.isPrivateMessage() && this->popupPrivateMessages()) { return true; }
53  if (textMessage.isSupervisorMessage() && this->popupSupervisorMessages()) { return true; }
54  if (textMessage.isSelcalMessage() && this->popupSelcalMessages()) { return true; }
55  return false;
56  }
57 
58  bool CTextMessageSettings::popup(const CTextMessage &textMessage, const CSimulatedAircraft &ownAircraft) const
59  {
60  if (this->popup(textMessage)) { return true; }
61  if (textMessage.isRadioMessage())
62  {
63  if (!this->popupFrequencyMessages()) { return false; }
64  if (ownAircraft.hasComActiveFrequency(textMessage.getFrequency())) { return true; }
65  }
66  return false;
67  }
68 
69  QString CTextMessageSettings::convertToQString(bool i18n) const
70  {
71  Q_UNUSED(i18n);
72  return QStringLiteral("Private: %1 supervisor: %2 frequency: %3 all: %4 focus: %5 latest 1st: %6")
73  .arg(boolToOnOff(this->getPopupPrivateMessages()), boolToOnOff(this->getPopupSupervisorMessages()),
74  boolToOnOff(this->getPopupFrequencyMessages()), boolToOnOff(this->getPopupAllMessages()),
75  boolToYesNo(this->focusOverlayWindow()), boolToYesNo(this->isLatestFirst()));
76  }
77 
78  QVariant CTextMessageSettings::propertyByIndex(CPropertyIndexRef index) const
79  {
80  if (index.isMyself()) { return QVariant::fromValue(*this); }
81  const ColumnIndex i = index.frontCasted<ColumnIndex>();
82  switch (i)
83  {
84  case IndexPopupAllMessages: return QVariant::fromValue(this->getPopupAllMessages());
85  case IndexPopupFrequencyMessages: return QVariant::fromValue(this->popupFrequencyMessages());
86  case IndexPopupPrivateMessages: return QVariant::fromValue(this->popupPrivateMessages());
87  case IndexPopupSupervisorMessages: return QVariant::fromValue(this->popupSupervisorMessages());
88  case IndexPopupSelcalMessages: return QVariant::fromValue(this->popupSelcalMessages());
89  case IndexStyle: return QVariant::fromValue(this->getStyleSheet());
90  case IndexLatestFirst: return QVariant::fromValue(this->isLatestFirst());
91  case IndexFocus: return QVariant::fromValue(this->focusOverlayWindow());
92  default: return CValueObject::propertyByIndex(index);
93  }
94  }
95 
96  void CTextMessageSettings::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
97  {
98  if (index.isMyself())
99  {
100  (*this) = variant.value<CTextMessageSettings>();
101  return;
102  }
103  const ColumnIndex i = index.frontCasted<ColumnIndex>();
104  switch (i)
105  {
106  case IndexPopupAllMessages: this->setPopupAllMessages(variant.toBool()); break;
107  case IndexPopupFrequencyMessages: this->setPopupFrequencyMessages(variant.toBool()); break;
108  case IndexPopupSupervisorMessages: this->setSupervisorMessages(variant.toBool()); break;
109  case IndexPopupPrivateMessages: this->setPopupPrivateMessages(variant.toBool()); break;
110  case IndexPopupSelcalMessages: this->setPopupSelcalMessages(variant.toBool()); break;
111  case IndexFocus: this->setFocusOverlayWindows(variant.toBool()); break;
112  case IndexLatestFirst: this->setLatestFirst(variant.toBool()); break;
113  case IndexStyle: this->setStyleSheet(variant.toString()); break;
114  default: CValueObject::setPropertyByIndex(index, variant); break;
115  }
116  }
117 } // 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:160
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition: mixinindex.h:167
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.
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67