void UIMachineWindowSeamless::prepareMiniToolbar() { /* Get machine: */ CMachine m = machine(); /* Make sure mini-toolbar is necessary: */ bool fIsActive = m.GetExtraData(GUI_ShowMiniToolBar) != "no"; if (!fIsActive) return; /* Get the mini-toolbar alignment: */ bool fIsAtTop = m.GetExtraData(GUI_MiniToolBarAlignment) == "top"; /* Get the mini-toolbar auto-hide feature availability: */ bool fIsAutoHide = m.GetExtraData(GUI_MiniToolBarAutoHide) != "off"; /* Create mini-toolbar: */ m_pMiniToolBar = new UIRuntimeMiniToolBar(this, fIsAtTop ? Qt::AlignTop : Qt::AlignBottom, IntegrationMode_External, fIsAutoHide); m_pMiniToolBar->show(); QList<QMenu*> menus; QList<QAction*> actions = uisession()->newMenu()->actions(); for (int i=0; i < actions.size(); ++i) menus << actions.at(i)->menu(); m_pMiniToolBar->addMenus(menus); connect(m_pMiniToolBar, SIGNAL(sigMinimizeAction()), this, SLOT(showMinimized())); connect(m_pMiniToolBar, SIGNAL(sigExitAction()), gActionPool->action(UIActionIndexRuntime_Toggle_Seamless), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigCloseAction()), gActionPool->action(UIActionIndexRuntime_Simple_Close), SLOT(trigger())); }
void UIMachineWindowFullscreen::prepareMiniToolbar() { /* Make sure mini-toolbar is not restricted: */ if (!gEDataManager->miniToolbarEnabled(vboxGlobal().managedVMUuid())) return; /* Create mini-toolbar: */ m_pMiniToolBar = new UIMiniToolBar(this, GeometryType_Full, gEDataManager->miniToolbarAlignment(vboxGlobal().managedVMUuid()), gEDataManager->autoHideMiniToolbar(vboxGlobal().managedVMUuid())); AssertPtrReturnVoid(m_pMiniToolBar); { /* Configure mini-toolbar: */ m_pMiniToolBar->addMenus(actionPool()->menus()); connect(m_pMiniToolBar, SIGNAL(sigMinimizeAction()), this, SLOT(showMinimized()), Qt::QueuedConnection); connect(m_pMiniToolBar, SIGNAL(sigExitAction()), actionPool()->action(UIActionIndexRT_M_View_T_Fullscreen), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigCloseAction()), actionPool()->action(UIActionIndex_M_Application_S_Close), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigNotifyAboutWindowActivationStolen()), this, SLOT(sltRevokeWindowActivation()), Qt::QueuedConnection); # ifdef Q_WS_X11 // WORKAROUND: // Due to Unity bug we want native full-screen flag to be set // for mini-toolbar _before_ trying to show it in full-screen mode. // That significantly improves of chances to have required geometry. if (vboxGlobal().typeOfWindowManager() == X11WMType_Compiz) vboxGlobal().setFullScreenFlag(m_pMiniToolBar); # endif /* Q_WS_X11 */ } }
void UIMachineWindowFullscreen::prepareMiniToolbar() { /* Make sure mini-toolbar is not restricted: */ if (!gEDataManager->miniToolbarEnabled(vboxGlobal().managedVMUuid())) return; /* Create mini-toolbar: */ m_pMiniToolBar = new UIMiniToolBar(this, GeometryType_Full, gEDataManager->miniToolbarAlignment(vboxGlobal().managedVMUuid()), gEDataManager->autoHideMiniToolbar(vboxGlobal().managedVMUuid())); AssertPtrReturnVoid(m_pMiniToolBar); { /* Configure mini-toolbar: */ m_pMiniToolBar->addMenus(actionPool()->menus()); connect(m_pMiniToolBar, SIGNAL(sigMinimizeAction()), this, SLOT(showMinimized()), Qt::QueuedConnection); connect(m_pMiniToolBar, SIGNAL(sigExitAction()), actionPool()->action(UIActionIndexRT_M_View_T_Fullscreen), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigCloseAction()), actionPool()->action(UIActionIndex_M_Application_S_Close), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigNotifyAboutWindowActivationStolen()), this, SLOT(sltRevokeWindowActivation()), Qt::QueuedConnection); } }
void UIMachineWindowSeamless::prepareMiniToolbar() { /* Make sure mini-toolbar is not restricted: */ if (!gEDataManager->miniToolbarEnabled(vboxGlobal().managedVMUuid())) return; /* Create mini-toolbar: */ m_pMiniToolBar = new UIRuntimeMiniToolBar(this, GeometryType_Available, gEDataManager->miniToolbarAlignment(vboxGlobal().managedVMUuid()), gEDataManager->autoHideMiniToolbar(vboxGlobal().managedVMUuid())); m_pMiniToolBar->show(); m_pMiniToolBar->addMenus(actionPool()->menus()); connect(m_pMiniToolBar, SIGNAL(sigMinimizeAction()), this, SLOT(showMinimized())); connect(m_pMiniToolBar, SIGNAL(sigExitAction()), actionPool()->action(UIActionIndexRT_M_View_T_Seamless), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigCloseAction()), actionPool()->action(UIActionIndex_M_Application_S_Close), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(sigNotifyAboutFocusStolen()), this, SLOT(sltRevokeFocus()), Qt::QueuedConnection); }
void UIMiniToolBar::prepare() { /* Configure toolbar: */ setIconSize(QSize(16, 16)); #ifdef VBOX_RUNTIME_UI_WITH_SHAPED_MINI_TOOLBAR /* Left margin: */ m_spacings << widgetForAction(addWidget(new QWidget)); #endif /* VBOX_RUNTIME_UI_WITH_SHAPED_MINI_TOOLBAR */ /* Prepare push-pin: */ m_pAutoHideAction = new QAction(this); m_pAutoHideAction->setIcon(UIIconPool::iconSet(":/pin_16px.png")); m_pAutoHideAction->setToolTip(tr("Always show the toolbar")); m_pAutoHideAction->setCheckable(true); connect(m_pAutoHideAction, SIGNAL(toggled(bool)), this, SIGNAL(sigAutoHideToggled())); addAction(m_pAutoHideAction); /* Left menu margin: */ m_spacings << widgetForAction(addWidget(new QWidget)); /* Right menu margin: */ m_pMenuInsertPosition = addWidget(new QWidget); m_spacings << widgetForAction(m_pMenuInsertPosition); /* Left label margin: */ m_margins << widgetForAction(addWidget(new QWidget)); /* Insert a label for VM Name: */ m_pLabel = new QLabel; m_pLabel->setAlignment(Qt::AlignCenter); addWidget(m_pLabel); /* Right label margin: */ m_margins << widgetForAction(addWidget(new QWidget)); /* Minimize action: */ m_pMinimizeAction = new QAction(this); m_pMinimizeAction->setIcon(UIIconPool::iconSet(":/minimize_16px.png")); m_pMinimizeAction->setToolTip(tr("Minimize Window")); connect(m_pMinimizeAction, SIGNAL(triggered()), this, SIGNAL(sigMinimizeAction())); addAction(m_pMinimizeAction); /* Exit action: */ m_pRestoreAction = new QAction(this); m_pRestoreAction->setIcon(UIIconPool::iconSet(":/restore_16px.png")); m_pRestoreAction->setToolTip(tr("Exit Full Screen or Seamless Mode")); connect(m_pRestoreAction, SIGNAL(triggered()), this, SIGNAL(sigExitAction())); addAction(m_pRestoreAction); /* Close action: */ m_pCloseAction = new QAction(this); m_pCloseAction->setIcon(UIIconPool::iconSet(":/close_16px.png")); m_pCloseAction->setToolTip(tr("Close VM")); connect(m_pCloseAction, SIGNAL(triggered()), this, SIGNAL(sigCloseAction())); addAction(m_pCloseAction); #ifdef VBOX_RUNTIME_UI_WITH_SHAPED_MINI_TOOLBAR /* Right margin: */ m_spacings << widgetForAction(addWidget(new QWidget)); #endif /* VBOX_RUNTIME_UI_WITH_SHAPED_MINI_TOOLBAR */ /* Resize to sizehint: */ resize(sizeHint()); }
void UIRuntimeMiniToolBar::prepare() { /* Allow any size: */ setMinimumSize(1, 1); /* Make sure we have no focus: */ setFocusPolicy(Qt::NoFocus); /* Prepare mdi-area: */ m_pMdiArea = new QMdiArea; { /* Configure own background: */ QPalette pal = m_pMdiArea->palette(); pal.setColor(QPalette::Window, QColor(Qt::transparent)); m_pMdiArea->setPalette(pal); /* Configure viewport background: */ m_pMdiArea->setBackground(QColor(Qt::transparent)); /* Layout mdi-area according parent-widget: */ QVBoxLayout *pMainLayout = new QVBoxLayout(this); pMainLayout->setContentsMargins(0, 0, 0, 0); pMainLayout->addWidget(m_pMdiArea); /* Make sure we have no focus: */ m_pMdiArea->setFocusPolicy(Qt::NoFocus); m_pMdiArea->viewport()->setFocusPolicy(Qt::NoFocus); } /* Prepare mini-toolbar: */ m_pToolbar = new UIMiniToolBar; { /* Propagate known options to child: */ m_pToolbar->setAutoHide(m_fAutoHide); m_pToolbar->setAlignment(m_alignment); m_pToolbar->setIntegrationMode(m_integrationMode); /* Configure own background: */ QPalette pal = m_pToolbar->palette(); pal.setColor(QPalette::Window, palette().color(QPalette::Window)); m_pToolbar->setPalette(pal); /* Configure child connections: */ connect(m_pToolbar, SIGNAL(sigResized()), this, SLOT(sltHandleToolbarResize())); connect(m_pToolbar, SIGNAL(sigAutoHideToggled()), this, SLOT(sltAutoHideToggled())); connect(m_pToolbar, SIGNAL(sigMinimizeAction()), this, SIGNAL(sigMinimizeAction())); connect(m_pToolbar, SIGNAL(sigExitAction()), this, SIGNAL(sigExitAction())); connect(m_pToolbar, SIGNAL(sigCloseAction()), this, SIGNAL(sigCloseAction())); /* Add child to mdi-area: */ m_pEmbeddedToolbar = m_pMdiArea->addSubWindow(m_pToolbar, Qt::Window | Qt::FramelessWindowHint); /* Make sure we have no focus: */ m_pToolbar->setFocusPolicy(Qt::NoFocus); m_pEmbeddedToolbar->setFocusPolicy(Qt::NoFocus); } /* Prepare hover-enter/leave timers: */ m_pHoverEnterTimer = new QTimer(this); { m_pHoverEnterTimer->setSingleShot(true); m_pHoverEnterTimer->setInterval(50); connect(m_pHoverEnterTimer, SIGNAL(timeout()), this, SLOT(sltHoverEnter())); } m_pHoverLeaveTimer = new QTimer(this); { m_pHoverLeaveTimer->setSingleShot(true); m_pHoverLeaveTimer->setInterval(500); connect(m_pHoverLeaveTimer, SIGNAL(timeout()), this, SLOT(sltHoverLeave())); } /* Install 'auto-hide' animation to 'toolbarPosition' property: */ m_pAnimation = UIAnimation::installPropertyAnimation(this, "toolbarPosition", "hiddenToolbarPosition", "shownToolbarPosition", SIGNAL(sigHoverEnter()), SIGNAL(sigHoverLeave()), true); /* Integrate if necessary: */ integrate(); /* Adjust geometry finally: */ adjustGeometry(); }