bool UIActionPool::processHotKey(const QKeySequence &key) { /* Get the list of keys: */ QList<int> keys = m_pool.keys(); /* Iterate through the whole list of keys: */ for (int i = 0; i < keys.size(); ++i) { /* Get current action: */ UIAction *pAction = m_pool[keys[i]]; /* Skip menus/separators: */ if (pAction->type() == UIActionType_Menu) continue; /* Get the hot key of the current action: */ QString strHotKey = VBoxGlobal::extractKeyFromActionText(pAction->text()); if (pAction->isEnabled() && pAction->isVisible() && !strHotKey.isEmpty()) { if (key.matches(QKeySequence(strHotKey)) == QKeySequence::ExactMatch) { /* We asynchronously post a special event instead of calling * pAction->trigger() directly, to let key presses and * releases be processed correctly by Qt first. * Note: we assume that nobody will delete the menu item * corresponding to the key sequence, so that the pointer to * menu data posted along with the event will remain valid in * the event handler, at least until the main window is closed. */ QApplication::postEvent(this, new ActivateActionEvent(pAction)); return true; } } } return false; }
void UIMachineLogicSeamless::prepareActionGroups() { /* Call to base-class: */ UIMachineLogic::prepareActionGroups(); /* Restrict 'Adjust Window', 'Guest Autoresize', 'Status Bar' and 'Resize' actions for 'View' menu: */ actionPool()->toRuntime()->setRestrictionForMenuView(UIActionRestrictionLevel_Logic, (UIExtraDataMetaDefs::RuntimeMenuViewActionType) (UIExtraDataMetaDefs::RuntimeMenuViewActionType_AdjustWindow | UIExtraDataMetaDefs::RuntimeMenuViewActionType_GuestAutoresize | UIExtraDataMetaDefs::RuntimeMenuViewActionType_MenuBar | UIExtraDataMetaDefs::RuntimeMenuViewActionType_StatusBar | UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize)); #ifdef VBOX_WS_MAC /* Restrict 'Window' menu: */ actionPool()->toRuntime()->setRestrictionForMenuBar(UIActionRestrictionLevel_Logic, UIExtraDataMetaDefs::MenuType_Window); #endif /* VBOX_WS_MAC */ /* Take care of view-action toggle state: */ UIAction *pActionSeamless = actionPool()->action(UIActionIndexRT_M_View_T_Seamless); if (!pActionSeamless->isChecked()) { pActionSeamless->blockSignals(true); pActionSeamless->setChecked(true); pActionSeamless->blockSignals(false); } }
void UIActionManager::PlayActionByName(const char* actionName) { UIAction* action = GetActionByName(actionName); if (action) { action->Play(); } }
UIAction* UIActionManager::GetActionByName(const char* actionName) { for (int i=0; i<m_ActionList->count(); i++) { UIAction* action = dynamic_cast<UIAction*>(m_ActionList->objectAtIndex(i)); if (strcmp(actionName, action->getName()) == 0) { return action; } } return NULL; }
void UIActionManager::initWithDictionary(cs::CSJsonDictionary *dic,UIWidget* root) { int actionCount = DICTOOL->getArrayCount_json(dic, "actionlist"); for (int i=0; i<actionCount; i++) { UIAction* action = new UIAction(); cs::CSJsonDictionary* actionDic = DICTOOL->getDictionaryFromArray_json(dic, "actionlist", i); action->initWithDictionary(actionDic,root); this->m_ActionList->addObject(action); } }
UIAction* UIActionManager::GetActionByName(const char* jsonName,const char* actionName) { CCArray* actionList = (CCArray*)(m_pActionDic->objectForKey(jsonName)); if (!actionList) { return NULL; } for (int i=0; i<actionList->count(); i++) { UIAction* action = dynamic_cast<UIAction*>(actionList->objectAtIndex(i)); if (strcmp(actionName, action->getName()) == 0) { return action; } } return NULL; }
void UIMachineLogicScale::cleanupActionGroups() { /* Take care of view-action toggle state: */ UIAction *pActionScale = actionPool()->action(UIActionIndexRT_M_View_T_Scale); if (pActionScale->isChecked()) { pActionScale->blockSignals(true); pActionScale->setChecked(false); pActionScale->blockSignals(false); } /* Allow 'Adjust Window', 'Guest Autoresize', 'Status Bar' and 'Resize' actions for 'View' menu: */ actionPool()->toRuntime()->setRestrictionForMenuView(UIActionRestrictionLevel_Logic, UIExtraDataMetaDefs::RuntimeMenuViewActionType_Invalid); /* Call to base-class: */ UIMachineLogic::cleanupActionGroups(); }
void UIActionManager::initWithDictionary(const char* jsonName,cs::CSJsonDictionary *dic,UIWidget* root) { std::string path = jsonName; int pos = path.find_last_of("/"); std::string fileName = path.substr(pos+1,path.length()); CCLOG("filename == %s",fileName.c_str()); CCArray* actionList = CCArray::create(); int actionCount = DICTOOL->getArrayCount_json(dic, "actionlist"); for (int i=0; i<actionCount; i++) { UIAction* action = new UIAction(); action->autorelease(); cs::CSJsonDictionary* actionDic = DICTOOL->getDictionaryFromArray_json(dic, "actionlist", i); action->initWithDictionary(actionDic,root); actionList->addObject(action); CC_SAFE_DELETE(actionDic); } m_pActionDic->setObject(actionList, fileName); }
void UIMachineWindowNormal::sltHandleIndicatorContextMenuRequest(IndicatorType enmIndicatorType, const QPoint &indicatorPosition) { /* Determine action depending on indicator-type: */ UIAction *pAction = 0; switch (enmIndicatorType) { case IndicatorType_HardDisks: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_HardDrives); break; case IndicatorType_OpticalDisks: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_OpticalDevices); break; case IndicatorType_FloppyDisks: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_FloppyDevices); break; case IndicatorType_Audio: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_Audio); break; case IndicatorType_Network: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_Network); break; case IndicatorType_USB: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_USBDevices); break; case IndicatorType_SharedFolders: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_SharedFolders); break; case IndicatorType_Display: pAction = actionPool()->action(UIActionIndexRT_M_ViewPopup); break; case IndicatorType_Recording: pAction = actionPool()->action(UIActionIndexRT_M_View_M_Recording); break; case IndicatorType_Mouse: pAction = actionPool()->action(UIActionIndexRT_M_Input_M_Mouse); break; case IndicatorType_Keyboard: pAction = actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard); break; default: break; } /* Raise action's context-menu: */ if (pAction && pAction->isEnabled()) pAction->menu()->exec(m_pIndicatorsPool->mapIndicatorPositionToGlobal(enmIndicatorType, indicatorPosition)); }
void UIMachineLogicSeamless::prepareActionGroups() { /* Call to base-class: */ UIMachineLogic::prepareActionGroups(); /* Guest auto-resize isn't allowed in seamless: */ gActionPool->action(UIActionIndexRuntime_Toggle_GuestAutoresize)->setVisible(false); /* Adjust-window isn't allowed in seamless: */ gActionPool->action(UIActionIndexRuntime_Simple_AdjustWindow)->setVisible(false); /* Disable mouse-integration isn't allowed in seamless: */ gActionPool->action(UIActionIndexRuntime_Toggle_MouseIntegration)->setVisible(false); /* Take care of view-action toggle state: */ UIAction *pActionSeamless = gActionPool->action(UIActionIndexRuntime_Toggle_Seamless); if (!pActionSeamless->isChecked()) { pActionSeamless->blockSignals(true); pActionSeamless->setChecked(true); pActionSeamless->blockSignals(false); pActionSeamless->update(); } }