Ref T447, info area

* force floating windows on top "allFloatingOnTop()"
* slots -> normal functions
* use BLACK_VERIFY to avoid "shutdown" in release build, possible reason for Ref T334
This commit is contained in:
Klaus Basan
2018-12-11 09:04:53 +01:00
parent 08495a7854
commit 86b8fd03be
4 changed files with 39 additions and 28 deletions

View File

@@ -183,17 +183,17 @@ namespace BlackGui
const InfoArea area = static_cast<InfoArea>(areaIndex);
switch (area)
{
case InfoAreaCockpit: return CIcons::appCockpit16();
case InfoAreaUsers: return CIcons::appUsers16();
case InfoAreaWeather: return CIcons::appWeather16();
case InfoAreaAtc: return CIcons::appAtc16();
case InfoAreaAircraft: return CIcons::appAircraft16();
case InfoAreaSettings: return CIcons::appSettings16();
case InfoAreaCockpit: return CIcons::appCockpit16();
case InfoAreaUsers: return CIcons::appUsers16();
case InfoAreaWeather: return CIcons::appWeather16();
case InfoAreaAtc: return CIcons::appAtc16();
case InfoAreaAircraft: return CIcons::appAircraft16();
case InfoAreaSettings: return CIcons::appSettings16();
case InfoAreaFlightPlan: return CIcons::appFlightPlan16();
case InfoAreaTextMessages: return CIcons::appTextMessages16();
case InfoAreaSimulator: return CIcons::appSimulator16();
case InfoAreaMapping: return CIcons::appMappings16();
case InfoAreaLog: return CIcons::appLog16();
case InfoAreaSimulator: return CIcons::appSimulator16();
case InfoAreaMapping: return CIcons::appMappings16();
case InfoAreaLog: return CIcons::appLog16();
case InfoAreaTextMessages: return CIcons::appTextMessages16();
case InfoAreaInterpolation: return CIcons::appInterpolation16();
default: return CIcons::empty();
}

View File

@@ -113,7 +113,6 @@ namespace BlackGui
//! Display console
void displayConsole();
public slots:
//! Toggle floating of given area
void toggleFloating(InfoArea infoArea) { CInfoArea::toggleFloatingByIndex(static_cast<int>(infoArea)); }

View File

@@ -115,7 +115,7 @@ namespace BlackGui
{
const CDockWidgetInfoArea *dw = m_dockWidgetInfoAreas.at(i);
const QString t = dw->windowTitleBackup();
const QPixmap pm = indexToPixmap(i);
const QPixmap pm = this->indexToPixmap(i);
QAction *toggleFloatingMenuAction = new QAction(menu);
toggleFloatingMenuAction->setObjectName(QString(t).append("ToggleFloatingAction"));
toggleFloatingMenuAction->setIconText(t);
@@ -125,16 +125,16 @@ namespace BlackGui
toggleFloatingMenuAction->setChecked(!dw->isFloating());
subMenuToggleFloat->addAction(toggleFloatingMenuAction);
c = connect(toggleFloatingMenuAction, SIGNAL(toggled(bool)), signalMapperToggleFloating, SLOT(map()));
Q_ASSERT(c);
BLACK_VERIFY_X(c, Q_FUNC_INFO, "Cannot map floating action"); // do not make that shutdown reason in a release build
signalMapperToggleFloating->setMapping(toggleFloatingMenuAction, i);
}
// new syntax not yet possible because of overloaded signal
c = connect(signalMapperToggleFloating, SIGNAL(mapped(int)), this, SLOT(toggleFloatingByIndex(int)));
Q_ASSERT(c);
c = connect(signalMapperToggleFloating, static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped), this, &CInfoArea::toggleFloatingByIndex);
BLACK_VERIFY_X(c, Q_FUNC_INFO, "Cannot connect mapper"); // do not make that shutdown reason in a release build
menu->addMenu(subMenuDisplay);
menu->addMenu(subMenuToggleFloat);
if (c) { menu->addMenu(subMenuToggleFloat); }
menu->addMenu(subMenuResetPositions);
menu->addMenu(subMenuRestore);
@@ -339,11 +339,21 @@ namespace BlackGui
{
for (CDockWidgetInfoArea *dw : m_dockWidgetInfoAreas)
{
if (dw->isFloating()) continue;
if (dw->isFloating()) { continue; }
dw->toggleFloating();
}
}
void CInfoArea::allFloatingOnTop()
{
for (CDockWidgetInfoArea *dw : m_dockWidgetInfoAreas)
{
const bool f = dw->isFloating();
CGuiUtility::stayOnTop(f, dw);
if (f) { dw->show(); }
}
}
void CInfoArea::toggleFloatingWholeInfoArea()
{
this->setWholeInfoAreaFloating(!m_infoAreaFloating);

View File

@@ -93,17 +93,6 @@ namespace BlackGui
//! Docked area indexes
QList<int> getAreaIndexesDockedOrFloating(bool floating) const;
signals:
//! Tab bar changed
void changedInfoAreaTabBarIndex(int index);
//! Status of info area changed
void changedInfoAreaStatus(int currentTabIndex, QList<int> dockedAreas, QList<int> floatingAreas);
//! Whole info area floating
void changedWholeInfoAreaFloating(bool floating);
public slots:
//! Dock all widgets
void dockAllWidgets();
@@ -113,6 +102,9 @@ namespace BlackGui
//! All widgets floating
void floatAllWidgets();
//! All floating info areas on top
void allFloatingOnTop();
//! Toggle dock / floating of the whole info area
virtual void toggleFloatingWholeInfoArea();
@@ -158,6 +150,16 @@ namespace BlackGui
//! Display status messages in all info areas (according their state)
void displayStatusMessages(const BlackMisc::CStatusMessageList &statusMessages);
signals:
//! Tab bar changed
void changedInfoAreaTabBarIndex(int index);
//! Status of info area changed
void changedInfoAreaStatus(int currentTabIndex, QList<int> dockedAreas, QList<int> floatingAreas);
//! Whole info area floating
void changedWholeInfoAreaFloating(bool floating);
protected:
//! Constructor
explicit CInfoArea(QWidget *parent = nullptr);