swift
aircraftmodelview.h
Go to the documentation of this file.
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 #ifndef SWIFT_GUI_AIRCRAFTMODELVIEW_H
7 #define SWIFT_GUI_AIRCRAFTMODELVIEW_H
8 
9 #include <QBrush>
10 #include <QMetaType>
11 #include <QObject>
12 #include <QStringList>
13 #include <Qt>
14 
16 #include "gui/swiftguiexport.h"
22 #include "misc/statusmessage.h"
23 
24 class QDropEvent;
25 
26 namespace swift::misc::aviation
27 {
28  class CAircraftIcaoCode;
29  class CLivery;
30 } // namespace swift::misc::aviation
31 namespace swift::misc::simulation
32 {
33  class CAircraftModel;
34 }
35 namespace swift::gui
36 {
37  namespace filters
38  {
39  class CAircraftModelFilterDialog;
40  }
41  namespace menus
42  {
43  class CMenuActions;
44  }
45  namespace views
46  {
47  class CAircraftModelStatisticsDialog;
48  class CAircraftModelValidationDialog;
49 
51  class SWIFT_GUI_EXPORT CAircraftModelView : public COrderableViewWithDbObjects<models::CAircraftModelListModel>
52  {
53  Q_OBJECT
54 
55  public:
57  explicit CAircraftModelView(QWidget *parent = nullptr);
58 
60  void setAircraftModelMode(models::CAircraftModelListModel::AircraftModelMode mode);
61 
63  int applyToSelected(const swift::misc::aviation::CLivery &livery);
64 
66  int applyToSelected(const swift::misc::aviation::CAircraftIcaoCode &icao);
67 
69  int applyToSelected(const swift::misc::simulation::CDistributor &distributor);
70 
72  int applyToSelected(const swift::misc::CPropertyIndexVariantMap &vm);
73 
75  bool hasSelectedModelsToStash() const;
76 
78  void setAcceptedMetaTypeIds();
79 
81  void addFilterDialog();
82 
84  swift::gui::filters::CAircraftModelFilterDialog *getFilterDialog() const;
85 
87  int removeModelsWithModelString(const QStringList &modelStrings,
88  Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive);
89 
91  int removeModelsWithModelString(const swift::misc::simulation::CAircraftModelList &models,
92  Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive);
93 
95  int replaceOrAddModelsWithString(const swift::misc::simulation::CAircraftModelList &models,
96  Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive);
97 
99  void setHighlightModels(const swift::misc::simulation::CAircraftModelList &highlightModels);
100 
102  void setHighlightModelStrings(const QStringList &highlightModels);
103 
105  void setHighlightModelsForInvalidModels();
106 
108  void setHighlight(bool highlight);
109 
111  void setHighlightColor(const QBrush &brush);
112 
114  bool highlightModels() const;
115 
118  void setCorrespondingSimulator(const swift::misc::simulation::CSimulatorInfo &simulator,
119  const QString &simDir);
120 
122  void setValidationContextMenu(const bool enabled) { m_withValidationContextMenu = enabled; }
123 
124  signals:
127 
130 
133 
136 
139 
140  protected:
143  virtual void dropEvent(QDropEvent *event) override;
144 
147 
149  virtual void customMenu(menus::CMenuActions &menuActions) override;
150 
153  modifyLoadedJsonData(swift::misc::simulation::CAircraftModelList &models) const override;
154 
157  validateLoadedJsonData(const swift::misc::simulation::CAircraftModelList &models) const override;
158 
160  virtual void jsonLoadedAndModelUpdated(const swift::misc::simulation::CAircraftModelList &models) override;
162 
163  private:
165  void toggleHighlightInvalidModels();
166 
168  void stashingClearsSelection();
169 
171  void toggleHighlightStashedModels();
172 
174  void requestedStash();
175 
177  void requestTempDisable();
178 
180  void displayModelStatisticsDialog();
181 
183  void displayModelValidationDialog();
184 
185  bool m_stashingClearsSelection = true;
186  bool m_withValidationContextMenu = true;
187  CAircraftModelStatisticsDialog *m_statisticsDialog = nullptr;
188  CAircraftModelValidationDialog *m_fileValidationDialog = nullptr;
190  m_correspondingSimulator;
191  QString m_correspondingSimulatorDir;
192  };
193  } // namespace views
194 } // namespace swift::gui
195 
196 #endif // SWIFT_GUI_AIRCRAFTMODELVIEW_H
Bunch of CMenuAction objects.
Definition: menuaction.h:384
void setValidationContextMenu(const bool enabled)
Enable the validation context menu.
void requestTempDisableModelsForMatching(const swift::misc::simulation::CAircraftModelList &models)
Temp.disable model.
void jsonModelsForSimulatorLoaded(const swift::misc::simulation::CSimulatorInfo &simulator)
Models for simulator loaded (JSON)
void toggledHighlightStashedModels()
Highlight stashed models has been toggled.
void requestHandlingOfStashDrop(const swift::misc::aviation::CAirlineIcaoCode &airlineIcao)
Request further handling of drops I cannot handle on my own.
void requestStash(const swift::misc::simulation::CAircraftModelList &models)
Request to stash if applicable.
Base class for views with DB objects also orderable (based on swift::misc::IOrderableList )
Definition: viewdbobjects.h:79
Specialized value object compliant map for variants, based on indexes.
Streamable status message, e.g.
Value object for ICAO classification.
Value object for ICAO classification.
Value object encapsulating information about an airpot.
Definition: livery.h:29
Value object encapsulating a list of aircraft models.
Value object encapsulating information of software distributor.
Definition: distributor.h:33
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
GUI related classes.
#define SWIFT_GUI_EXPORT
Export a class or function from the library.