swift
atcstationview.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 <QFlags>
7 #include <QtGlobal>
8 
9 #include "config/buildconfig.h"
10 #include "gui/menus/menuaction.h"
12 #include "misc/aviation/callsign.h"
13 #include "misc/icons.h"
14 
15 using namespace swift::config;
16 using namespace swift::misc;
17 using namespace swift::misc::aviation;
18 using namespace swift::gui::models;
19 using namespace swift::gui::menus;
20 
21 namespace swift::gui::views
22 {
23  CAtcStationView::CAtcStationView(QWidget *parent) : CViewWithCallsignObjects(parent)
24  {
25  this->standardInit(new CAtcStationListModel(CAtcStationListModel::StationsOnline, this));
27  }
28 
30  {
31  Q_ASSERT(m_model);
32  m_model->setStationMode(stationMode);
33  this->setSortIndicator();
34  }
35 
37  {
38  m_model->changedAtcStationConnectionStatus(station, added);
39 
40  // resize the first, rest will be resized with normal updates
41  if (this->rowCount() == 1) { this->fullResizeToContents(); }
42  }
43 
45  {
46  menuActions.addMenuCom();
47  if (CBuildConfig::isDebugBuild())
48  {
49  if (m_debugActions.isEmpty()) { m_debugActions = QList<QAction *>({ nullptr, nullptr }); }
50  m_debugActions[0] = menuActions.addAction(m_debugActions[0], CIcons::tableSheet16(),
51  "Test: 1k ATC online stations", CMenuAction::pathClientCom(),
52  { this, &CAtcStationView::emitTestRequest1kAtcOnlineDummies });
53  m_debugActions[1] = menuActions.addAction(m_debugActions[1], CIcons::tableSheet16(),
54  "Test: 3k ATC online stations", CMenuAction::pathClientCom(),
55  { this, &CAtcStationView::emitTestRequest3kAtcOnlineDummies });
56  }
57 
58  if (this->hasSelection())
59  {
60  if (m_actions.isEmpty()) { m_actions = QList<QAction *>({ nullptr, nullptr, nullptr }); }
61 
62  m_actions[0] =
63  menuActions.addAction(m_actions[0], CIcons::appCockpit16(), "Tune in COM1",
64  CMenuAction::pathClientCom(), { this, &CAtcStationView::tuneInAtcCom1 });
65  m_actions[1] =
66  menuActions.addAction(m_actions[1], CIcons::appCockpit16(), "Tune in COM2",
67  CMenuAction::pathClientCom(), { this, &CAtcStationView::tuneInAtcCom2 });
68  m_actions[2] =
69  menuActions.addAction(m_actions[2], CIcons::appTextMessages16(), "Show text messages",
70  CMenuAction::pathClientCom(), { this, &CAtcStationView::requestTextMessage });
71  }
72  CViewBase::customMenu(menuActions);
73  }
74 
75  void CAtcStationView::tuneInAtcCom1()
76  {
77  const CAtcStation s(this->selectedObject());
78  if (s.getCallsign().isEmpty()) { return; }
79  emit this->requestComFrequency(s.getFrequency(), CComSystem::Com1);
80  }
81 
82  void CAtcStationView::tuneInAtcCom2()
83  {
84  const CAtcStation s(this->selectedObject());
85  if (s.getCallsign().isEmpty()) { return; }
86  emit this->requestComFrequency(s.getFrequency(), CComSystem::Com2);
87  }
88 
89  void CAtcStationView::requestTextMessage()
90  {
91  const CAtcStation s(this->selectedObject());
92  if (s.getCallsign().isEmpty()) { return; }
93  emit this->requestTextMessageWidget(s.getCallsign());
94  }
95 } // namespace swift::gui::views
Bunch of CMenuAction objects.
Definition: menuaction.h:384
CMenuAction addMenuCom()
Add COM model menu.
Definition: menuaction.cpp:467
CMenuAction addAction(const CMenuAction &menuAction)
Add menu action.
Definition: menuaction.cpp:210
void setStationMode(swift::gui::models::CAtcStationListModel::AtcStationMode stationMode)
Set station mode.
virtual void customMenu(swift::gui::menus::CMenuActions &menuActions)
Method creating the menu.
void requestTextMessageWidget(const swift::misc::aviation::CCallsign &callsign)
Request a text message to.
void changedAtcStationConnectionStatus(const swift::misc::aviation::CAtcStation &station, bool added)
Used to quickly update single station (better response for the user)
void requestComFrequency(const swift::misc::physical_quantities::CFrequency &frequency, swift::misc::aviation::CComSystem::ComUnit unit)
Request COM frequency.
void standardInit(ModelClass *model=nullptr)
Standard initialization.
Definition: viewbase.cpp:572
ModelClass * m_model
corresponding model
Definition: viewbase.h:877
void setSortIndicator()
Set the search indicator based on model.
Definition: viewbase.cpp:562
virtual int rowCount() const
Elements in container.
Definition: viewbase.cpp:386
ObjectType selectedObject() const
Selected object (or default)
Definition: viewbase.cpp:307
virtual void customMenu(menus::CMenuActions &menuActions)
Method creating the menu.
Definition: viewbase.cpp:680
Menu m_menus
Default menu settings.
Definition: viewbase.h:603
virtual void fullResizeToContents()
Full resizing to content, might be slow.
@ MenuClear
allow clearing the view via menu
Definition: viewbase.h:120
@ MenuRefresh
allow refreshing the view via menu
Definition: viewbase.h:122
bool hasSelection() const
Selection (selected rows)
Base class for views with DB objects.
Value object encapsulating information about an ATC station.
Definition: atcstation.h:38
Models to be used with views, mainly QTableView.
Views, mainly QTableView.
Free functions in swift::misc.