mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-15 01:05:35 +08:00
refs #347, improvement in main GUI
* info bar attached to window layout * prepared for floating info area (whole area) -> hideMainPage * renamed some functions (slots)
This commit is contained in:
committed by
Roland Winklmeier
parent
bd2bf0d3ba
commit
e6d0f2ecb4
@@ -46,7 +46,7 @@ SwiftGuiStd::SwiftGuiStd(BlackGui::CEnableForFramelessWindow::WindowMode windowM
|
|||||||
{
|
{
|
||||||
// GUI
|
// GUI
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->ui->wi_CentralWidgetOutside->setProperty("mainframeless", this->isFrameless());
|
this->ui->wi_CentralWidgetOutside->setProperty("frameless", this->isFrameless());
|
||||||
this->m_compInfoWindow = new CInfoWindowComponent(this); // setupUi has to be first!
|
this->m_compInfoWindow = new CInfoWindowComponent(this); // setupUi has to be first!
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,7 +106,6 @@ void SwiftGuiStd::closeEvent(QCloseEvent *event)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(event);
|
Q_UNUSED(event);
|
||||||
this->performGracefulShutdown();
|
this->performGracefulShutdown();
|
||||||
// if (this->sender() != this) QMainWindow::closeEvent(event);
|
|
||||||
QApplication::exit();
|
QApplication::exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +131,19 @@ bool SwiftGuiStd::isMainPageSelected(SwiftGuiStd::MainPageIndex mainPage) const
|
|||||||
return this->ui->sw_MainMiddle->currentIndex() == static_cast<int>(mainPage);
|
return this->ui->sw_MainMiddle->currentIndex() == static_cast<int>(mainPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SwiftGuiStd::hideMainPage(bool hide)
|
||||||
|
{
|
||||||
|
//! \todo further implement hide main page
|
||||||
|
if (hide)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SwiftGuiStd::ps_loginRequested()
|
void SwiftGuiStd::ps_loginRequested()
|
||||||
{
|
{
|
||||||
if (this->ui->sw_MainMiddle->currentIndex() == static_cast<int>(MainPageLogin))
|
if (this->ui->sw_MainMiddle->currentIndex() == static_cast<int>(MainPageLogin))
|
||||||
@@ -275,7 +287,7 @@ void SwiftGuiStd::updateGuiStatusInformation()
|
|||||||
/*
|
/*
|
||||||
* Opacity 0-100
|
* Opacity 0-100
|
||||||
*/
|
*/
|
||||||
void SwiftGuiStd::ps_changeWindowOpacity(int opacity)
|
void SwiftGuiStd::ps_onChangedWindowOpacity(int opacity)
|
||||||
{
|
{
|
||||||
qreal o = opacity / 100.0;
|
qreal o = opacity / 100.0;
|
||||||
o = o < 0.3 ? 0.3 : o;
|
o = o < 0.3 ? 0.3 : o;
|
||||||
@@ -315,12 +327,12 @@ void SwiftGuiStd::ps_registerHotkeyFunctions()
|
|||||||
|
|
||||||
m_inputManager->registerHotkeyFunc(CHotkeyFunction::Opacity50(), this, [ this ](bool isPressed)
|
m_inputManager->registerHotkeyFunc(CHotkeyFunction::Opacity50(), this, [ this ](bool isPressed)
|
||||||
{
|
{
|
||||||
if (isPressed) this->ps_changeWindowOpacity(50);
|
if (isPressed) this->ps_onChangedWindowOpacity(50);
|
||||||
});
|
});
|
||||||
|
|
||||||
m_inputManager->registerHotkeyFunc(CHotkeyFunction::Opacity100(), this, [ this ](bool isPressed)
|
m_inputManager->registerHotkeyFunc(CHotkeyFunction::Opacity100(), this, [ this ](bool isPressed)
|
||||||
{
|
{
|
||||||
if (isPressed) this->ps_changeWindowOpacity(100);
|
if (isPressed) this->ps_onChangedWindowOpacity(100);
|
||||||
});
|
});
|
||||||
|
|
||||||
m_inputManager->registerHotkeyFunc(CHotkeyFunction::ToogleWindowsStayOnTop(), this, [ this ](bool isPressed)
|
m_inputManager->registerHotkeyFunc(CHotkeyFunction::ToogleWindowsStayOnTop(), this, [ this ](bool isPressed)
|
||||||
@@ -343,12 +355,24 @@ void SwiftGuiStd::ps_onStyleSheetsChanged()
|
|||||||
this->setStyleSheet(s);
|
this->setStyleSheet(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Main widget (login, main info area...)
|
||||||
|
*/
|
||||||
void SwiftGuiStd::ps_onCurrentMainWidgetChanged(int currentIndex)
|
void SwiftGuiStd::ps_onCurrentMainWidgetChanged(int currentIndex)
|
||||||
{
|
{
|
||||||
emit currentMainInfoAreaChanged(this->ui->sw_MainMiddle->currentWidget());
|
emit currentMainInfoAreaChanged(this->ui->sw_MainMiddle->currentWidget());
|
||||||
Q_UNUSED(currentIndex);
|
Q_UNUSED(currentIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Main info area floating?
|
||||||
|
*/
|
||||||
|
void SwiftGuiStd::ps_onChangedMainInfoAreaFloating(bool floating)
|
||||||
|
{
|
||||||
|
this->hideMainPage(floating);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notification
|
* Notification
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
//! Constructor
|
//! Constructor
|
||||||
explicit SwiftGuiStd(BlackGui::CEnableForFramelessWindow::WindowMode windowMode, QWidget *parent = nullptr);
|
SwiftGuiStd(BlackGui::CEnableForFramelessWindow::WindowMode windowMode, QWidget *parent = nullptr);
|
||||||
|
|
||||||
//! Destructor
|
//! Destructor
|
||||||
~SwiftGuiStd();
|
~SwiftGuiStd();
|
||||||
@@ -83,13 +83,13 @@ signals:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! \copy QMainWindow::mouseMoveEvent
|
//! \copy QMainWindow::mouseMoveEvent
|
||||||
void mouseMoveEvent(QMouseEvent *event) override { if (!handleMouseMoveEvent(event)) { QMainWindow::mouseMoveEvent(event); } ; }
|
virtual void mouseMoveEvent(QMouseEvent *event) override { if (!handleMouseMoveEvent(event)) { QMainWindow::mouseMoveEvent(event); } ; }
|
||||||
|
|
||||||
//! \copy QMainWindow::mousePressEvent
|
//! \copy QMainWindow::mousePressEvent
|
||||||
void mousePressEvent(QMouseEvent *event) override { if (!handleMousePressEvent(event)) { QMainWindow::mousePressEvent(event); } }
|
virtual void mousePressEvent(QMouseEvent *event) override { if (!handleMousePressEvent(event)) { QMainWindow::mousePressEvent(event); } }
|
||||||
|
|
||||||
//! \copydoc QMainWindow::closeEvent
|
//! \copydoc QMainWindow::closeEvent
|
||||||
void closeEvent(QCloseEvent *event) override;
|
virtual void closeEvent(QCloseEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<Ui::SwiftGuiStd> ui;
|
QScopedPointer<Ui::SwiftGuiStd> ui;
|
||||||
@@ -105,6 +105,8 @@ private:
|
|||||||
bool m_contextAudioAvailable = false;
|
bool m_contextAudioAvailable = false;
|
||||||
QTimer *m_timerContextWatchdog = nullptr; //!< core available?
|
QTimer *m_timerContextWatchdog = nullptr; //!< core available?
|
||||||
BlackMisc::Aviation::CAircraft m_ownAircraft; //!< own aircraft's state
|
BlackMisc::Aviation::CAircraft m_ownAircraft; //!< own aircraft's state
|
||||||
|
QSize m_windowMinSizeWithMainPageShown;
|
||||||
|
QSize m_windowMinSizeWithMainPageHidden;
|
||||||
|
|
||||||
// cockpit
|
// cockpit
|
||||||
QString m_transponderResetValue; //!< Temp. storage of XPdr mode to reset, req. until timer allows singleShoot with Lambdas
|
QString m_transponderResetValue; //!< Temp. storage of XPdr mode to reset, req. until timer allows singleShoot with Lambdas
|
||||||
@@ -152,6 +154,9 @@ private:
|
|||||||
*/
|
*/
|
||||||
bool isMainPageSelected(MainPageIndex mainPage) const;
|
bool isMainPageSelected(MainPageIndex mainPage) const;
|
||||||
|
|
||||||
|
//! Show or hide the main Page
|
||||||
|
void hideMainPage(bool hide);
|
||||||
|
|
||||||
//! Start all update timers
|
//! Start all update timers
|
||||||
void startUpdateTimersWhenConnected();
|
void startUpdateTimersWhenConnected();
|
||||||
|
|
||||||
@@ -226,7 +231,7 @@ private slots:
|
|||||||
* \brief changeOpacity
|
* \brief changeOpacity
|
||||||
* \param opacity 0-100
|
* \param opacity 0-100
|
||||||
*/
|
*/
|
||||||
void ps_changeWindowOpacity(int opacity = -1);
|
void ps_onChangedWindowOpacity(int opacity = -1);
|
||||||
|
|
||||||
//! Toogle Windows stay on top
|
//! Toogle Windows stay on top
|
||||||
void ps_toogleWindowStayOnTop();
|
void ps_toogleWindowStayOnTop();
|
||||||
@@ -240,6 +245,8 @@ private slots:
|
|||||||
//! Main info area current widget changed
|
//! Main info area current widget changed
|
||||||
void ps_onCurrentMainWidgetChanged(int currentIndex);
|
void ps_onCurrentMainWidgetChanged(int currentIndex);
|
||||||
|
|
||||||
|
//! Whole main info area floating
|
||||||
|
void ps_onChangedMainInfoAreaFloating(bool floating);
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pop_macro("interface")
|
#pragma pop_macro("interface")
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gl_CentralFrameInside">
|
<layout class="QVBoxLayout" name="vl_CentralFrameInside">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item>
|
||||||
<widget class="QStackedWidget" name="sw_MainMiddle">
|
<widget class="QStackedWidget" name="sw_MainMiddle">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
@@ -173,10 +173,10 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item>
|
||||||
<widget class="BlackGui::Components::CMainKeypadAreaComponent" name="comp_MainKeypadArea">
|
<widget class="BlackGui::Components::CMainKeypadAreaComponent" name="comp_MainKeypadArea">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
|
|||||||
@@ -52,10 +52,15 @@ void SwiftGuiStd::init(const CRuntimeConfig &runtimeConfig)
|
|||||||
// http://stackoverflow.com/questions/18316710/frameless-and-transparent-window-qt5
|
// http://stackoverflow.com/questions/18316710/frameless-and-transparent-window-qt5
|
||||||
if (this->isFrameless())
|
if (this->isFrameless())
|
||||||
{
|
{
|
||||||
|
// wrap menu in layout, add button to menu bar and insert on top
|
||||||
QHBoxLayout *menuBarLayout = this->addFramelessCloseButton(this->ui->mb_MainMenuBar);
|
QHBoxLayout *menuBarLayout = this->addFramelessCloseButton(this->ui->mb_MainMenuBar);
|
||||||
this->ui->vl_CentralWidgetOutside->insertLayout(0, menuBarLayout, 0);
|
this->ui->vl_CentralWidgetOutside->insertLayout(0, menuBarLayout, 0);
|
||||||
|
|
||||||
// move the status bar intothe frame (otherwise it is dangling outside)
|
// now insert the dock widget info bar into the widget
|
||||||
|
this->ui->vl_CentralWidgetOutside->insertWidget(1, this->ui->dw_InfoBarStatus);
|
||||||
|
|
||||||
|
// move the status bar into the frame
|
||||||
|
// (otherwise it is dangling outside the frame as it belongs to the window)
|
||||||
this->ui->sb_MainStatusBar->setParent(this->ui->wi_CentralWidgetOutside);
|
this->ui->sb_MainStatusBar->setParent(this->ui->wi_CentralWidgetOutside);
|
||||||
this->ui->vl_CentralWidgetOutside->addWidget(this->ui->sb_MainStatusBar, 0);
|
this->ui->vl_CentralWidgetOutside->addWidget(this->ui->sb_MainStatusBar, 0);
|
||||||
|
|
||||||
@@ -134,7 +139,7 @@ void SwiftGuiStd::initGuiSignals()
|
|||||||
// main keypad
|
// main keypad
|
||||||
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::selectedMainInfoAreaDockWidget, this, &SwiftGuiStd::ps_setMainPageInfoArea);
|
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::selectedMainInfoAreaDockWidget, this, &SwiftGuiStd::ps_setMainPageInfoArea);
|
||||||
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::connectPressed, this, &SwiftGuiStd::ps_loginRequested);
|
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::connectPressed, this, &SwiftGuiStd::ps_loginRequested);
|
||||||
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::changedOpacity, this , &SwiftGuiStd::ps_changeWindowOpacity);
|
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::changedOpacity, this , &SwiftGuiStd::ps_onChangedWindowOpacity);
|
||||||
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::identPressed, this->ui->comp_MainInfoArea->getCockpitComponent(), &CCockpitComponent::setSelectedTransponderModeStateIdent);
|
connect(this->ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::identPressed, this->ui->comp_MainInfoArea->getCockpitComponent(), &CCockpitComponent::setSelectedTransponderModeStateIdent);
|
||||||
connect(this->ui->comp_MainInfoArea, &CMainInfoAreaComponent::changedInfoAreaStatus, ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::onMainInfoAreaChanged);
|
connect(this->ui->comp_MainInfoArea, &CMainInfoAreaComponent::changedInfoAreaStatus, ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::onMainInfoAreaChanged);
|
||||||
|
|
||||||
@@ -157,7 +162,7 @@ void SwiftGuiStd::initGuiSignals()
|
|||||||
connect(this->ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::displayInInfoWindow, this->m_compInfoWindow, &CInfoWindowComponent::display);
|
connect(this->ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::displayInInfoWindow, this->m_compInfoWindow, &CInfoWindowComponent::display);
|
||||||
|
|
||||||
// settings (GUI component), styles
|
// settings (GUI component), styles
|
||||||
connect(this->ui->comp_MainInfoArea->getSettingsComponent(), &CSettingsComponent::changedWindowsOpacity, this, &SwiftGuiStd::ps_changeWindowOpacity);
|
connect(this->ui->comp_MainInfoArea->getSettingsComponent(), &CSettingsComponent::changedWindowsOpacity, this, &SwiftGuiStd::ps_onChangedWindowOpacity);
|
||||||
connect(&CStyleSheetUtility::instance(), &CStyleSheetUtility::styleSheetsChanged, this, &SwiftGuiStd::ps_onStyleSheetsChanged);
|
connect(&CStyleSheetUtility::instance(), &CStyleSheetUtility::styleSheetsChanged, this, &SwiftGuiStd::ps_onStyleSheetsChanged);
|
||||||
|
|
||||||
// sliders
|
// sliders
|
||||||
@@ -176,6 +181,8 @@ void SwiftGuiStd::initGuiSignals()
|
|||||||
this->ui->comp_MainInfoArea->getSettingsComponent()->setSettingsTab(CSettingsComponent::SettingTabNetwork);
|
this->ui->comp_MainInfoArea->getSettingsComponent()->setSettingsTab(CSettingsComponent::SettingTabNetwork);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// main info area
|
||||||
|
connect(this->ui->comp_MainInfoArea, &CMainInfoAreaComponent::changedWholeInfoAreaFloating, this, &SwiftGuiStd::ps_onChangedMainInfoAreaFloating);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user