From fee2f8c5a089c14971fde1022d3aecfecf920053 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 8 Jan 2019 09:02:33 +0100 Subject: [PATCH] Ref T506, context menu for user view -> COM text messages --- src/blackgui/components/usercomponent.cpp | 5 +++-- src/blackgui/components/usercomponent.h | 5 ++++- src/blackgui/views/userview.cpp | 24 ++++++++++++++++++++++- src/blackgui/views/userview.h | 12 ++++++++++++ src/swiftguistandard/swiftguistdinit.cpp | 1 + 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/blackgui/components/usercomponent.cpp b/src/blackgui/components/usercomponent.cpp index 76ea5ca4d..fd172ef65 100644 --- a/src/blackgui/components/usercomponent.cpp +++ b/src/blackgui/components/usercomponent.cpp @@ -38,8 +38,9 @@ namespace BlackGui this->setCurrentIndex(0); this->tabBar()->setExpanding(false); this->tabBar()->setUsesScrollButtons(true); - connect(ui->tvp_AllUsers, &CUserView::modelDataChangedDigest, this, &CUserComponent::onCountChanged); - connect(ui->tvp_Clients, &CClientView::modelDataChangedDigest, this, &CUserComponent::onCountChanged); + connect(ui->tvp_AllUsers, &CUserView::modelDataChangedDigest, this, &CUserComponent::onCountChanged); + connect(ui->tvp_AllUsers, &CUserView::requestTextMessageWidget, this, &CUserComponent::requestTextMessageWidget); + connect(ui->tvp_Clients, &CClientView::modelDataChangedDigest, this, &CUserComponent::onCountChanged); connect(sGui->getIContextNetwork(), &IContextNetwork::connectionStatusChanged, this, &CUserComponent::onConnectionStatusChanged); connect(&m_updateTimer, &QTimer::timeout, this, &CUserComponent::update); this->onSettingsChanged(); diff --git a/src/blackgui/components/usercomponent.h b/src/blackgui/components/usercomponent.h index 004f7560c..9c03e220e 100644 --- a/src/blackgui/components/usercomponent.h +++ b/src/blackgui/components/usercomponent.h @@ -48,10 +48,13 @@ namespace BlackGui //! Number of users int countUsers() const; - public slots: //! Update users void update(); + signals: + //! Request a text message + void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign); + private: //! Number of elements changed void onCountChanged(int count, bool withFilter); diff --git a/src/blackgui/views/userview.cpp b/src/blackgui/views/userview.cpp index 40d0f6832..22f03b008 100644 --- a/src/blackgui/views/userview.cpp +++ b/src/blackgui/views/userview.cpp @@ -7,13 +7,15 @@ * contained in the LICENSE file. */ -#include "blackgui/models/userlistmodel.h" #include "blackgui/views/userview.h" +#include "blackgui/models/userlistmodel.h" #include using namespace BlackMisc; +using namespace BlackMisc::Network; using namespace BlackGui::Models; +using namespace BlackGui::Menus; namespace BlackGui { @@ -29,5 +31,25 @@ namespace BlackGui Q_ASSERT(m_model); m_model->setUserMode(userMode); } + + void CUserView::customMenu(CMenuActions &menuActions) + { + if (this->hasSelection()) + { + const CUser user(this->selectedObject()); + if (user.hasCallsign()) + { + menuActions.addMenuCom(); + menuActions.addAction(CIcons::appTextMessages16(), "Show text messages", CMenuAction::pathClientCom(), { this, &CUserView::requestTextMessage }); + } + } + } + + void CUserView::requestTextMessage() + { + const CUser user(this->selectedObject()); + if (!user.hasCallsign()) { return; } + emit this->requestTextMessageWidget(user.getCallsign()); + } } // ns } // ns diff --git a/src/blackgui/views/userview.h b/src/blackgui/views/userview.h index b63166e2a..3476396c0 100644 --- a/src/blackgui/views/userview.h +++ b/src/blackgui/views/userview.h @@ -33,6 +33,18 @@ namespace BlackGui //! Set user mode void setUserMode(Models::CUserListModel::UserMode userMode); + + signals: + //! Request a text message + void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign); + + protected: + //! \copydoc CViewBase::customMenu + virtual void customMenu(Menus::CMenuActions &menuActions) override; + + private: + //! Request text message for selected aircraft + void requestTextMessage(); }; } } diff --git a/src/swiftguistandard/swiftguistdinit.cpp b/src/swiftguistandard/swiftguistdinit.cpp index 4aa003722..8ab2cce82 100644 --- a/src/swiftguistandard/swiftguistdinit.cpp +++ b/src/swiftguistandard/swiftguistdinit.cpp @@ -262,6 +262,7 @@ void SwiftGuiStd::initGuiSignals() connect(ui->comp_MainInfoArea->getAtcStationComponent(), &CAtcStationComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab); connect(ui->comp_MainInfoArea->getMappingComponent(), &CMappingComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab); connect(ui->comp_MainInfoArea->getAircraftComponent(), &CAircraftComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab); + connect(ui->comp_MainInfoArea->getUserComponent(), &CUserComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab); // interpolation connect(ui->comp_MainInfoArea->getInterpolationComponent(), &CInterpolationComponent::requestRenderingRestrictionsWidget, [ = ]