int CGUIDialogContextMenu::ShowAndGetChoice(const vector<CStdString> &choices, const CPoint &pos) { // no choices?? if (choices.size() == 0) return 0; // popup the context menu CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (pMenu) { // load our menu pMenu->Initialize(); for (unsigned int i = 0; i < choices.size(); i++) pMenu->AddButton(choices[i]); // position it correctly pMenu->SetPosition(pos.x - pMenu->GetWidth() / 2, pos.y - pMenu->GetHeight() / 2); pMenu->DoModal(); if (pMenu->GetButton() > 0) return pMenu->GetButton(); } return 0; }
EPLAYERCORES CPlayerCoreFactory::SelectPlayerDialog(VECPLAYERCORES &vecCores, float posX, float posY) { CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); // Reset menu pMenu->Initialize(); // Add all possible players auto_aptr<int> btn_Cores(NULL); if( vecCores.size() > 0 ) { btn_Cores = new int[ vecCores.size() ]; btn_Cores[0] = 0; CStdString strCaption; //Add default player strCaption = CPlayerCoreFactory::GetPlayerName(vecCores[0]); strCaption += " ("; strCaption += g_localizeStrings.Get(13278); strCaption += ")"; btn_Cores[0] = pMenu->AddButton(strCaption); //Add all other players for( unsigned int i = 1; i < vecCores.size(); i++ ) { strCaption = CPlayerCoreFactory::GetPlayerName(vecCores[i]); btn_Cores[i] = pMenu->AddButton(strCaption); } } // Display menu if (posX && posY) pMenu->SetPosition(posX - pMenu->GetWidth() / 2, posY - pMenu->GetHeight() / 2); else pMenu->CenterWindow(); pMenu->DoModal(); //Check what player we selected int btnid = pMenu->GetButton(); for( unsigned int i = 0; i < vecCores.size(); i++ ) { if( btnid == btn_Cores[i] ) { return vecCores[i]; } } return EPC_NONE; }
bool CGUIMediaWindow::OnPopupMenu(int iItem) { // popup the context menu // grab our context menu CContextButtons buttons; GetContextButtons(iItem, buttons); if (buttons.size()) { // mark the item if (iItem >= 0 && iItem < m_vecItems->Size()) m_vecItems->Get(iItem)->Select(true); CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (!pMenu) return false; // load our menu pMenu->Initialize(); // add the buttons and execute it for (CContextButtons::iterator it = buttons.begin(); it != buttons.end(); it++) pMenu->AddButton((*it).second); // position it correctly float posX = 200; float posY = 100; const CGUIControl *pList = GetControl(CONTROL_VIEW_START); if (pList) { posX = pList->GetXPosition() + pList->GetWidth() / 2; posY = pList->GetYPosition() + pList->GetHeight() / 2; } pMenu->SetPosition(posX - pMenu->GetWidth() / 2, posY - pMenu->GetHeight() / 2); pMenu->DoModal(); // translate our button press CONTEXT_BUTTON btn = CONTEXT_BUTTON_CANCELLED; if (pMenu->GetButton() > 0 && pMenu->GetButton() <= (int)buttons.size()) btn = buttons[pMenu->GetButton() - 1].first; // deselect our item if (iItem >= 0 && iItem < m_vecItems->Size()) m_vecItems->Get(iItem)->Select(false); if (btn != CONTEXT_BUTTON_CANCELLED) return OnContextButton(iItem, btn); } return false; }
void CGUIDialogFavourites::OnPopupMenu(int item) { if (item < 0 || item >= m_favourites->Size()) return; CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (pMenu) { // highlight the item (*m_favourites)[item]->Select(true); // initialize the positioning float posX = 0; float posY = 0; const CGUIControl *pList = GetControl(FAVOURITES_LIST); if (pList) { posX = pList->GetXPosition() + pList->GetWidth() / 2; posY = pList->GetYPosition() + pList->GetHeight() / 2; } pMenu->Initialize(); int btn_MoveUp = m_favourites->Size() > 1 ? pMenu->AddButton(13332) : 0; int btn_MoveDown = m_favourites->Size() > 1 ? pMenu->AddButton(13333) : 0; int btn_Remove = pMenu->AddButton(15015); int btn_Rename = pMenu->AddButton(118); pMenu->SetPosition(GetPosX() + posX - pMenu->GetWidth() / 2, GetPosY() + posY - pMenu->GetHeight() / 2); pMenu->DoModal(GetID()); int button = pMenu->GetButton(); // unhighlight the item (*m_favourites)[item]->Select(false); if (button == btn_MoveUp) OnMoveItem(item, -1); else if (button == btn_MoveDown) OnMoveItem(item, 1); else if (button == btn_Remove) OnDelete(item); else if (button == btn_Rename) OnRename(item); } }
bool CGUIDialogContextMenu::SourcesMenu(const CStdString &strType, const CFileItem *item, float posX, float posY) { // TODO: This should be callable even if we don't have any valid items if (!item) return false; // Get the share object from our file object CMediaSource *share = GetShare(strType, item); // popup the context menu CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (pMenu) { // load our menu pMenu->Initialize(); // grab our context menu CContextButtons buttons; GetContextButtons(strType, share, buttons); // add the buttons and execute it for (CContextButtons::iterator it = buttons.begin(); it != buttons.end(); it++) pMenu->AddButton((*it).second); // position it correctly pMenu->SetPosition(posX - pMenu->GetWidth() / 2, posY - pMenu->GetHeight() / 2); pMenu->DoModal(); // translate our button press CONTEXT_BUTTON btn = CONTEXT_BUTTON_CANCELLED; if (pMenu->GetButton() > 0 && pMenu->GetButton() <= (int)buttons.size()) btn = buttons[pMenu->GetButton() - 1].first; if (btn != CONTEXT_BUTTON_CANCELLED) return OnContextButton(strType, share, btn); } return false; }
bool CGUIWindowLoginScreen::OnPopupMenu(int iItem) { if ( iItem < 0 || iItem >= m_vecItems->Size() ) return false; // calculate our position float posX = 200, posY = 100; const CGUIControl *pList = GetControl(CONTROL_BIG_LIST); if (pList) { posX = pList->GetXPosition() + pList->GetWidth() / 2; posY = pList->GetYPosition() + pList->GetHeight() / 2; } bool bSelect = m_vecItems->Get(iItem)->IsSelected(); // mark the item m_vecItems->Get(iItem)->Select(true); // popup the context menu CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (!pMenu) return false; // initialize the menu (loaded on demand) pMenu->Initialize(); int btn_EditProfile = pMenu->AddButton(20067); int btn_DeleteProfile = 0; int btn_ResetLock = 0; /* if (m_viewControl.GetSelectedItem() != 0) // no deleting the default profile btn_DeleteProfile = pMenu->AddButton(117); */ if (iItem == 0 && g_passwordManager.iMasterLockRetriesLeft == 0) btn_ResetLock = pMenu->AddButton(12334); // position it correctly pMenu->SetPosition(posX - pMenu->GetWidth() / 2, posY - pMenu->GetHeight() / 2); pMenu->DoModal(); int btnid = pMenu->GetButton(); if (btnid > 0) { if (btnid == btn_ResetLock) { if (g_passwordManager.CheckLock(g_settings.m_vecProfiles[0].getLockMode(),g_settings.m_vecProfiles[0].getLockCode(),20075)) g_passwordManager.iMasterLockRetriesLeft = g_guiSettings.GetInt("masterlock.maxretries"); else // be inconvenient g_application.getApplicationMessenger().Shutdown(); return true; } if (!g_passwordManager.IsMasterLockUnlocked(true)) return false; if (btnid == btn_EditProfile) CGUIDialogProfileSettings::ShowForProfile(m_viewControl.GetSelectedItem()); if (btnid == btn_DeleteProfile) { int iDelete = m_viewControl.GetSelectedItem(); m_viewControl.Clear(); g_settings.DeleteProfile(iDelete); Update(); m_viewControl.SetSelectedItem(0); } } //NOTE: this can potentially (de)select the wrong item if the filelisting has changed because of an action above. if (iItem < (int)g_settings.m_vecProfiles.size()) m_vecItems->Get(iItem)->Select(bSelect); return (btnid > 0); }
void CGUIWindowSettingsProfile::OnPopupMenu(int iItem) { // calculate our position float posX = 200; float posY = 100; const CGUIControl *pList = GetControl(CONTROL_PROFILES); if (pList) { posX = pList->GetXPosition() + pList->GetWidth() / 2; posY = pList->GetYPosition() + pList->GetHeight() / 2; } // popup the context menu CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (!pMenu) return ; // load our menu pMenu->Initialize(); if (iItem == (int)g_settings.m_vecProfiles.size()) return; // add the needed buttons int btnLoad = pMenu->AddButton(20092); // load profile int btnDelete=0; if (iItem > 0) btnDelete = pMenu->AddButton(117); // Delete // position it correctly pMenu->SetPosition(posX - pMenu->GetWidth() / 2, posY - pMenu->GetHeight() / 2); pMenu->DoModal(); int iButton = pMenu->GetButton(); if (iButton == btnLoad) { unsigned iCtrlID = GetFocusedControlID(); g_application.StopPlaying(); CGUIMessage msg2(GUI_MSG_ITEM_SELECTED, m_gWindowManager.GetActiveWindow(), iCtrlID); g_graphicsContext.SendMessage(msg2); g_application.getNetwork().NetworkMessage(CNetwork::SERVICES_DOWN,1); #ifdef HAS_XBOX_NETWORK g_network.Deinitialize(); #endif bool bOldMaster = g_passwordManager.bMasterUser; g_passwordManager.bMasterUser = true; g_settings.LoadProfile(iItem); g_application.StartEventServer(); // event server could be needed in some situations g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].setDate(); g_settings.SaveProfiles(PROFILES_FILE); // to set last loaded g_passwordManager.bMasterUser = bOldMaster; #ifdef HAS_XBOX_NETWORK g_network.Initialize(g_guiSettings.GetInt("network.assignment"), g_guiSettings.GetString("network.ipaddress").c_str(), g_guiSettings.GetString("network.subnet").c_str(), g_guiSettings.GetString("network.gateway").c_str(), g_guiSettings.GetString("network.dns").c_str()); #endif CGUIMessage msg3(GUI_MSG_SETFOCUS, m_gWindowManager.GetActiveWindow(), iCtrlID, 0); OnMessage(msg3); CGUIMessage msgSelect(GUI_MSG_ITEM_SELECT, m_gWindowManager.GetActiveWindow(), iCtrlID, msg2.GetParam1(), msg2.GetParam2()); OnMessage(msgSelect); g_weatherManager.Refresh(); } if (iButton == btnDelete) { if (g_settings.DeleteProfile(iItem)) iItem--; } LoadList(); CGUIMessage msg(GUI_MSG_ITEM_SELECT, GetID(),CONTROL_PROFILES,iItem); OnMessage(msg); }