From 3e982b014f31ce9f3ca8e6cfab2a9c57d933ad8a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 10 Jul 2015 01:22:37 +0200 Subject: [PATCH] refs #445, preparation for data GUI * improved finding of main window * project -> version string * location of application icon --- .../enablefordockwidgetinfoarea.cpp | 2 +- .../components/maininfoareacomponent.cpp | 7 ++-- src/blackgui/guiutility.cpp | 33 ++++++++++++++----- src/blackgui/guiutility.h | 4 +-- src/blackgui/infoarea.cpp | 9 +++-- src/blackgui/views/aircraftmodelview.cpp | 2 +- src/blackmisc/project.cpp | 6 ++-- src/blackmisc/project.h | 4 +-- 8 files changed, 39 insertions(+), 28 deletions(-) diff --git a/src/blackgui/components/enablefordockwidgetinfoarea.cpp b/src/blackgui/components/enablefordockwidgetinfoarea.cpp index 2d15e9f90..9222a06c9 100644 --- a/src/blackgui/components/enablefordockwidgetinfoarea.cpp +++ b/src/blackgui/components/enablefordockwidgetinfoarea.cpp @@ -69,7 +69,7 @@ namespace BlackGui CEnableForFramelessWindow *CEnableForDockWidgetInfoArea::mainApplicationWindow() const { - CEnableForFramelessWindow *mw = CGuiUtility::mainApplicationWindow(); + CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); return mw; } diff --git a/src/blackgui/components/maininfoareacomponent.cpp b/src/blackgui/components/maininfoareacomponent.cpp index b3fa307eb..379bf282c 100644 --- a/src/blackgui/components/maininfoareacomponent.cpp +++ b/src/blackgui/components/maininfoareacomponent.cpp @@ -13,10 +13,6 @@ #include "../stylesheetutility.h" #include "../guiutility.h" #include "blackmisc/icons.h" -#include -#include -#include -#include using namespace BlackMisc; using namespace BlackGui; @@ -30,7 +26,8 @@ namespace BlackGui ui(new Ui::CMainInfoAreaComponent) { ui->setupUi(this); - initInfoArea(); + initInfoArea(); // init base class + this->setWindowIcon(CIcons::swift24()); } CMainInfoAreaComponent::~CMainInfoAreaComponent() diff --git a/src/blackgui/guiutility.cpp b/src/blackgui/guiutility.cpp index 13e324b20..02fefbf1d 100644 --- a/src/blackgui/guiutility.cpp +++ b/src/blackgui/guiutility.cpp @@ -12,7 +12,7 @@ #include "blackmisc/filelogger.h" #include "blackmisc/logmessage.h" #include "blackmisc/project.h" -#include +#include #include #include #include @@ -22,27 +22,42 @@ using namespace BlackMisc; namespace BlackGui { - CEnableForFramelessWindow *CGuiUtility::mainApplicationWindow() + CEnableForFramelessWindow *CGuiUtility::mainFramelessEnabledApplicationWindow() { QWidgetList tlw = topLevelApplicationWidgetsWithName(); - foreach(QWidget * w, tlw) + for (QWidget *w : tlw) { + // best coice is to check on frameless window CEnableForFramelessWindow *mw = dynamic_cast(w); - if (!mw) { continue; } - if (mw->isMainApplicationWindow()) { return mw; } + if (mw && mw->isMainApplicationWindow()) { return mw; } + } return nullptr; } QWidget *CGuiUtility::mainApplicationWindowWidget() { - CEnableForFramelessWindow *mw = mainApplicationWindow(); - return mw ? mw->getWidget() : nullptr; + CEnableForFramelessWindow *mw = mainFramelessEnabledApplicationWindow(); + if (mw && mw->getWidget()) + { + return mw->getWidget(); + } + + // second choice, try via QMainWindow + QWidgetList tlw = topLevelApplicationWidgetsWithName(); + for (QWidget *w : tlw) + { + QMainWindow *qmw = qobject_cast(w); + if (!qmw) { continue; } + if (!qmw->parentWidget()) { return qmw; } + + } + return nullptr; } bool CGuiUtility::isMainWindowFrameless() { - CEnableForFramelessWindow *mw = mainApplicationWindow(); + CEnableForFramelessWindow *mw = mainFramelessEnabledApplicationWindow(); Q_ASSERT(mw); // there should be a main window return (mw && mw->isFrameless()); } @@ -90,7 +105,7 @@ namespace BlackGui QPoint CGuiUtility::mainWindowPosition() { - CEnableForFramelessWindow *mw = mainApplicationWindow(); + CEnableForFramelessWindow *mw = mainFramelessEnabledApplicationWindow(); return (mw) ? mw->getWidget()->pos() : QPoint(); } diff --git a/src/blackgui/guiutility.h b/src/blackgui/guiutility.h index bfed7e784..39734f6cb 100644 --- a/src/blackgui/guiutility.h +++ b/src/blackgui/guiutility.h @@ -25,8 +25,8 @@ namespace BlackGui { public: - //! Main application window - static CEnableForFramelessWindow *mainApplicationWindow(); + //! Main (frameless enabled) application window + static CEnableForFramelessWindow *mainFramelessEnabledApplicationWindow(); //! Main application window widget static QWidget *mainApplicationWindowWidget(); diff --git a/src/blackgui/infoarea.cpp b/src/blackgui/infoarea.cpp index 97c0a1538..b72888366 100644 --- a/src/blackgui/infoarea.cpp +++ b/src/blackgui/infoarea.cpp @@ -27,10 +27,10 @@ using namespace BlackMisc; namespace BlackGui { CInfoArea::CInfoArea(QWidget *parent) : - QMainWindow(parent), CEnableForFramelessWindow(CEnableForFramelessWindow::WindowTool, false, "framelessInfoArea", this) + QMainWindow(parent), + CEnableForFramelessWindow(CEnableForFramelessWindow::WindowTool, false, "framelessInfoArea", this) { this->ps_setWholeInfoAreaFloating(this->m_infoAreaFloating); - this->setWindowIcon(CIcons::swift24()); } CInfoArea::~CInfoArea() @@ -704,13 +704,12 @@ namespace BlackGui void CInfoArea::setTabPixmaps() { - if (!this->m_tabBar) return; + if (!this->m_tabBar) { return; } for (int i = 0; i < this->m_tabBar->count(); i++) { const QString t(this->m_tabBar->tabText(i)); int areaIndex = t.isEmpty() ? i : this->getAreaIndexByWindowTitle(t); - const QPixmap p = indexToPixmap(areaIndex); - this->m_tabBar->setTabIcon(i, p); + this->m_tabBar->setTabIcon(i, indexToPixmap(areaIndex)); } } diff --git a/src/blackgui/views/aircraftmodelview.cpp b/src/blackgui/views/aircraftmodelview.cpp index 9d32917ae..559289f84 100644 --- a/src/blackgui/views/aircraftmodelview.cpp +++ b/src/blackgui/views/aircraftmodelview.cpp @@ -29,7 +29,7 @@ namespace BlackGui // filter QWidget *mainWindow = this->mainApplicationWindowWidget(); - Q_ASSERT(mainWindow); + Q_ASSERT_X(mainWindow, Q_FUNC_INFO, "no main window found"); this->setFilterDialog(new CAircraftModelFilterForm(mainWindow)); } diff --git a/src/blackmisc/project.cpp b/src/blackmisc/project.cpp index c58e9321a..e158bd8dd 100644 --- a/src/blackmisc/project.cpp +++ b/src/blackmisc/project.cpp @@ -124,15 +124,15 @@ namespace BlackMisc return v; } - const QString &CProject::systemNameAndVersion() + const QString &CProject::swiftVersionString() { static QString s = QString("swift %1").arg(version()); return s; } - const char *CProject::systemNameAndVersionChar() + const char *CProject::swiftVersionChar() { - static const QByteArray a(systemNameAndVersion().toUtf8()); + static const QByteArray a(swiftVersionString().toUtf8()); return a.constData(); } diff --git a/src/blackmisc/project.h b/src/blackmisc/project.h index b4c77a65e..699e4624d 100644 --- a/src/blackmisc/project.h +++ b/src/blackmisc/project.h @@ -59,10 +59,10 @@ namespace BlackMisc static const QString &version(); //! System's name and version - static const QString &systemNameAndVersion(); + static const QString &swiftVersionString(); //! System's name and version - static const char *systemNameAndVersionChar(); + static const char *swiftVersionChar(); //! Version major static int versionMajor();