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 */ buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* Programme information */ buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* Find similar */ CEpgInfoTagPtr epg(pItem->GetEPGInfoTag()); if (epg) { 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_OTHER, 19687); /* Play recording */ } 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 (epg) { 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); CContextMenuManager::GetInstance().AddVisibleItems(pItem, buttons); }
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); }