refs #335, preparation for new cockpit

* allow nested info areas
* added cockpit info area
* fixed several finder methods to excluded nested info areas from child elements
* using QScopedPointer for ui
* placeholder GUI components for new cockpit
This commit is contained in:
Klaus Basan
2014-10-07 02:25:08 +02:00
committed by Roland Winklmeier
parent b0f01a3ec6
commit 9452ff10c9
14 changed files with 1149 additions and 104 deletions

View File

@@ -0,0 +1,38 @@
/* Copyright (C) 2013
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "cockpitcomcomponent.h"
#include "ui_cockpitcomcomponent.h"
#include "../stylesheetutility.h"
using namespace BlackGui;
namespace BlackGui
{
namespace Components
{
CCockpitComComponent::CCockpitComComponent(QWidget *parent) :
QFrame(parent),
CDockWidgetInfoAreaComponent(this),
ui(new Ui::CCockpitMainComponent)
{
ui->setupUi(this);
}
CCockpitComComponent::~CCockpitComComponent()
{ }
void CCockpitComComponent::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
CStyleSheetUtility::useStyleSheetInDerivedWidget(this);
}
} // namespace
} // namespace

View File

@@ -0,0 +1,47 @@
/* Copyright (C) 2013
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#ifndef BLACKGUI_COCKPITCOMCOMPONENT_H
#define BLACKGUI_COCKPITCOMCOMPONENT_H
#include "dockwidgetinfoareacomponent.h"
#include <QFrame>
#include <QScopedPointer>
namespace Ui { class CCockpitMainComponent; }
namespace BlackGui
{
namespace Components
{
//! The main cockpit area
class CCockpitComComponent :
public QFrame,
public CDockWidgetInfoAreaComponent
{
Q_OBJECT
public:
//! Constructor
explicit CCockpitComComponent(QWidget *parent = nullptr);
//! Destructor
~CCockpitComComponent();
//! \copydoc QWidget::paintEvent
virtual void paintEvent(QPaintEvent *event) override;
private:
QScopedPointer<Ui::CCockpitMainComponent> ui;
};
} // namespace
} // namespace
#endif // guard

View File

@@ -0,0 +1,618 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CCockpitMainComponent</class>
<widget class="QFrame" name="CCockpitMainComponent">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>363</width>
<height>99</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="vl_CockpitMainCockpit">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QGridLayout" name="gl_ComPanel">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="horizontalSpacing">
<number>4</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="1">
<widget class="QWidget" name="qw_ComPanelCom2Active" native="true">
<layout class="QGridLayout" name="gl_ComPanelCom2Active">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="1">
<widget class="QFrame" name="qf_ComPanelCom2ActiveValid">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_ComAndTransponderCom2Active">
<property name="text">
<string>COM2:</string>
</property>
<property name="buddy">
<cstring>qw_ComPanelCom2Active</cstring>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLineEdit" name="le_ComPanelCom2Active">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMask">
<string>DDD.990</string>
</property>
<property name="text">
<string>128.800</string>
</property>
<property name="maxLength">
<number>7</number>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QWidget" name="qw_ComPanelCom1Active" native="true">
<layout class="QGridLayout" name="gl_ComPanelCom1Active">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lbl_ComAndTransponderCom1Active">
<property name="text">
<string>COM1:</string>
</property>
<property name="buddy">
<cstring>qw_ComPanelCom1Active</cstring>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLineEdit" name="le_ComPanelCom1Active">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMask">
<string>DDD.990</string>
</property>
<property name="text">
<string>123.750</string>
</property>
<property name="maxLength">
<number>7</number>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QFrame" name="qf_ComPanelCom1ActiveValid">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QWidget" name="qw_ComPanelCom1Standby" native="true">
<layout class="QGridLayout" name="gl_ComPanelCom1Standby">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lbl_ComPanelCom1Standby">
<property name="text">
<string>standby:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QLineEdit" name="le_ComPanelCom1Standby">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMask">
<string>DDD.990</string>
</property>
<property name="text">
<string>123.750</string>
</property>
<property name="maxLength">
<number>7</number>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pb_ComPanelCom1Toggle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Toggle COM 1 standby/active</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
<normaloff>:/diagona/icons/diagona/icons/arrow-circle-double-135.png</normaloff>:/diagona/icons/diagona/icons/arrow-circle-double-135.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QWidget" name="qw_ComPanelCom2Standby" native="true">
<layout class="QGridLayout" name="gl_ComPanelCom2Standby">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lbl_ComAndTransponderCom2Standby">
<property name="text">
<string>standby:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QLineEdit" name="le_ComPanelCom2Standby">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMask">
<string>DDD.990</string>
</property>
<property name="text">
<string>123.750</string>
</property>
<property name="maxLength">
<number>7</number>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pb_ComPanelCom2Toggle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Toggle COM 2 standby/active</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
<normaloff>:/diagona/icons/diagona/icons/arrow-circle-double-135.png</normaloff>:/diagona/icons/diagona/icons/arrow-circle-double-135.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="2">
<widget class="QWidget" name="qw_ComPanelTransponder" native="true">
<layout class="QGridLayout" name="gl_ComPanelTransponderTop">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lbl_ComPanelTransponder">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string>XPDR:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="fr_ComPanelTransponder">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="hl_ComPanelTransponder">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="le_ComPanelTransponderCode">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="inputMask">
<string>9999</string>
</property>
<property name="text">
<string>7000</string>
</property>
<property name="maxLength">
<number>4</number>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="BlackGui::CTransponderModeSelector" name="cbp_ComPanelTransponderMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="2">
<widget class="QWidget" name="qw_ComPanelSelcal" native="true">
<layout class="QGridLayout" name="gl_ComPanelSelect">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="1" column="0" colspan="2">
<widget class="QFrame" name="fr_ComPanelSelcalBottom">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="cb_ComPanelSelcalSelector1">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cb_ComPanelSelcalSelector2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QFrame" name="fr_ComPanelSelcalTop">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="hl_ComPanelSelcalTop">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lbl_ComSelcalSelcal">
<property name="text">
<string>SELCAL:</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_ComPanelSelcalTest">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>test SELCAL</string>
</property>
<property name="text">
<string>Test</string>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
<normaloff>:/diagona/icons/diagona/icons/speaker-volume.png</normaloff>:/diagona/icons/diagona/icons/speaker-volume.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QWidget" name="wi_CockpitComPanelBottomSpacer" native="true">
<layout class="QHBoxLayout" name="hl_CockpitComPanelBottomSpacer">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="vs_CockpitComPanelBottomSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>BlackGui::CTransponderModeSelector</class>
<extends>QComboBox</extends>
<header>blackgui/transpondermodeselector.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../../blackmisc/blackmisc.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -0,0 +1,54 @@
/* Copyright (C) 2013
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "cockpitinfoareacomponent.h"
#include "ui_cockpitinfoareacomponent.h"
#include "blackmisc/icons.h"
using namespace BlackMisc;
namespace BlackGui
{
namespace Components
{
CCockpitInfoAreaComponent::CCockpitInfoAreaComponent(QWidget *parent) :
CInfoArea(parent),
ui(new Ui::CCockpitInfoAreaComponent)
{
ui->setupUi(this);
initInfoArea();
if (this->statusBar())
{
this->statusBar()->hide();
}
}
CCockpitInfoAreaComponent::~CCockpitInfoAreaComponent()
{ }
void CCockpitInfoAreaComponent::toggleFloating()
{
CInfoArea::toggleFloating();
}
QSize CCockpitInfoAreaComponent::getPreferredSizeWhenFloating(int areaIndex) const
{
Q_UNUSED(areaIndex);
return QSize(600, 400);
}
const QPixmap &CCockpitInfoAreaComponent::indexToPixmap(int areaIndex) const
{
Q_UNUSED(areaIndex);
return CIcons::empty16();
}
} // namespace
} // namespace

View File

@@ -0,0 +1,54 @@
/* Copyright (C) 2013
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKGUI_COCKPITINFOAREACOMPONENT_H
#define BLACKGUI_COCKPITINFOAREACOMPONENT_H
#include "../infoarea.h"
#include <QMainWindow>
#include <QScopedPointer>
namespace Ui { class CCockpitInfoAreaComponent; }
namespace BlackGui
{
namespace Components
{
//! The cockpit itself is part of the main info area, but itself also an info area.
//! hence windows can be docked in the cockpit too.
class CCockpitInfoAreaComponent : public CInfoArea
{
Q_OBJECT
public:
//! Destructor
explicit CCockpitInfoAreaComponent(QWidget *parent = nullptr);
//! Destructor
~CCockpitInfoAreaComponent();
public slots:
//! CInfoArea::toggleFloating
virtual void toggleFloating() override;
protected:
//! \copydoc CInfoArea::getPreferredSizeWhenFloating
virtual QSize getPreferredSizeWhenFloating(int areaIndex) const override;
//! \copydoc CInfoArea::indexToPixmap
virtual const QPixmap &indexToPixmap(int areaIndex) const override;
private:
QScopedPointer<Ui::CCockpitInfoAreaComponent> ui;
};
} // namespace
} // namespace
#endif // guard

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CCockpitInfoAreaComponent</class>
<widget class="QMainWindow" name="CCockpitInfoAreaComponent">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>80</width>
<height>75</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="qw_CockpitInfoAreaComComponent">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="BlackGui::Components::CCockpitComComponent" name="comp_CockpitComComponent">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="sb_CockpitInfoAreaStatusBar"/>
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_CockpitVoiceRooms">
<property name="allowedAreas">
<set>Qt::TopDockWidgetArea</set>
</property>
<property name="windowTitle">
<string>Voice rooms</string>
</property>
<attribute name="dockWidgetArea">
<number>8</number>
</attribute>
<widget class="QWidget" name="qw_CockpitVoiceRooms">
<layout class="QVBoxLayout" name="vl_CockpitMainArea">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="BlackGui::Components::CVoiceRoomsComponent" name="comp_VoiceRooms">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>BlackGui::CDockWidgetInfoArea</class>
<extends>QDockWidget</extends>
<header>blackgui/dockwidgetinfoarea.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CCockpitComComponent</class>
<extends>QFrame</extends>
<header>blackgui/components/cockpitcomcomponent.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CVoiceRoomsComponent</class>
<extends>QFrame</extends>
<header>blackgui/components/voiceroomscomponent.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -17,6 +17,7 @@ namespace BlackGui
CDockWidgetInfoAreaComponent::CDockWidgetInfoAreaComponent(QWidget *parent)
{
// it the parent is already an info area at this time, we keep it
// otherwise we expect the info area to set it later
CDockWidgetInfoArea *ia = dynamic_cast<CDockWidgetInfoArea *>(parent);
if (ia)
{
@@ -24,6 +25,21 @@ namespace BlackGui
}
}
bool CDockWidgetInfoAreaComponent::setParentDockWidgetInfoArea(CDockWidgetInfoArea *parentDockableWidget)
{
// sanity check
if (this->m_parentDockableInfoArea)
{
// we already have a value
// changes should not happen
Q_ASSERT(this->m_parentDockableInfoArea == parentDockableWidget);
return this->m_parentDockableInfoArea == parentDockableWidget;
}
m_parentDockableInfoArea = parentDockableWidget;
return true;
}
const CInfoArea *CDockWidgetInfoAreaComponent::getParentInfoArea() const
{
Q_ASSERT(this->m_parentDockableInfoArea);

View File

@@ -33,7 +33,8 @@ namespace BlackGui
const BlackGui::CDockWidgetInfoArea *getDockWidget() const { return m_parentDockableInfoArea; }
//! Corresponding dockable widget in info area
void setParentDockableWidget(BlackGui::CDockWidgetInfoArea *parentDockableWidget) { m_parentDockableInfoArea = parentDockableWidget; }
//! \remarks Usually set from CDockWidgetInfoArea when it is fully initialized
bool setParentDockWidgetInfoArea(BlackGui::CDockWidgetInfoArea *parentDockableWidget);
//! The parent info area
const CInfoArea *getParentInfoArea() const;

View File

@@ -33,9 +33,7 @@ namespace BlackGui
}
CMainInfoAreaComponent::~CMainInfoAreaComponent()
{
delete ui;
}
{ }
CAtcStationComponent *CMainInfoAreaComponent::getAtcStationComponent()
{
@@ -82,6 +80,7 @@ namespace BlackGui
InfoArea area = static_cast<InfoArea>(areaIndex);
switch (area)
{
case InfoAreaCockpit:
case InfoAreaAircrafts:
case InfoAreaAtc:
case InfoAreaUsers:
@@ -112,6 +111,8 @@ namespace BlackGui
InfoArea area = static_cast<InfoArea>(areaIndex);
switch (area)
{
case InfoAreaCockpit:
return CIcons::appCockpit16();
case InfoAreaUsers:
return CIcons::appUsers16();
case InfoAreaWeather:
@@ -136,5 +137,5 @@ namespace BlackGui
return CIcons::empty();
}
}
}
}
} // namespace
} // namespace

View File

@@ -23,9 +23,9 @@
#include "logcomponent.h"
#include <QTabBar>
#include <QPixmap>
#include <QScopedPointer>
namespace Ui { class CMainInfoAreaComponent; }
namespace BlackGui
{
namespace Components
@@ -47,16 +47,17 @@ namespace BlackGui
enum InfoArea
{
// index must match tab index!
InfoAreaAircrafts = 0,
InfoAreaAtc = 1,
InfoAreaUsers = 2,
InfoAreaTextMessages = 3,
InfoAreaSimulator = 4,
InfoAreaFlightPlan = 5,
InfoAreaWeather = 6,
InfoAreaMappings = 7,
InfoAreaLog = 8,
InfoAreaSettings = 9,
InfoAreaCockpit = 0,
InfoAreaAircrafts = 1,
InfoAreaAtc = 2,
InfoAreaUsers = 3,
InfoAreaTextMessages = 4,
InfoAreaSimulator = 5,
InfoAreaFlightPlan = 6,
InfoAreaWeather = 7,
InfoAreaMappings = 8,
InfoAreaLog = 9,
InfoAreaSettings = 10,
InfoAreaNone = -1
};
@@ -105,8 +106,7 @@ namespace BlackGui
virtual const QPixmap &indexToPixmap(int areaIndex) const override;
private:
Ui::CMainInfoAreaComponent *ui = nullptr;
QScopedPointer<Ui::CMainInfoAreaComponent> ui;
};
}
}

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1207</width>
<height>97</height>
<width>1266</width>
<height>55</height>
</rect>
</property>
<property name="minimumSize">
@@ -39,11 +39,44 @@
<set>QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::ForceTabbedDocks</set>
</property>
<widget class="QWidget" name="qw_centralWidgetEmpty"/>
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Cockpit">
<property name="allowedAreas">
<set>Qt::TopDockWidgetArea</set>
</property>
<property name="windowTitle">
<string>Cockpit</string>
</property>
<attribute name="dockWidgetArea">
<number>4</number>
</attribute>
<widget class="QWidget" name="dw_CockpitInner">
<layout class="QVBoxLayout" name="vl_Cockpit">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="BlackGui::Components::CCockpitInfoAreaComponent" name="comp_CockpitInfoArea" native="true"/>
</item>
</layout>
</widget>
</widget>
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Aircrafts">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="features">
@@ -103,8 +136,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_AtcStations">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="floating">
@@ -164,8 +197,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Users">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -210,8 +243,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_TextMessages">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -256,8 +289,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Simulator">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -302,8 +335,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_FlightPlan">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -348,8 +381,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Weather">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>80</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -397,8 +430,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Mappings">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -443,8 +476,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Log">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>80</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -489,8 +522,8 @@
<widget class="BlackGui::CDockWidgetInfoArea" name="dw_Settings">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
<width>127</width>
<height>38</height>
</size>
</property>
<property name="allowedAreas">
@@ -534,6 +567,18 @@
</widget>
</widget>
<customwidgets>
<customwidget>
<class>BlackGui::CDockWidgetInfoArea</class>
<extends>QDockWidget</extends>
<header>blackgui/dockwidgetinfoarea.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CCockpitInfoAreaComponent</class>
<extends>QWidget</extends>
<header>blackgui/components/cockpitinfoareacomponent.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CAtcStationComponent</class>
<extends>QTabWidget</extends>
@@ -570,12 +615,6 @@
<header>blackgui/components/settingscomponent.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::CDockWidgetInfoArea</class>
<extends>QDockWidget</extends>
<header>blackgui/dockwidgetinfoarea.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::Components::CLogComponent</class>
<extends>QFrame</extends>