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"; m_pMiniToolBar = new VBoxMiniToolBar(centralWidget(), fIsAtTop ? VBoxMiniToolBar::AlignTop : VBoxMiniToolBar::AlignBottom, true, fIsAutoHide); m_pMiniToolBar->setSeamlessMode(true); m_pMiniToolBar->updateDisplay(true, true); QList<QMenu*> menus; QList<QAction*> actions = uisession()->newMenu()->actions(); for (int i=0; i < actions.size(); ++i) menus << actions.at(i)->menu(); *m_pMiniToolBar << menus; connect(m_pMiniToolBar, SIGNAL(minimizeAction()), this, SLOT(showMinimized())); connect(m_pMiniToolBar, SIGNAL(exitAction()), gActionPool->action(UIActionIndexRuntime_Toggle_Seamless), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(closeAction()), gActionPool->action(UIActionIndexRuntime_Simple_Close), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(geometryUpdated()), this, SLOT(sltUpdateMiniToolBarMask())); }
void UIMachineWindowFullscreen::prepareMiniToolBar() { /* Get current machine: */ CMachine machine = session().GetConsole().GetMachine(); /* Check if mini tool-bar should present: */ bool fIsActive = machine.GetExtraData(VBoxDefs::GUI_ShowMiniToolBar) != "no"; if (fIsActive) { /* Get the mini tool-bar alignment: */ bool fIsAtTop = machine.GetExtraData(VBoxDefs::GUI_MiniToolBarAlignment) == "top"; /* Get the mini tool-bar auto-hide feature availability: */ bool fIsAutoHide = machine.GetExtraData(VBoxDefs::GUI_MiniToolBarAutoHide) != "off"; m_pMiniToolBar = new VBoxMiniToolBar(centralWidget(), fIsAtTop ? VBoxMiniToolBar::AlignTop : VBoxMiniToolBar::AlignBottom, true, fIsAutoHide); m_pMiniToolBar->updateDisplay(true, true); QList<QMenu*> menus; QList<QAction*> actions = uisession()->newMenu()->actions(); for (int i=0; i < actions.size(); ++i) menus << actions.at(i)->menu(); *m_pMiniToolBar << menus; connect(m_pMiniToolBar, SIGNAL(minimizeAction()), this, SLOT(showMinimized())); connect(m_pMiniToolBar, SIGNAL(exitAction()), gActionPool->action(UIActionIndexRuntime_Toggle_Fullscreen), SLOT(trigger())); connect(m_pMiniToolBar, SIGNAL(closeAction()), gActionPool->action(UIActionIndexRuntime_Simple_Close), SLOT(trigger())); } }
/* Mini-toolbar constructor */ VBoxMiniToolBar::VBoxMiniToolBar(QWidget *pParent, Alignment alignment, bool fActive, bool fAutoHide) : UIToolBar(pParent) , m_pAutoHideAction(0) , m_pDisplayLabel(0) , m_pMinimizeAction(0) , m_pRestoreAction(0) , m_pCloseAction(0) , m_fActive(fActive) , m_fPolished(false) , m_fSeamless(false) , m_fAutoHide(fAutoHide) , m_fSlideToScreen(true) , m_fHideAfterSlide(false) , m_iAutoHideCounter(0) , m_iPositionX(0) , m_iPositionY(0) , m_pInsertPosition(0) , m_alignment(alignment) , m_fAnimated(true) , m_iScrollDelay(10) , m_iAutoScrollDelay(100) , m_iAutoHideTotalCounter(10) { /* Check parent widget presence: */ AssertMsg(parentWidget(), ("Parent widget must be set!\n")); /* Toolbar options: */ setIconSize(QSize(16, 16)); setVisible(false); /* Add pushpin: */ 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); m_pAutoHideAction->setChecked(!m_fAutoHide); connect(m_pAutoHideAction, SIGNAL(toggled(bool)), this, SLOT(togglePushpin(bool))); addAction(m_pAutoHideAction); /* Left menu margin: */ m_Spacings << widgetForAction(addWidget(new QWidget(this))); /* Right menu margin: */ m_pInsertPosition = addWidget(new QWidget(this)); m_Spacings << widgetForAction(m_pInsertPosition); /* Left label margin: */ m_LabelMargins << widgetForAction(addWidget(new QWidget(this))); /* Insert a label for VM Name: */ m_pDisplayLabel = new QLabel(this); m_pDisplayLabel->setAlignment(Qt::AlignCenter); addWidget(m_pDisplayLabel); /* Right label margin: */ m_LabelMargins << widgetForAction(addWidget(new QWidget(this))); /* 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(minimizeAction())); 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(exitAction())); 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(closeAction())); addAction(m_pCloseAction); /* Event-filter for parent widget to control resize: */ pParent->installEventFilter(this); /* Enable mouse-tracking for this & children allowing to get mouse-move events: */ setMouseTrackingEnabled(m_fAutoHide); }