Ref T189, allow to set main window (injection)

In swift UI applications we init the main window explicitly, no need afterwars to search for it
This commit is contained in:
Klaus Basan
2017-11-18 18:43:01 +01:00
parent 63fbeecc00
commit 12667bca12
3 changed files with 24 additions and 6 deletions

View File

@@ -187,13 +187,16 @@ namespace BlackGui
if (!mainWindow) { return; } if (!mainWindow) { return; }
if (m_uiSetupCompleted) { return; } if (m_uiSetupCompleted) { return; }
m_uiSetupCompleted = true; m_uiSetupCompleted = true;
const QString name(this->getApplicationNameVersionBetaDev()); const QString name(this->getApplicationNameVersionBetaDev());
mainWindow->setObjectName(QCoreApplication::applicationName()); mainWindow->setObjectName(QCoreApplication::applicationName());
mainWindow->setWindowTitle(name); mainWindow->setWindowTitle(name);
mainWindow->setWindowIcon(m_windowIcon); mainWindow->setWindowIcon(m_windowIcon);
mainWindow->setWindowIconText(name); mainWindow->setWindowIconText(name);
CStyleSheetUtility::setQSysInfoProperties(CGuiApplication::mainApplicationWindow(), true); CStyleSheetUtility::setQSysInfoProperties(mainWindow, true);
emit uiObjectTreeReady(); CGuiUtility::registerMainApplicationWindow(mainWindow);
emit this->uiObjectTreeReady();
} }
void CGuiApplication::addWindowFlags(Qt::WindowFlags flags) void CGuiApplication::addWindowFlags(Qt::WindowFlags flags)

View File

@@ -39,6 +39,8 @@ using namespace BlackMisc;
namespace BlackGui namespace BlackGui
{ {
QWidget *CGuiUtility::s_mainApplicationWindow = nullptr;
CEnableForFramelessWindow *CGuiUtility::mainFramelessEnabledApplicationWindow() CEnableForFramelessWindow *CGuiUtility::mainFramelessEnabledApplicationWindow()
{ {
const QWidgetList tlw = topLevelApplicationWidgetsWithName(); const QWidgetList tlw = topLevelApplicationWidgetsWithName();
@@ -53,7 +55,7 @@ namespace BlackGui
namespace Private namespace Private
{ {
QWidget *mainApplicationWindowImpl() QWidget *mainApplicationWindowSearch()
{ {
CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow();
if (mw && mw->getWidget()) if (mw && mw->getWidget())
@@ -73,15 +75,23 @@ namespace BlackGui
} }
} // ns } // ns
void CGuiUtility::registerMainApplicationWindow(QWidget *mainWindow)
{
CGuiUtility::s_mainApplicationWindow = mainWindow;
}
QWidget *CGuiUtility::mainApplicationWindow() QWidget *CGuiUtility::mainApplicationWindow()
{ {
static QWidget *mw = Private::mainApplicationWindowImpl(); if (!CGuiUtility::s_mainApplicationWindow)
return mw; {
CGuiUtility::s_mainApplicationWindow = Private::mainApplicationWindowSearch();
}
return CGuiUtility::s_mainApplicationWindow;
} }
bool CGuiUtility::isMainWindowFrameless() bool CGuiUtility::isMainWindowFrameless()
{ {
const CEnableForFramelessWindow *mw = mainFramelessEnabledApplicationWindow(); const CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow();
return (mw && mw->isFrameless()); return (mw && mw->isFrameless());
} }

View File

@@ -41,6 +41,9 @@ namespace BlackGui
//! Main (frameless enabled) application window //! Main (frameless enabled) application window
static CEnableForFramelessWindow *mainFramelessEnabledApplicationWindow(); static CEnableForFramelessWindow *mainFramelessEnabledApplicationWindow();
//! Register main application window widget if this is known
static void registerMainApplicationWindow(QWidget *mainWindow);
//! Main application window widget //! Main application window widget
static QWidget *mainApplicationWindow(); static QWidget *mainApplicationWindow();
@@ -131,6 +134,8 @@ namespace BlackGui
private: private:
//! Constructor, use static methods only //! Constructor, use static methods only
CGuiUtility() {} CGuiUtility() {}
static QWidget *s_mainApplicationWindow;
}; };
} // ns } // ns