From f06482b5543e4caa174cec5a34d25c913e15d4f7 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 9 Jul 2018 22:10:48 +0200 Subject: [PATCH] Ref T268, aircraft situation view allows to "request elevation" --- src/blackgui/views/aircraftsituationview.cpp | 24 ++++++++++++++++++++ src/blackgui/views/aircraftsituationview.h | 19 ++++++++++++++++ src/blackgui/views/viewbase.h | 12 +++++----- 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/blackgui/views/aircraftsituationview.cpp b/src/blackgui/views/aircraftsituationview.cpp index a933959f0..6c97b5310 100644 --- a/src/blackgui/views/aircraftsituationview.cpp +++ b/src/blackgui/views/aircraftsituationview.cpp @@ -9,7 +9,10 @@ #include "blackgui/views/aircraftsituationview.h" +using namespace BlackMisc; +using namespace BlackMisc::Aviation; using namespace BlackGui::Models; +using namespace BlackGui::Menus; namespace BlackGui { @@ -21,5 +24,26 @@ namespace BlackGui this->standardInit(new CAircraftSituationListModel(this)); this->setMenu(MenuDefault); } + + void CAircraftSituationView::setWithMenuRequestElevation(bool enable) + { + m_withMenuRequestElevation = enable; + this->setSingleSelection(); + } + + void CAircraftSituationView::customMenu(CMenuActions &menuActions) + { + if (m_withMenuRequestElevation && this->hasSingleSelectedRow()) + { + menuActions.addAction(CIcons::geoPosition16(), "Request elevation", CMenuAction::pathClientSimulation(), { this, &CAircraftSituationView::emitRequestElevationForSituation }); + } + } + + void CAircraftSituationView::emitRequestElevationForSituation() + { + if (!this->hasSingleSelectedRow()) { return; } + const CAircraftSituation situation = this->selectedObject(); + emit this->requestElevation(situation); + } } // ns } // ns diff --git a/src/blackgui/views/aircraftsituationview.h b/src/blackgui/views/aircraftsituationview.h index e364005ae..85d8a2bdd 100644 --- a/src/blackgui/views/aircraftsituationview.h +++ b/src/blackgui/views/aircraftsituationview.h @@ -26,9 +26,28 @@ namespace BlackGui //! Aircraft situations view class BLACKGUI_EXPORT CAircraftSituationView : public CViewWithTimestampWithOffsetObjects { + Q_OBJECT + public: //! Constructor explicit CAircraftSituationView(QWidget *parent = nullptr); + + //! Enable menu + void setWithMenuRequestElevation(bool enable); + + signals: + //! Request elevation + void requestElevation(const BlackMisc::Aviation::CAircraftSituation &situation); + + protected: + //! \copydoc CViewBase::customMenu + virtual void customMenu(Menus::CMenuActions &menuActions) override; + + private: + //! Request elevation + void emitRequestElevationForSituation(); + + bool m_withMenuRequestElevation = false; }; } // ns } // ns diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index be971f36e..620cd40eb 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -447,6 +447,12 @@ namespace BlackGui //! Settings have been changed void settingsChanged(); + //! \name Change selection modes @{ + void setMultiSelection(); + void setExtendedSelection(); + void setSingleSelection(); + //! @} + //! JSON directory //! \remark Default implementation, can be overridden with specifi implementation virtual void rememberLastJsonDirectory(const QString &selectedFileOrDir); @@ -537,12 +543,6 @@ namespace BlackGui virtual void ps_toggleHighlightDbData() {} private: - //! \name Change selection modes @{ - void setMultiSelection(); - void setExtendedSelection(); - void setSingleSelection(); - //! @} - //! Remove selected rows if enabled void removeSelectedRowsChecked();