Ref T506, partially reverted QDockWidget overlay messages

* for some reasons overlay message do not work with COverlayMessagesDockWidget when floating
* so using COverlayMessagesFrame for ATC/Cockpit again
* COverlayMessagesFrame does not have the issue with floating
This commit is contained in:
Klaus Basan
2019-01-07 20:26:13 +01:00
committed by Mat Sutcliffe
parent dda468b899
commit 8bb1915d97
6 changed files with 10 additions and 53 deletions

View File

@@ -58,7 +58,7 @@ namespace BlackGui
namespace Components namespace Components
{ {
CAtcStationComponent::CAtcStationComponent(QWidget *parent) : CAtcStationComponent::CAtcStationComponent(QWidget *parent) :
QFrame(parent), COverlayMessagesFrame(parent),
CIdentifiable(this), CIdentifiable(this),
ui(new Ui::CAtcStationComponent) ui(new Ui::CAtcStationComponent)
{ {
@@ -70,7 +70,7 @@ namespace BlackGui
CUpperCaseValidator *ucv = new CUpperCaseValidator(ui->le_AtcStationsOnlineMetar); CUpperCaseValidator *ucv = new CUpperCaseValidator(ui->le_AtcStationsOnlineMetar);
ui->le_AtcStationsOnlineMetar->setValidator(ucv); ui->le_AtcStationsOnlineMetar->setValidator(ucv);
this->deferredActivate(this); this->activateTextMessages(true);
// some icons // some icons
ui->tb_AtcStationsAtisReload->setIcon(CIcons::atis()); ui->tb_AtcStationsAtisReload->setIcon(CIcons::atis());
@@ -469,7 +469,7 @@ namespace BlackGui
void CAtcStationComponent::showOverlayInlineTextMessage() void CAtcStationComponent::showOverlayInlineTextMessage()
{ {
CEnableForDockWidgetInfoArea::showOverlayInlineTextMessage(TextMessagesCom1); COverlayMessagesFrame::showOverlayInlineTextMessage(TextMessagesCom1);
} }
void CAtcStationComponent::onDetailsToggled(bool checked) void CAtcStationComponent::onDetailsToggled(bool checked)

View File

@@ -15,6 +15,7 @@
#include "blackgui/components/enablefordockwidgetinfoarea.h" #include "blackgui/components/enablefordockwidgetinfoarea.h"
#include "blackgui/settings/viewupdatesettings.h" #include "blackgui/settings/viewupdatesettings.h"
#include "blackgui/settings/atcstationssettings.h" #include "blackgui/settings/atcstationssettings.h"
#include "blackgui/overlaymessagesframe.h"
#include "blackgui/blackguiexport.h" #include "blackgui/blackguiexport.h"
#include "blackcore/network.h" #include "blackcore/network.h"
#include "blackmisc/aviation/atcstation.h" #include "blackmisc/aviation/atcstation.h"
@@ -44,7 +45,7 @@ namespace BlackGui
{ {
//! ATC stations component //! ATC stations component
class BLACKGUI_EXPORT CAtcStationComponent : class BLACKGUI_EXPORT CAtcStationComponent :
public QFrame, public COverlayMessagesFrame,
public CEnableForDockWidgetInfoArea, public CEnableForDockWidgetInfoArea,
public BlackMisc::CIdentifiable public BlackMisc::CIdentifiable
{ {

View File

@@ -22,13 +22,13 @@ namespace BlackGui
namespace Components namespace Components
{ {
CCockpitComponent::CCockpitComponent(QWidget *parent) : CCockpitComponent::CCockpitComponent(QWidget *parent) :
QFrame(parent), COverlayMessagesFrame(parent),
CEnableForDockWidgetInfoArea(), CEnableForDockWidgetInfoArea(),
ui(new Ui::CCockpitComponent) ui(new Ui::CCockpitComponent)
{ {
ui->setupUi(this); ui->setupUi(this);
m_minHeightInfoArea = ui->comp_CockpitInfoArea->minimumHeight(); m_minHeightInfoArea = ui->comp_CockpitInfoArea->minimumHeight();
this->deferredActivate(this); this->activateTextMessages(true);
connect(ui->wip_CockpitComPanelShowHideBar, &CShowHideBar::toggleShowHide, this, &CCockpitComponent::onToggleShowHideDetails); connect(ui->wip_CockpitComPanelShowHideBar, &CShowHideBar::toggleShowHide, this, &CCockpitComponent::onToggleShowHideDetails);
connect(ui->comp_CockpitComComponent, &CCockpitComComponent::requestCom1TextMessage, this, &CCockpitComponent::onRequestTextMessageCom1); connect(ui->comp_CockpitComComponent, &CCockpitComComponent::requestCom1TextMessage, this, &CCockpitComponent::onRequestTextMessageCom1);
@@ -123,7 +123,7 @@ namespace BlackGui
void CCockpitComponent::mouseDoubleClickEvent(QMouseEvent *event) void CCockpitComponent::mouseDoubleClickEvent(QMouseEvent *event)
{ {
if (event) { this->showOverlayInlineTextMessage(TextMessagesAll); } if (event) { this->showOverlayInlineTextMessage(TextMessagesAll); }
QWidget::mouseDoubleClickEvent(event); COverlayMessagesFrame::mouseDoubleClickEvent(event);
} }
void CCockpitComponent::onRequestTextMessageCom1() void CCockpitComponent::onRequestTextMessageCom1()

View File

@@ -13,6 +13,7 @@
#define BLACKGUI_COMPONENTS_COCKPITCOMPONENT_H #define BLACKGUI_COMPONENTS_COCKPITCOMPONENT_H
#include "blackgui/components/enablefordockwidgetinfoarea.h" #include "blackgui/components/enablefordockwidgetinfoarea.h"
#include "blackgui/overlaymessagesframe.h"
#include "blackgui/blackguiexport.h" #include "blackgui/blackguiexport.h"
#include <QFrame> #include <QFrame>
@@ -29,7 +30,7 @@ namespace BlackGui
{ {
//! Cockpit component: COM unit, show / hide bar, voice rooms //! Cockpit component: COM unit, show / hide bar, voice rooms
class BLACKGUI_EXPORT CCockpitComponent : class BLACKGUI_EXPORT CCockpitComponent :
public QFrame, public COverlayMessagesFrame,
public CEnableForDockWidgetInfoArea public CEnableForDockWidgetInfoArea
{ {
Q_OBJECT Q_OBJECT

View File

@@ -34,36 +34,6 @@ namespace BlackGui
m_parentDockableInfoArea = parentInfoArea; m_parentDockableInfoArea = parentInfoArea;
} }
void CEnableForDockWidgetInfoArea::deferredActivate(QObject *relatedObject, int delayMs)
{
if (!relatedObject) { return; }
QPointer<QObject> myself(relatedObject);
QTimer::singleShot(delayMs, relatedObject, [ = ]
{
if (myself) { this->activateTextMessages(true); }
});
}
void CEnableForDockWidgetInfoArea::initOverlayMessages(QSize inner)
{
if (m_parentDockableInfoArea) { m_parentDockableInfoArea->initOverlayMessages(inner); }
}
void CEnableForDockWidgetInfoArea::activateTextMessages(bool activate)
{
if (m_parentDockableInfoArea) { m_parentDockableInfoArea->activateTextMessages(activate); }
}
void CEnableForDockWidgetInfoArea::showOverlayInlineTextMessage(TextMessageTab tab)
{
if (m_parentDockableInfoArea) { m_parentDockableInfoArea->showOverlayInlineTextMessage(tab); }
}
void CEnableForDockWidgetInfoArea::showOverlayInlineTextMessage(const CCallsign &callsign)
{
if (m_parentDockableInfoArea) { m_parentDockableInfoArea->showOverlayInlineTextMessage(callsign); }
}
bool CEnableForDockWidgetInfoArea::setParentDockWidgetInfoArea(CDockWidgetInfoArea *parentDockableWidget) bool CEnableForDockWidgetInfoArea::setParentDockWidgetInfoArea(CDockWidgetInfoArea *parentDockableWidget)
{ {
// sanity check // sanity check

View File

@@ -68,21 +68,6 @@ namespace BlackGui
//! Destructor //! Destructor
virtual ~CEnableForDockWidgetInfoArea() {} virtual ~CEnableForDockWidgetInfoArea() {}
//! Deferred activation, as dockwidget is not directly initalized
void deferredActivate(QObject *relatedObject, int delayMs = 2500);
//! \copydoc BlackGui::COverlayMessages::initOverlayMessages
void initOverlayMessages(QSize inner = {});
//! \copydoc BlackGui::COverlayMessages::showKillButton
void activateTextMessages(bool activate);
//! \copydoc BlackGui::COverlayMessages::showOverlayImage
void showOverlayInlineTextMessage(Components::TextMessageTab tab);
//! \copydoc BlackGui::COverlayMessages::showOverlayImage
void showOverlayInlineTextMessage(const BlackMisc::Aviation::CCallsign &callsign);
private: private:
CDockWidgetInfoArea *m_parentDockableInfoArea = nullptr; //!< my parent dockable widget CDockWidgetInfoArea *m_parentDockableInfoArea = nullptr; //!< my parent dockable widget
BlackMisc::CConnectionGuard m_connections; BlackMisc::CConnectionGuard m_connections;