MainWindowPlugin::MainWindowPlugin() { FPluginManager = NULL; FOptionsManager = NULL; FTrayManager = NULL; FNotifications = NULL; FSystemIntegration = NULL; FOpenAction = NULL; FMinimizeNotifyId = 0; FActivationChanged = QTime::currentTime(); #ifdef Q_WS_WIN FMainWindow = new MainWindow(NULL, Qt::Window|Qt::CustomizeWindowHint|Qt::WindowTitleHint|Qt::WindowCloseButtonHint); #elif defined(Q_WS_MAC) FMainWindow = new MainWindow(NULL, Qt::Window); setWindowGrowButtonEnabled(FMainWindow, false); //setWindowFullScreenEnabled(FMainWindow, true); #else FMainWindow = new MainWindow(NULL, Qt::Window|Qt::CustomizeWindowHint|Qt::WindowTitleHint|Qt::WindowCloseButtonHint); #endif FMainWindow->setObjectName("mainWindow"); FMainWindowBorder = CustomBorderStorage::widgetBorder(FMainWindow); if (FMainWindowBorder) { FMainWindowBorder->installEventFilter(this); connect(FMainWindowBorder, SIGNAL(closed()), SLOT(onMainWindowClosed())); } else { FMainWindow->installEventFilter(this); connect(FMainWindow, SIGNAL(closed()),SLOT(onMainWindowClosed())); } }
void MainWindowPlugin::onOptionsChanged(const OptionsNode &ANode) { QWidget * widget = FMainWindowBorder ? (QWidget*)FMainWindowBorder : (QWidget*)FMainWindow; if (ANode.path() == OPV_MAINWINDOW_STAYONTOP) { bool show = widget->isVisible(); if (ANode.value().toBool()) widget->setWindowFlags(widget->windowFlags() | Qt::WindowStaysOnTopHint); else widget->setWindowFlags(widget->windowFlags() & ~Qt::WindowStaysOnTopHint); if (show) showMainWindow(); } #ifdef Q_OS_WIN else if (ANode.path() == OPV_MAINWINDOW_MINIMIZETOTRAY_W7) { if (QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7) { bool minimize = ANode.value().toBool(); FMainWindowBorder->setMinimizeOnClose(!minimize); FMainWindowBorder->setShowInTaskBar(!minimize); if (minimize) disconnect(FMainWindowBorder ? (QObject*)FMainWindowBorder : (QObject*)FMainWindow, SIGNAL(closed()), this, SLOT(onMainWindowClosed())); else connect(FMainWindowBorder ? (QObject*)FMainWindowBorder : (QObject*)FMainWindow, SIGNAL(closed()), SLOT(onMainWindowClosed())); } else FMainWindowBorder->setShowInTaskBar(false); } #endif }