void CGUIWindowPVRBase::CheckResumeRecording(CFileItem *item) { std::string resumeString = CGUIWindowPVRRecordings::GetResumeString(*item); if (!resumeString.empty()) { CContextButtons choices; choices.Add(CONTEXT_BUTTON_RESUME_ITEM, resumeString); choices.Add(CONTEXT_BUTTON_PLAY_ITEM, 12021); // Start from beginning int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (choice > 0) item->m_lStartOffset = choice == CONTEXT_BUTTON_RESUME_ITEM ? STARTOFFSET_RESUME : 0; } }
void CGUIWindowVideoPlaylist::GetContextButtons(int itemNumber, CContextButtons &buttons) { int itemPlaying = g_playlistPlayer.GetCurrentSong(); if (m_movingFrom >= 0) { if (itemNumber != m_movingFrom && (!g_partyModeManager.IsEnabled() || itemNumber > itemPlaying)) buttons.Add(CONTEXT_BUTTON_MOVE_HERE, 13252); // move item here buttons.Add(CONTEXT_BUTTON_CANCEL_MOVE, 13253); } else { if (itemNumber > -1) { CFileItemPtr item = m_vecItems->Get(itemNumber); // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; if (item->IsVideoDb()) { CFileItem item2(item->GetVideoInfoTag()->m_strFileNameAndPath, false); CPlayerCoreFactory::Get().GetPlayers(item2, vecCores); } else CPlayerCoreFactory::Get().GetPlayers(*item, vecCores); if (vecCores.size() > 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... if (XFILE::CFavouritesDirectory::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; } if (itemNumber > (g_partyModeManager.IsEnabled() ? 1 : 0)) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_UP, 13332); if (itemNumber + 1 < m_vecItems->Size()) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_DOWN, 13333); if (!g_partyModeManager.IsEnabled() || itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM, 13251); if (itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_DELETE, 15015); } if (g_partyModeManager.IsEnabled()) { buttons.Add(CONTEXT_BUTTON_EDIT_PARTYMODE, 21439); buttons.Add(CONTEXT_BUTTON_CANCEL_PARTYMODE, 588); // cancel party mode } if(itemNumber > 0 && itemNumber < m_vecItems->Size()) CContextMenuManager::Get().AddVisibleItems(m_vecItems->Get(itemNumber), buttons); }
void CGUIWindowPVRTimersBase::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); if (!URIUtils::PathEquals(pItem->GetPath(), CPVRTimersPath::PATH_ADDTIMER)) { CPVRTimerInfoTagPtr timer(pItem->GetPVRTimerInfoTag()); if (timer) { if (timer->GetEpgInfoTag()) buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* Programme information */ CPVRTimerTypePtr timerType(timer->GetTimerType()); if (timerType) { if (timerType->SupportsEnableDisable()) { if (timer->m_state == PVR_TIMER_STATE_DISABLED) buttons.Add(CONTEXT_BUTTON_ACTIVATE, 843); /* Activate */ else buttons.Add(CONTEXT_BUTTON_ACTIVATE, 844); /* Deactivate */ } if (timer->GetTimerRuleId() != PVR_TIMER_NO_PARENT) { buttons.Add(CONTEXT_BUTTON_EDIT_TIMER_RULE, 19243); /* Edit timer rule */ buttons.Add(CONTEXT_BUTTON_DELETE_TIMER_RULE, 19295); /* Delete timer rule */ } if (timerType && !timerType->IsReadOnly() && timer->GetTimerRuleId() == PVR_TIMER_NO_PARENT) buttons.Add(CONTEXT_BUTTON_EDIT_TIMER, 21450); /* Edit */ // As epg-based timers will get it's title from the epg tag, they should not be renamable. if (timer->IsManual() && !timerType->IsReadOnly()) buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* Rename */ if (timer->IsRecording()) buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19059); /* Stop recording */ else if (timerType && !timerType->IsReadOnly()) buttons.Add(CONTEXT_BUTTON_DELETE, 117); /* Delete */ } if (g_PVRClients->HasMenuHooks(timer->m_iClientId, PVR_MENUHOOK_TIMER)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ } } CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); }
void CGUIWindowPictures::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if ( m_vecItems->IsVirtualDirectoryRoot() || m_vecItems->GetPath() == "sources://pictures/" ) { CGUIDialogContextMenu::GetContextButtons("pictures", item, buttons); } else { if (item && !StringUtils::StartsWithNoCase(item->GetPath(), "addons://more/")) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO, 24003); // Add-on info if (!(item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || item->IsScript())) { buttons.Add(CONTEXT_BUTTON_INFO, 13406); // picture info buttons.Add(CONTEXT_BUTTON_VIEW_SLIDESHOW, item->m_bIsFolder ? 13317 : 13422); // View Slideshow } if (item->m_bIsFolder) buttons.Add(CONTEXT_BUTTON_RECURSIVE_SLIDESHOW, 13318); // Recursive Slideshow if (!m_thumbLoader.IsLoading()) buttons.Add(CONTEXT_BUTTON_REFRESH_THUMBS, 13315); // Create Thumbnails if (CSettings::Get().GetBool("filelists.allowfiledeletion") && !item->IsReadOnly()) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); buttons.Add(CONTEXT_BUTTON_RENAME, 118); } } if (item->IsPlugin() || item->IsScript() || m_vecItems->IsPlugin()) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); else { buttons.Add(CONTEXT_BUTTON_GOTO_ROOT, 20128); buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523); } } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) buttons.Add(CONTEXT_BUTTON_SETTINGS, 5); // Settings CContextMenuManager::Get().AddVisibleItems(item, buttons); }
void CGUIWindowPVRTimers::GetContextButtons(int itemNumber, CContextButtons &buttons) const { if (itemNumber < 0 || itemNumber >= m_parent->m_vecItems->Size()) return; CFileItemPtr pItem = m_parent->m_vecItems->Get(itemNumber); /* Check for a empty file item list, means only a file item with the name "Add timer..." is present */ if (pItem->GetPath() == "pvr://timers/add.timer") { buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */ if (m_parent->m_vecItems->Size() > 1) { buttons.Add(CONTEXT_BUTTON_SORTBY_NAME, 103); /* sort by name */ buttons.Add(CONTEXT_BUTTON_SORTBY_DATE, 104); /* sort by date */ } } else { buttons.Add(CONTEXT_BUTTON_EDIT, 19057); /* edit timer */ buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */ buttons.Add(CONTEXT_BUTTON_ACTIVATE, 19058); /* activate/deactivate */ buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* rename timer */ buttons.Add(CONTEXT_BUTTON_DELETE, 117); /* delete timer */ buttons.Add(CONTEXT_BUTTON_SORTBY_NAME, 103); /* sort by name */ buttons.Add(CONTEXT_BUTTON_SORTBY_DATE, 104); /* sort by date */ if (g_PVRClients->HasMenuHooks(pItem->GetPVRTimerInfoTag()->m_iClientId)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ } }
void CGUIWindowMusicPlayList::GetContextButtons(int itemNumber, CContextButtons &buttons) { // is this playlist playing? int itemPlaying = g_playlistPlayer.GetCurrentSong(); if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) { CFileItemPtr item; item = m_vecItems->Get(itemNumber); if (m_movingFrom >= 0) { // we can move the item to any position not where we are, and any position not above currently // playing item in party mode #ifndef _BOXEE_ if (itemNumber != m_movingFrom && (!g_partyModeManager.IsEnabled() || itemNumber > itemPlaying)) buttons.Add(CONTEXT_BUTTON_MOVE_HERE, 13252); // move item here #endif buttons.Add(CONTEXT_BUTTON_CANCEL_MOVE, 13253); } else { // aren't in a move if (!item->IsLastFM() && !item->IsShoutCast()) buttons.Add(CONTEXT_BUTTON_SONG_INFO, 658); // Song Info if (CFavourites::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite #ifndef _BOXEE_ else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; if (itemNumber > (g_partyModeManager.IsEnabled() ? 1 : 0)) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_UP, 13332); #endif if (itemNumber + 1 < m_vecItems->Size()) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_DOWN, 13333); #ifndef _BOXEE_ if (!g_partyModeManager.IsEnabled() || itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM, 13251); #endif if (itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_DELETE, 1210); // Remove } } #ifndef _BOXEE_ if (g_partyModeManager.IsEnabled()) { buttons.Add(CONTEXT_BUTTON_EDIT_PARTYMODE, 21439); buttons.Add(CONTEXT_BUTTON_CANCEL_PARTYMODE, 588); // cancel party mode } #endif }
void CGUIWindowPVRSearch::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); buttons.Add(CONTEXT_BUTTON_CLEAR, 19232); /* Clear search results */ CEpgInfoTagPtr epg(pItem->GetEPGInfoTag()); if (epg) { buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* Programme information */ CPVRTimerInfoTagPtr timer(epg->Timer()); if (timer) { if (timer->GetTimerRuleId() != PVR_TIMER_NO_PARENT) buttons.Add(CONTEXT_BUTTON_EDIT_TIMER_RULE, 19243); /* Edit timer rule */ const CPVRTimerTypePtr timerType(timer->GetTimerType()); if (timerType && !timerType->IsReadOnly()) buttons.Add(CONTEXT_BUTTON_EDIT_TIMER, 19242); /* Edit timer */ if (timer->IsRecording()) buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19059); /* Stop recording */ else { if (timerType && !timerType->IsReadOnly()) buttons.Add(CONTEXT_BUTTON_DELETE_TIMER, 19060); /* Delete timer */ } } else if (g_PVRClients->SupportsTimers()) { if (epg->EndAsLocalTime() > CDateTime::GetCurrentDateTime()) buttons.Add(CONTEXT_BUTTON_START_RECORD, 264); /* Record */ buttons.Add(CONTEXT_BUTTON_ADD_TIMER, 19061); /* Add timer */ } if (epg->HasRecording()) buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 19687); /* Play recording */ CPVRChannelPtr channel(epg->ChannelTag()); if (channel && g_PVRClients->HasMenuHooks(channel->ClientID(), PVR_MENUHOOK_EPG)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ } CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); }
void CGUIMediaWindow::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItem *item = (itemNumber >= 0 && itemNumber < m_vecItems->Size()) ? m_vecItems->Get(itemNumber) : NULL; if (item == NULL) return; if (item->IsPluginFolder()) { if (CPluginSettings::SettingsExist(item->m_strPath)) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); } // user added buttons CStdString label; CStdString action; for (int i = CONTEXT_BUTTON_USER1; i <= CONTEXT_BUTTON_USER10; i++) { label.Format("contextmenulabel(%i)", i - CONTEXT_BUTTON_USER1); if (item->GetProperty(label).IsEmpty()) break; action.Format("contextmenuaction(%i)", i - CONTEXT_BUTTON_USER1); if (item->GetProperty(action).IsEmpty()) break; buttons.Add((CONTEXT_BUTTON)i, item->GetProperty(label)); } #ifdef PRE_SKIN_VERSION_2_1_COMPATIBILITY // check if the skin even supports favourites RESOLUTION res; CStdString favourites(g_SkinInfo.GetSkinPath("DialogFavourites.xml", &res)); if (XFILE::CFile::Exists(favourites)) { #endif // TODO: FAVOURITES Conditions on masterlock and localisation if (!item->IsParentFolder() && !item->m_strPath.Equals("add") && !item->m_strPath.Equals("newplaylist://") && !item->m_strPath.Left(19).Equals("newsmartplaylist://")) { if (CFavourites::IsFavourite(item, GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; } #ifdef PRE_SKIN_VERSION_2_1_COMPATIBILITY } #endif }
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 CGUIWindowPVRChannelsBase::GetContextButtons(int itemNumber, CContextButtons &buttons) { // Add parent buttons before the Manage button CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); buttons.Add(CONTEXT_BUTTON_EDIT, 16106); /* Manage... */ }
void CGUIWindowPVRRecordings::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); if (pItem->IsParentFolder()) { // No context menu for ".." items return; } bool isDeletedRecording = false; CPVRRecordingPtr recording(pItem->GetPVRRecordingInfoTag()); if (recording) { isDeletedRecording = recording->IsDeleted(); if (isDeletedRecording) { if (m_vecItems->GetObjectCount() > 1) buttons.Add(CONTEXT_BUTTON_DELETE_ALL, 19292); /* Delete all permanently */ } } if (!isDeletedRecording) CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); }
void CGUIWindowMusicPlayList::GetContextButtons(int itemNumber, CContextButtons &buttons) { // is this playlist playing? int itemPlaying = g_playlistPlayer.GetCurrentSong(); if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) { CFileItemPtr item; item = m_vecItems->Get(itemNumber); if (m_movingFrom >= 0) { // we can move the item to any position not where we are, and any position not above currently // playing item in party mode if (itemNumber != m_movingFrom && (!g_partyModeManager.IsEnabled() || itemNumber > itemPlaying)) buttons.Add(CONTEXT_BUTTON_MOVE_HERE, 13252); // move item here buttons.Add(CONTEXT_BUTTON_CANCEL_MOVE, 13253); } else { // aren't in a move // check what players we have, if we have multiple display play with option std::vector<std::string> players; CPlayerCoreFactory::GetInstance().GetPlayers(*item, players); if (players.size() > 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... if (XFILE::CFavouritesDirectory::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; if (itemNumber > (g_partyModeManager.IsEnabled() ? 1 : 0)) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_UP, 13332); if (itemNumber + 1 < m_vecItems->Size()) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_DOWN, 13333); if (!g_partyModeManager.IsEnabled() || itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM, 13251); if (itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_DELETE, 1210); // Remove } } if (g_partyModeManager.IsEnabled()) { buttons.Add(CONTEXT_BUTTON_EDIT_PARTYMODE, 21439); buttons.Add(CONTEXT_BUTTON_CANCEL_PARTYMODE, 588); // cancel party mode } }
bool CGUIWindowPVRBase::CheckResumeRecording(CFileItem *item) { bool bPlayIt(true); std::string resumeString = CGUIWindowPVRRecordings::GetResumeString(*item); if (!resumeString.empty()) { CContextButtons choices; choices.Add(CONTEXT_BUTTON_RESUME_ITEM, resumeString); choices.Add(CONTEXT_BUTTON_PLAY_ITEM, 12021); // Start from beginning int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (choice > 0) item->m_lStartOffset = choice == CONTEXT_BUTTON_RESUME_ITEM ? STARTOFFSET_RESUME : 0; else bPlayIt = false; // context menu cancelled } return bPlayIt; }
void CGUIWindowMusicBase::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if (item && !item->IsParentFolder()) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO,24003); // Add-on info if (item->GetExtraInfo().Equals("lastfmloved")) { buttons.Add(CONTEXT_BUTTON_LASTFM_UNLOVE_ITEM, 15295); //unlove } else if (item->GetExtraInfo().Equals("lastfmbanned")) { buttons.Add(CONTEXT_BUTTON_LASTFM_UNBAN_ITEM, 15296); //unban } else if (item->CanQueue() && !item->IsAddonsPath() && !item->IsScript()) { buttons.Add(CONTEXT_BUTTON_QUEUE_ITEM, 13347); //queue // allow a folder to be ad-hoc queued and played by the default player if (item->m_bIsFolder || (item->IsPlayList() && !g_advancedSettings.m_playlistAsFolders)) { buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 208); // Play } else { // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*item, vecCores); if (vecCores.size() >= 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... } if (item->IsSmartPlayList()) { buttons.Add(CONTEXT_BUTTON_PLAY_PARTYMODE, 15216); // Play in Partymode } if (item->IsSmartPlayList() || m_vecItems->IsSmartPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT_SMART_PLAYLIST, 586); else if (item->IsPlayList() || m_vecItems->IsPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT, 586); } } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); }
bool CPVRGUIActions::CheckResumeRecording(const CFileItemPtr &item) const { bool bPlayIt(true); std::string resumeString(GetResumeLabel(*item)); if (!resumeString.empty()) { CContextButtons choices; choices.Add(CONTEXT_BUTTON_RESUME_ITEM, resumeString); choices.Add(CONTEXT_BUTTON_PLAY_ITEM, 12021); // Play from beginning int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (choice > 0) item->m_lStartOffset = choice == CONTEXT_BUTTON_RESUME_ITEM ? STARTOFFSET_RESUME : 0; else bPlayIt = false; // context menu cancelled } return bPlayIt; }
void CGUIWindowPVRSearch::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); if (pItem->HasEPGInfoTag()) { if (pItem->GetEPGInfoTag()->EndAsLocalTime() > CDateTime::GetCurrentDateTime()) { if (!pItem->GetEPGInfoTag()->HasTimer()) { if (pItem->GetEPGInfoTag()->StartAsLocalTime() < CDateTime::GetCurrentDateTime()) buttons.Add(CONTEXT_BUTTON_START_RECORD, 264); /* RECORD programme */ else buttons.Add(CONTEXT_BUTTON_START_RECORD, 19061); /* Create a Timer */ } else { if (pItem->GetEPGInfoTag()->StartAsLocalTime() < CDateTime::GetCurrentDateTime()) buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19059); /* Stop recording */ else buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19060); /* Delete Timer */ } } buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* Epg info button */ if (pItem->GetEPGInfoTag()->HasPVRChannel() && g_PVRClients->HasMenuHooks(pItem->GetEPGInfoTag()->ChannelTag()->ClientID(), PVR_MENUHOOK_EPG)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ } buttons.Add(CONTEXT_BUTTON_CLEAR, 19232); /* Clear search results */ }
void CGUIWindowPVRGuide::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 19000); /* switch channel */ if (pItem->HasEPGInfoTag() && pItem->GetEPGInfoTag()->HasRecording()) buttons.Add(CONTEXT_BUTTON_PLAY_OTHER, 19687); /* play recording */ CFileItemPtr timer = g_PVRTimers->GetTimerForEpgTag(pItem.get()); if (timer && timer->HasPVRTimerInfoTag()) { if (timer->GetPVRTimerInfoTag()->IsRecording()) buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19059); /* stop recording */ else buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19060); /* delete timer */ } else if (pItem->HasEPGInfoTag() && pItem->GetEPGInfoTag()->EndAsLocalTime() > CDateTime::GetCurrentDateTime()) { if (pItem->GetEPGInfoTag()->StartAsLocalTime() < CDateTime::GetCurrentDateTime()) buttons.Add(CONTEXT_BUTTON_START_RECORD, 264); /* record */ else buttons.Add(CONTEXT_BUTTON_START_RECORD, 19061); /* add timer */ } buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* epg info */ buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* find similar program */ if (m_viewControl.GetCurrentControl() == GUIDE_VIEW_TIMELINE) { buttons.Add(CONTEXT_BUTTON_BEGIN, 19063); /* go to begin */ buttons.Add(CONTEXT_BUTTON_NOW, 19070); /* go to now */ buttons.Add(CONTEXT_BUTTON_END, 19064); /* go to end */ } if (pItem->HasEPGInfoTag() && pItem->GetEPGInfoTag()->HasPVRChannel() && g_PVRClients->HasMenuHooks(pItem->GetEPGInfoTag()->ChannelTag()->ClientID(), PVR_MENUHOOK_EPG)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); CContextMenuManager::Get().AddVisibleItems(pItem, buttons); }
void CGUIWindowPVRTimers::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); /* Check for a empty file item list, means only a file item with the name "Add timer..." is present */ if (URIUtils::PathEquals(pItem->GetPath(), "pvr://timers/addtimer/")) { buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */ } else { buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* Find similar program */ buttons.Add(CONTEXT_BUTTON_ACTIVATE, 19058); /* activate/deactivate */ buttons.Add(CONTEXT_BUTTON_DELETE, 117); /* delete timer */ buttons.Add(CONTEXT_BUTTON_EDIT, 19057); /* edit timer */ buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* rename timer */ buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */ if (g_PVRClients->HasMenuHooks(pItem->GetPVRTimerInfoTag()->m_iClientId, PVR_MENUHOOK_TIMER)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ } CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); CContextMenuManager::Get().AddVisibleItems(pItem, buttons); }
bool CGUIWindowLoginScreen::OnPopupMenu(int iItem) { if ( iItem < 0 || iItem >= m_vecItems->Size() ) return false; bool bSelect = m_vecItems->Get(iItem)->IsSelected(); // mark the item m_vecItems->Get(iItem)->Select(true); CContextButtons choices; choices.Add(1, 20067); /* if (m_viewControl.GetSelectedItem() != 0) // no deleting the default profile choices.Add(2, 117); */ if (iItem == 0 && g_passwordManager.iMasterLockRetriesLeft == 0) choices.Add(3, 12334); int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (choice == 3) { if (g_passwordManager.CheckLock(CProfilesManager::Get().GetMasterProfile().getLockMode(),CProfilesManager::Get().GetMasterProfile().getLockCode(),20075)) g_passwordManager.iMasterLockRetriesLeft = CSettings::Get().GetInt("masterlock.maxretries"); else // be inconvenient CApplicationMessenger::Get().Shutdown(); return true; } if (!g_passwordManager.IsMasterLockUnlocked(true)) return false; if (choice == 1) CGUIDialogProfileSettings::ShowForProfile(m_viewControl.GetSelectedItem()); if (choice == 2) { int iDelete = m_viewControl.GetSelectedItem(); m_viewControl.Clear(); CProfilesManager::Get().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)CProfilesManager::Get().GetNumberOfProfiles()) m_vecItems->Get(iItem)->Select(bSelect); return (choice > 0); }
void CGUIWindowMusicPlaylistEditor::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (GetFocusedControlID() == CONTROL_PLAYLIST) { int playlistItem = GetCurrentPlaylistItem(); if (playlistItem > 0) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_UP, 13332); if (playlistItem >= 0 && playlistItem < m_playlist->Size()) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_DOWN, 13333); if (playlistItem >= 0) buttons.Add(CONTEXT_BUTTON_DELETE, 1210); } else if (item && !item->IsParentFolder() && !m_vecItems->IsVirtualDirectoryRoot()) buttons.Add(CONTEXT_BUTTON_QUEUE_ITEM, 15019); if (m_playlist->Size()) { buttons.Add(CONTEXT_BUTTON_SAVE, 190); buttons.Add(CONTEXT_BUTTON_CLEAR, 192); } buttons.Add(CONTEXT_BUTTON_LOAD, 21385); }
void CGUIWindowAddonBrowser::GetContextButtons(int itemNumber, CContextButtons& buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); std::string addonId = pItem->GetProperty("Addon.ID").asString(); if (!addonId.empty()) { buttons.Add(CONTEXT_BUTTON_INFO, 24003); AddonPtr addon; if (CAddonMgr::Get().GetAddon(addonId, addon, ADDON_UNKNOWN, false) && addon->HasSettings()) buttons.Add(CONTEXT_BUTTON_SETTINGS, 24020); } CContextMenuManager::Get().AddVisibleItems(pItem, buttons); }
void CGUIWindowPVRTimers::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); /* Check for a empty file item list, means only a file item with the name "Add timer..." is present */ if (URIUtils::PathEquals(pItem->GetPath(), CPVRTimersPath::PATH_ADDTIMER)) { buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */ } else { if (pItem->GetPVRTimerInfoTag()->GetEpgInfoTag()) buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* epg info */ buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* Find similar program */ if (pItem->GetPVRTimerInfoTag()->HasTimerType()) { if (pItem->GetPVRTimerInfoTag()->GetTimerType()->SupportsEnableDisable()) { if (pItem->GetPVRTimerInfoTag()->m_state == PVR_TIMER_STATE_DISABLED) buttons.Add(CONTEXT_BUTTON_ACTIVATE, 843); /* activate timer */ else buttons.Add(CONTEXT_BUTTON_ACTIVATE, 844); /* deactivate timer */ } if (!pItem->GetPVRTimerInfoTag()->GetTimerType()->IsReadOnly()) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); /* delete */ buttons.Add(CONTEXT_BUTTON_EDIT, 19057); /* edit timer */ // As epg-based timers will get it's title from the epg tag, they should not be renamable. if (pItem->GetPVRTimerInfoTag()->IsManual()) buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* rename */ } } buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */ if (g_PVRClients->HasMenuHooks(pItem->GetPVRTimerInfoTag()->m_iClientId, PVR_MENUHOOK_TIMER)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ } CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons); CContextMenuManager::GetInstance().AddVisibleItems(pItem, buttons); }
bool CGUIWindowPVRRecordings::OnClickList(CGUIMessage &message) { bool bReturn = false; if (IsSelectedList(message)) { bReturn = true; int iAction = message.GetParam1(); int iItem = m_parent->m_viewControl.GetSelectedItem(); /* get the fileitem pointer */ if (iItem < 0 || iItem >= (int) m_parent->m_vecItems->Size()) return bReturn; CFileItemPtr pItem = m_parent->m_vecItems->Get(iItem); /* process actions */ if (iAction == ACTION_SELECT_ITEM || iAction == ACTION_MOUSE_LEFT_CLICK || iAction == ACTION_PLAY) { int choice = CONTEXT_BUTTON_PLAY_ITEM; CStdString resumeString = GetResumeString(*pItem); if (!resumeString.IsEmpty()) { CContextButtons choices; choices.Add(CONTEXT_BUTTON_RESUME_ITEM, resumeString); choices.Add(CONTEXT_BUTTON_PLAY_ITEM, 12021); choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); } if (choice < 0) bReturn = true; else bReturn = OnContextButtonPlay(pItem.get(), (CONTEXT_BUTTON)choice); } else if (iAction == ACTION_CONTEXT_MENU || iAction == ACTION_MOUSE_RIGHT_CLICK) m_parent->OnPopupMenu(iItem); else if (iAction == ACTION_SHOW_INFO) ShowRecordingInfo(pItem.get()); else if (iAction == ACTION_DELETE_ITEM) bReturn = ActionDeleteRecording(pItem.get()); else bReturn = false; } return bReturn; }
void CGUIDialogVideoBookmarks::OnPopupMenu(int item) { if (item < 0 || item >= (int) m_bookmarks.size()) return; // highlight the item (*m_vecItems)[item]->Select(true); CContextButtons choices; choices.Add(1, (m_bookmarks[item].type == CBookmark::EPISODE ? 20405 : 20404)); // "Remove episode bookmark" or "Remove bookmark" int button = CGUIDialogContextMenu::ShowAndGetChoice(choices); // unhighlight the item (*m_vecItems)[item]->Select(false); if (button == 1) Delete(item); }
void CContextMenuManager::AddVisibleItems(const CFileItemPtr& item, CContextButtons& list, const std::string& parent /* = "" */) { if (!item) return; for (const auto& kv : m_contextAddons) { if (kv.second->GetParent() == parent && kv.second->IsVisible(item)) list.push_back(std::make_pair(kv.first, kv.second->GetLabel())); } }
void CGUIDialogContextMenu::SwitchMedia(const std::string& strType, const std::string& strPath) { // create menu CContextButtons choices; if (strType != "music") choices.Add(WINDOW_MUSIC_NAV, 2); if (strType != "video") choices.Add(WINDOW_VIDEO_NAV, 3); if (strType != "pictures") choices.Add(WINDOW_PICTURES, 1); if (strType != "files") choices.Add(WINDOW_FILES, 7); int window = ShowAndGetChoice(choices); if (window >= 0) { CUtil::DeleteDirectoryCache(); g_windowManager.ChangeActiveWindow(window, strPath); } }
void CGUIAddonWindow::GetContextButtons(int itemNumber, CContextButtons& buttons) { gui_context_menu_pair c_buttons[ADDON_MAX_CONTEXT_ENTRIES] = {0}; unsigned int size = ADDON_MAX_CONTEXT_ENTRIES; if (CBGetContextButtons) { CBGetContextButtons(m_clientHandle, itemNumber, c_buttons, &size); for (unsigned int i = 0; i < size; ++i) buttons.push_back(std::pair<unsigned int, std::string>(c_buttons[i].id, c_buttons[i].name)); } }
void CGUIMediaWindow::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item = (itemNumber >= 0 && itemNumber < m_vecItems->Size()) ? m_vecItems->Get(itemNumber) : CFileItemPtr(); if (!item) return; // user added buttons CStdString label; CStdString action; for (int i = CONTEXT_BUTTON_USER1; i <= CONTEXT_BUTTON_USER10; i++) { label.Format("contextmenulabel(%i)", i - CONTEXT_BUTTON_USER1); if (item->GetProperty(label).IsEmpty()) break; action.Format("contextmenuaction(%i)", i - CONTEXT_BUTTON_USER1); if (item->GetProperty(action).IsEmpty()) break; buttons.Add((CONTEXT_BUTTON)i, item->GetProperty(label)); } if (item->IsPlugin() && item->IsFileFolder()) { if (CPluginSettings::SettingsExist(item->m_strPath)) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); } if (item->GetPropertyBOOL("pluginreplacecontextitems")) return; // TODO: FAVOURITES Conditions on masterlock and localisation if (!item->IsParentFolder() && !item->m_strPath.Equals("add") && !item->m_strPath.Equals("newplaylist://") && !item->m_strPath.Left(19).Equals("newsmartplaylist://")) { if (CFavourites::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; } }
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 CPoint pos = GetContextPosition(); pMenu->OffsetPosition(pos.x, pos.y); 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 CGUIWindowPVRRecordings::GetContextButtons(int itemNumber, CContextButtons &buttons) { if (itemNumber < 0 || itemNumber >= m_vecItems->Size()) return; CFileItemPtr pItem = m_vecItems->Get(itemNumber); if (pItem->HasPVRRecordingInfoTag()) { buttons.Add(CONTEXT_BUTTON_INFO, 19053); /* Get Information of this recording */ buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* Find similar program */ buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 12021); /* Play this recording */ CStdString resumeString = GetResumeString(*pItem); if (!resumeString.empty()) { buttons.Add(CONTEXT_BUTTON_RESUME_ITEM, resumeString); } } if (pItem->m_bIsFolder) { // Have both options for folders since we don't know whether all childs are watched/unwatched buttons.Add(CONTEXT_BUTTON_MARK_UNWATCHED, 16104); /* Mark as UnWatched */ buttons.Add(CONTEXT_BUTTON_MARK_WATCHED, 16103); /* Mark as Watched */ } if (pItem->HasPVRRecordingInfoTag()) { if (pItem->GetPVRRecordingInfoTag()->m_playCount > 0) buttons.Add(CONTEXT_BUTTON_MARK_UNWATCHED, 16104); /* Mark as UnWatched */ else buttons.Add(CONTEXT_BUTTON_MARK_WATCHED, 16103); /* Mark as Watched */ buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* Rename this recording */ } // Add delete button for all items except the All recordings directory if (!g_PVRRecordings->IsAllRecordingsDirectory(*pItem.get())) buttons.Add(CONTEXT_BUTTON_DELETE, 117); if (pItem->HasPVRRecordingInfoTag() && g_PVRClients->HasMenuHooks(pItem->GetPVRRecordingInfoTag()->m_iClientId, PVR_MENUHOOK_RECORDING)) buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */ }