From b74652c94a835de608200b7ae1efc7f1d5a42dba Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 10 Jan 2018 03:20:04 +0100 Subject: [PATCH] Ref T220, renamed some main window / widget functions Make clearer if dealing with a window or widget --- .../enablefordockwidgetinfoarea.cpp | 2 +- .../components/infobarstatuscomponent.cpp | 4 +- src/blackgui/dockwidget.cpp | 6 +-- src/blackgui/enableforframelesswindow.h | 2 +- src/blackgui/guiapplication.cpp | 43 +++++++++++-------- src/blackgui/guiapplication.h | 8 +++- src/blackgui/guiutility.cpp | 37 +++++++++------- src/blackgui/guiutility.h | 16 ++++--- src/blackgui/infoarea.cpp | 2 +- src/blackgui/views/viewbase.cpp | 2 +- .../simulator/emulated/simulatoremulated.cpp | 2 +- src/swiftcore/swiftcore.cpp | 2 +- src/swiftdata/swiftdata.cpp | 2 +- src/swiftguistandard/swiftguistdinit.cpp | 2 +- src/swiftlauncher/swiftlauncher.cpp | 2 +- src/swiftlauncher/swiftlauncher.h | 1 + 16 files changed, 77 insertions(+), 56 deletions(-) diff --git a/src/blackgui/components/enablefordockwidgetinfoarea.cpp b/src/blackgui/components/enablefordockwidgetinfoarea.cpp index 4196e8a44..6fbbb2256 100644 --- a/src/blackgui/components/enablefordockwidgetinfoarea.cpp +++ b/src/blackgui/components/enablefordockwidgetinfoarea.cpp @@ -75,7 +75,7 @@ namespace BlackGui CEnableForFramelessWindow *CEnableForDockWidgetInfoArea::mainApplicationWindow() const { - CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); + CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledWindow(); return mw; } diff --git a/src/blackgui/components/infobarstatuscomponent.cpp b/src/blackgui/components/infobarstatuscomponent.cpp index e8a01e90a..10e879ee2 100644 --- a/src/blackgui/components/infobarstatuscomponent.cpp +++ b/src/blackgui/components/infobarstatuscomponent.cpp @@ -247,8 +247,8 @@ namespace BlackGui void CInfoBarStatusComponent::updateSpacing() { - if (!sGui || !sGui->mainApplicationWindow()) { return; } - const int w = sGui->mainApplicationWindow()->width(); + if (!sGui || !sGui->mainApplicationWidget()) { return; } + const int w = sGui->mainApplicationWidget()->width(); const int s = (w >= 400) ? 6 : 2; this->setSpacing(s); } diff --git a/src/blackgui/dockwidget.cpp b/src/blackgui/dockwidget.cpp index 6efba19b0..d1fdaa362 100644 --- a/src/blackgui/dockwidget.cpp +++ b/src/blackgui/dockwidget.cpp @@ -387,7 +387,7 @@ namespace BlackGui } // and move - QPoint mainWindowPos = BlackGui::CGuiUtility::mainWindowPosition(); + QPoint mainWindowPos = BlackGui::CGuiUtility::mainWidgetPosition(); if (!mainWindowPos.isNull()) { int x = mainWindowPos.x() + m_offsetWhenFloating.x(); @@ -556,8 +556,8 @@ namespace BlackGui void CDockWidget::forceStyleSheetUpdate() { - QString qss = this->styleSheet(); - this->setStyleSheet(qss.isEmpty() ? " " : ""); + const QString qss = this->styleSheet(); + this->setStyleSheet(qss.isEmpty() ? QStringLiteral(" ") : QStringLiteral("")); this->setStyleSheet(qss); } diff --git a/src/blackgui/enableforframelesswindow.h b/src/blackgui/enableforframelesswindow.h index 59cbea4fe..16fb4b5a2 100644 --- a/src/blackgui/enableforframelesswindow.h +++ b/src/blackgui/enableforframelesswindow.h @@ -82,7 +82,7 @@ namespace BlackGui WindowMode m_windowMode = WindowNormal; //!< Window mode, \sa WindowMode WindowMode m_originalWindowMode = WindowNormal; //!< mode when initialized bool m_mainApplicationWindow = false; //!< is this the main application window (only 1)? - QWidget *m_widget = nullptr; //!< corresponding widget or dock widget + QWidget *m_widget = nullptr; //!< corresponding window or dock widget QSizeGrip *m_framelessSizeGrip = nullptr; //!< size grip object QByteArray m_framelessPropertyName; //!< property name for frameless widgets diff --git a/src/blackgui/guiapplication.cpp b/src/blackgui/guiapplication.cpp index 747697ade..216aa04f8 100644 --- a/src/blackgui/guiapplication.cpp +++ b/src/blackgui/guiapplication.cpp @@ -172,36 +172,41 @@ namespace BlackGui QCoreApplication::processEvents(QEventLoop::AllEvents, 100); } - QWidget *CGuiApplication::mainApplicationWindow() + QWidget *CGuiApplication::mainApplicationWidget() { - return CGuiUtility::mainApplicationWindow(); + return CGuiUtility::mainApplicationWidget(); + } + + QMainWindow *CGuiApplication::mainApplicationWindow() + { + return qobject_cast(CGuiApplication::mainApplicationWidget()); } IMainWindowAccess *CGuiApplication::mainWindowAccess() { - IMainWindowAccess *m = qobject_cast(mainApplicationWindow()); + IMainWindowAccess *m = qobject_cast(mainApplicationWidget()); return m; } - void CGuiApplication::initMainApplicationWindow(QWidget *mainWindow) + void CGuiApplication::initMainApplicationWidget(QWidget *mainWidget) { - if (!mainWindow) { return; } + if (!mainWidget) { return; } if (m_uiSetupCompleted) { return; } m_uiSetupCompleted = true; - const QString name(this->getApplicationNameVersionBetaDev()); - mainWindow->setObjectName(QCoreApplication::applicationName()); - mainWindow->setWindowTitle(name); - mainWindow->setWindowIcon(m_windowIcon); - mainWindow->setWindowIconText(name); - CStyleSheetUtility::setQSysInfoProperties(mainWindow, true); - CGuiUtility::registerMainApplicationWindow(mainWindow); + const QString name(this->getApplicationNameVersionDetailed()); + mainWidget->setObjectName(QCoreApplication::applicationName()); + mainWidget->setWindowTitle(name); + mainWidget->setWindowIcon(m_windowIcon); + mainWidget->setWindowIconText(name); + CStyleSheetUtility::setQSysInfoProperties(mainWidget, true); + CGuiUtility::registerMainApplicationWidget(mainWidget); emit this->uiObjectTreeReady(); } void CGuiApplication::addWindowFlags(Qt::WindowFlags flags) { - QWidget *maw = this->mainApplicationWindow(); + QWidget *maw = this->mainApplicationWidget(); if (maw) { Qt::WindowFlags windowFlags = maw->windowFlags(); @@ -490,7 +495,7 @@ namespace BlackGui c = connect(a, &QAction::triggered, this, [a, this]() { // a close event might already trigger a shutdown - this->mainApplicationWindow()->close(); + this->mainApplicationWidget()->close(); this->gracefulShutdown(); }); Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); @@ -537,7 +542,7 @@ namespace BlackGui void CGuiApplication::addMenuWindow(QMenu &menu) { - QWidget *w = mainApplicationWindow(); + QWidget *w = mainApplicationWidget(); if (!w) { return; } const QSize iconSize = CIcons::empty16().size(); QPixmap icon = w->style()->standardIcon(QStyle::SP_TitleBarMaxButton).pixmap(iconSize); @@ -582,7 +587,7 @@ namespace BlackGui void CGuiApplication::addMenuHelp(QMenu &menu) { - QWidget *w = mainApplicationWindow(); + QWidget *w = mainApplicationWidget(); if (!w) { return; } QAction *a = menu.addAction(w->style()->standardIcon(QStyle::SP_TitleBarContextHelpButton), "Online help"); bool c = connect(a, &QAction::triggered, this, [this]() @@ -685,7 +690,7 @@ namespace BlackGui CStyleSheetUtility::fileNameFonts(), CStyleSheetUtility::fileNameStandardWidget() }); - CSetupLoadingDialog dialog(msgs, this->mainApplicationWindow()); + CSetupLoadingDialog dialog(msgs, this->mainApplicationWidget()); dialog.setStyleSheet(style); const int r = dialog.exec(); if (r == QDialog::Rejected) @@ -779,7 +784,7 @@ namespace BlackGui if (!m_updateDialog) { // without parent stylesheet is not inherited - m_updateDialog = new CUpdateInfoDialog(this->mainApplicationWindow()); + m_updateDialog = new CUpdateInfoDialog(this->mainApplicationWidget()); } if (onlyIfNew && !m_updateDialog->isNewVersionAvailable()) return; @@ -790,7 +795,7 @@ namespace BlackGui QString CGuiApplication::getFontInfo() const { static const QString info("Family: '%1', average width: %2"); - const QWidget *w = this->mainApplicationWindow(); + const QWidget *w = this->mainApplicationWidget(); if (!w) { return QStringLiteral("Font info not available"); } return info. arg(w->font().family()). diff --git a/src/blackgui/guiapplication.h b/src/blackgui/guiapplication.h index 39857c71c..838d696b7 100644 --- a/src/blackgui/guiapplication.h +++ b/src/blackgui/guiapplication.h @@ -109,7 +109,8 @@ namespace BlackGui void processEventsToRefreshGui() const; //! Init the main application window based on information in this application - void initMainApplicationWindow(QWidget *mainWindow); + //! \remark can be QDialog, QMainWindow + void initMainApplicationWidget(QWidget *mainWidget); //! Set window flag on main application window void addWindowFlags(Qt::WindowFlags flags); @@ -193,8 +194,11 @@ namespace BlackGui //! \note Pixmap requires a valid QApplication, so it cannot be passed as constructor parameter static void setWindowIcon(const QPixmap &icon); + //! \copydoc BlackGui::CGuiUtility::mainApplicationWidget + static QWidget *mainApplicationWidget(); + //! Main application window - static QWidget *mainApplicationWindow(); + static QMainWindow *mainApplicationWindow(); //! Main window access interface static BlackGui::IMainWindowAccess *mainWindowAccess(); diff --git a/src/blackgui/guiutility.cpp b/src/blackgui/guiutility.cpp index 3a629583f..1e8c830ad 100644 --- a/src/blackgui/guiutility.cpp +++ b/src/blackgui/guiutility.cpp @@ -39,9 +39,9 @@ using namespace BlackMisc; namespace BlackGui { - QWidget *CGuiUtility::s_mainApplicationWindow = nullptr; + QWidget *CGuiUtility::s_mainApplicationWidget = nullptr; - CEnableForFramelessWindow *CGuiUtility::mainFramelessEnabledApplicationWindow() + CEnableForFramelessWindow *CGuiUtility::mainFramelessEnabledWindow() { const QWidgetList tlw = topLevelApplicationWidgetsWithName(); for (QWidget *w : tlw) @@ -55,9 +55,9 @@ namespace BlackGui namespace Private { - QWidget *mainApplicationWindowSearch() + QWidget *mainApplicationWidgetSearch() { - CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); + CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledWindow(); if (mw && mw->getWidget()) { return mw->getWidget(); @@ -75,23 +75,23 @@ namespace BlackGui } } // ns - void CGuiUtility::registerMainApplicationWindow(QWidget *mainWindow) + void CGuiUtility::registerMainApplicationWidget(QWidget *mainWidget) { - CGuiUtility::s_mainApplicationWindow = mainWindow; + CGuiUtility::s_mainApplicationWidget = mainWidget; } - QWidget *CGuiUtility::mainApplicationWindow() + QWidget *CGuiUtility::mainApplicationWidget() { - if (!CGuiUtility::s_mainApplicationWindow) + if (!CGuiUtility::s_mainApplicationWidget) { - CGuiUtility::s_mainApplicationWindow = Private::mainApplicationWindowSearch(); + CGuiUtility::s_mainApplicationWidget = Private::mainApplicationWidgetSearch(); } - return CGuiUtility::s_mainApplicationWindow; + return CGuiUtility::s_mainApplicationWidget; } bool CGuiUtility::isMainWindowFrameless() { - const CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); + const CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledWindow(); return (mw && mw->isFrameless()); } @@ -251,9 +251,9 @@ namespace BlackGui return rl; } - QPoint CGuiUtility::mainWindowPosition() + QPoint CGuiUtility::mainWidgetPosition() { - CEnableForFramelessWindow *mw = mainFramelessEnabledApplicationWindow(); + CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledWindow(); return (mw) ? mw->getWidget()->pos() : QPoint(); } @@ -407,14 +407,19 @@ namespace BlackGui QFontMetrics CGuiUtility::currentFontMetrics() { - const QWidget *w = CGuiUtility::mainApplicationWindow(); + const QWidget *w = CGuiUtility::mainApplicationWidget(); if (w) { return w->fontMetrics(); } return QApplication::fontMetrics(); } + QFontMetricsF CGuiUtility::currentFontMetricsF() + { + return QFontMetricsF(CGuiUtility::currentFontMetrics()); + } + QFont CGuiUtility::currentFont() { - const QWidget *w = CGuiUtility::mainApplicationWindow(); + const QWidget *w = CGuiUtility::mainApplicationWidget(); if (w) { return w->font(); } return QApplication::font(); } @@ -440,6 +445,8 @@ namespace BlackGui QSize CGuiUtility::fontMetricsEstimateSize(int xCharacters, int yCharacters) { + // 1920/1080: 560/16 256/16 => 530/960 + // 3840/2160: 400/10 178/10 => 375/600 const QSize s1 = CGuiUtility::fontMetrics80Chars(); const QSize s2 = CGuiUtility::fontMetricsLazyDog43Chars(); const QSize s = s1 + s2; diff --git a/src/blackgui/guiutility.h b/src/blackgui/guiutility.h index bf9c11208..6b21c0abf 100644 --- a/src/blackgui/guiutility.h +++ b/src/blackgui/guiutility.h @@ -23,6 +23,7 @@ #include #include #include +#include #include class QCheckBox; @@ -42,13 +43,13 @@ namespace BlackGui { public: //! Main (frameless enabled) application window - static CEnableForFramelessWindow *mainFramelessEnabledApplicationWindow(); + static CEnableForFramelessWindow *mainFramelessEnabledWindow(); //! Register main application window widget if this is known - static void registerMainApplicationWindow(QWidget *mainWindow); + static void registerMainApplicationWidget(QWidget *mainWidget); //! Main application window widget - static QWidget *mainApplicationWindow(); + static QWidget *mainApplicationWidget(); //! Is main window frameless? static bool isMainWindowFrameless(); @@ -56,8 +57,8 @@ namespace BlackGui //! Top level widgets with names static QWidgetList topLevelApplicationWidgetsWithName(); - //! Position of main window - static QPoint mainWindowPosition(); + //! Position of main widget + static QPoint mainWidgetPosition(); //! Replace count in name such as "stations (4)" static QString replaceTabCountValue(const QString &oldName, int count); @@ -137,6 +138,9 @@ namespace BlackGui //! Main window font metrics or default metrics static QFontMetrics currentFontMetrics(); + //! Main window font metrics or default metrics + static QFontMetricsF currentFontMetricsF(); + //! Main window font or default font static QFont currentFont(); @@ -153,7 +157,7 @@ namespace BlackGui //! Constructor, use static methods only CGuiUtility() {} - static QWidget *s_mainApplicationWindow; + static QWidget *s_mainApplicationWidget; }; } // ns diff --git a/src/blackgui/infoarea.cpp b/src/blackgui/infoarea.cpp index 3c5772495..ad2883c21 100644 --- a/src/blackgui/infoarea.cpp +++ b/src/blackgui/infoarea.cpp @@ -509,7 +509,7 @@ namespace BlackGui m_infoAreaFloating = floating; if (m_infoAreaFloating) { - QPoint p = CGuiUtility::mainWindowPosition(); + QPoint p = CGuiUtility::mainWidgetPosition(); this->setWindowFlags(Qt::Dialog); this->move(p.rx() + 20, p.ry() + 20); this->show(); // not working without show diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 3700167b1..536a96b33 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -216,7 +216,7 @@ namespace BlackGui QWidget *CViewBaseNonTemplate::mainApplicationWindowWidget() const { - return CGuiUtility::mainApplicationWindow(); + return CGuiUtility::mainApplicationWidget(); } CStatusMessage CViewBaseNonTemplate::showFileLoadDialog() diff --git a/src/plugins/simulator/emulated/simulatoremulated.cpp b/src/plugins/simulator/emulated/simulatoremulated.cpp index d3205ccf9..f7642332f 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.cpp +++ b/src/plugins/simulator/emulated/simulatoremulated.cpp @@ -43,7 +43,7 @@ namespace BlackSimPlugin this->onSettingsChanged(); // init from settings m_myAircraft = this->getOwnAircraft(); // sync with provider - m_monitorWidget.reset(new CSimulatorEmulatedMonitorDialog(this, sGui->mainApplicationWindow())); + m_monitorWidget.reset(new CSimulatorEmulatedMonitorDialog(this, sGui->mainApplicationWidget())); connect(qApp, &QApplication::aboutToQuit, this, &CSimulatorEmulated::closeMonitor); connect(&m_interpolatorFetchTimer, &QTimer::timeout, this, &CSimulatorEmulated::fetchFromInterpolator); diff --git a/src/swiftcore/swiftcore.cpp b/src/swiftcore/swiftcore.cpp index 83a701554..b05893d7d 100644 --- a/src/swiftcore/swiftcore.cpp +++ b/src/swiftcore/swiftcore.cpp @@ -44,7 +44,7 @@ CSwiftCore::CSwiftCore(QWidget *parent) : { Q_ASSERT(sGui); ui->setupUi(this); - sGui->initMainApplicationWindow(this); + sGui->initMainApplicationWidget(this); const QString name(sGui->getApplicationNameAndVersion()); setSystemTrayMode(MinimizeToTray | QuitOnClose); setSystemTrayToolTip(name); diff --git a/src/swiftdata/swiftdata.cpp b/src/swiftdata/swiftdata.cpp index 4e88dcffa..f6e909874 100644 --- a/src/swiftdata/swiftdata.cpp +++ b/src/swiftdata/swiftdata.cpp @@ -94,7 +94,7 @@ void CSwiftData::onStyleSheetsChanged() void CSwiftData::init() { - sGui->initMainApplicationWindow(this); + sGui->initMainApplicationWidget(this); this->initLogDisplay(); m_mwaLogComponent = ui->comp_MainInfoArea->getLogComponent(); diff --git a/src/swiftguistandard/swiftguistdinit.cpp b/src/swiftguistandard/swiftguistdinit.cpp index f4f4bee8f..9ab6f2db5 100644 --- a/src/swiftguistandard/swiftguistdinit.cpp +++ b/src/swiftguistandard/swiftguistdinit.cpp @@ -69,7 +69,7 @@ void SwiftGuiStd::init() m_mwaOverlayFrame = ui->fr_CentralFrameInside; m_mwaLogComponent = ui->comp_MainInfoArea->getLogComponent(); - sGui->initMainApplicationWindow(this); + sGui->initMainApplicationWidget(this); // log messages m_logSubscriber.changeSubscription(CLogPattern().withSeverityAtOrAbove(CStatusMessage::SeverityInfo)); diff --git a/src/swiftlauncher/swiftlauncher.cpp b/src/swiftlauncher/swiftlauncher.cpp index 28dc9f649..cc1eb0f05 100644 --- a/src/swiftlauncher/swiftlauncher.cpp +++ b/src/swiftlauncher/swiftlauncher.cpp @@ -157,7 +157,7 @@ void CSwiftLauncher::mousePressEvent(QMouseEvent *event) void CSwiftLauncher::init() { - sGui->initMainApplicationWindow(this); + sGui->initMainApplicationWidget(this); m_mwaOverlayFrame = ui->fr_SwiftLauncherMain; m_mwaStatusBar = nullptr; diff --git a/src/swiftlauncher/swiftlauncher.h b/src/swiftlauncher/swiftlauncher.h index d812a1212..d072dd308 100644 --- a/src/swiftlauncher/swiftlauncher.h +++ b/src/swiftlauncher/swiftlauncher.h @@ -33,6 +33,7 @@ namespace BlackGui { namespace Components { class CConfigurationWizard; }} * \note Besides the fact the launcher makes it easy to start our applications it also pre-fetches some * cache files, hence reducing load times in the subsequent applications. Therefor starting via the launcher * is preferable, but not mandatory. + * \fixme it was better if launcher was a QMainWindow, because we have to deal with main widgets QDialog and QMainWindow because of launcher */ class CSwiftLauncher : public QDialog,