Ref T268, aircraft situation view allows to "request elevation"

This commit is contained in:
Klaus Basan
2018-07-09 22:10:48 +02:00
parent d489bed370
commit f06482b554
3 changed files with 49 additions and 6 deletions

View File

@@ -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

View File

@@ -26,9 +26,28 @@ namespace BlackGui
//! Aircraft situations view
class BLACKGUI_EXPORT CAircraftSituationView : public CViewWithTimestampWithOffsetObjects<Models::CAircraftSituationListModel, BlackMisc::Aviation::CAircraftSituationList, BlackMisc::Aviation::CAircraftSituation>
{
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

View File

@@ -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();