Ref T506, context menu for user view -> COM text messages

This commit is contained in:
Klaus Basan
2019-01-08 09:02:33 +01:00
committed by Mat Sutcliffe
parent 33a3984588
commit fee2f8c5a0
5 changed files with 43 additions and 4 deletions

View File

@@ -38,8 +38,9 @@ namespace BlackGui
this->setCurrentIndex(0); this->setCurrentIndex(0);
this->tabBar()->setExpanding(false); this->tabBar()->setExpanding(false);
this->tabBar()->setUsesScrollButtons(true); this->tabBar()->setUsesScrollButtons(true);
connect(ui->tvp_AllUsers, &CUserView::modelDataChangedDigest, this, &CUserComponent::onCountChanged); connect(ui->tvp_AllUsers, &CUserView::modelDataChangedDigest, this, &CUserComponent::onCountChanged);
connect(ui->tvp_Clients, &CClientView::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(sGui->getIContextNetwork(), &IContextNetwork::connectionStatusChanged, this, &CUserComponent::onConnectionStatusChanged);
connect(&m_updateTimer, &QTimer::timeout, this, &CUserComponent::update); connect(&m_updateTimer, &QTimer::timeout, this, &CUserComponent::update);
this->onSettingsChanged(); this->onSettingsChanged();

View File

@@ -48,10 +48,13 @@ namespace BlackGui
//! Number of users //! Number of users
int countUsers() const; int countUsers() const;
public slots:
//! Update users //! Update users
void update(); void update();
signals:
//! Request a text message
void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign);
private: private:
//! Number of elements changed //! Number of elements changed
void onCountChanged(int count, bool withFilter); void onCountChanged(int count, bool withFilter);

View File

@@ -7,13 +7,15 @@
* contained in the LICENSE file. * contained in the LICENSE file.
*/ */
#include "blackgui/models/userlistmodel.h"
#include "blackgui/views/userview.h" #include "blackgui/views/userview.h"
#include "blackgui/models/userlistmodel.h"
#include <QtGlobal> #include <QtGlobal>
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Network;
using namespace BlackGui::Models; using namespace BlackGui::Models;
using namespace BlackGui::Menus;
namespace BlackGui namespace BlackGui
{ {
@@ -29,5 +31,25 @@ namespace BlackGui
Q_ASSERT(m_model); Q_ASSERT(m_model);
m_model->setUserMode(userMode); 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
} // ns } // ns

View File

@@ -33,6 +33,18 @@ namespace BlackGui
//! Set user mode //! Set user mode
void setUserMode(Models::CUserListModel::UserMode userMode); 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();
}; };
} }
} }

View File

@@ -262,6 +262,7 @@ void SwiftGuiStd::initGuiSignals()
connect(ui->comp_MainInfoArea->getAtcStationComponent(), &CAtcStationComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab); 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->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->getAircraftComponent(), &CAircraftComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab);
connect(ui->comp_MainInfoArea->getUserComponent(), &CUserComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab);
// interpolation // interpolation
connect(ui->comp_MainInfoArea->getInterpolationComponent(), &CInterpolationComponent::requestRenderingRestrictionsWidget, [ = ] connect(ui->comp_MainInfoArea->getInterpolationComponent(), &CInterpolationComponent::requestRenderingRestrictionsWidget, [ = ]