bool CGUIWindowPVRCommon::StartRecordFile(CFileItem *item) { if (!item->HasEPGInfoTag()) return false; CEpgInfoTag *tag = item->GetEPGInfoTag(); if (!tag || !tag->ChannelTag() || tag->ChannelTag()->ChannelNumber() <= 0) return false; CPVRTimerInfoTag *timer = g_PVRTimers->GetMatch(item); if (timer) { CGUIDialogOK::ShowAndGetInput(19033,19034,0,0); return false; } CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return false; pDialog->SetHeading(264); pDialog->SetLine(0, tag->ChannelTag()->ChannelName()); pDialog->SetLine(1, ""); pDialog->SetLine(2, tag->Title()); pDialog->DoModal(); if (!pDialog->IsConfirmed()) return false; CPVRTimerInfoTag *newtimer = CPVRTimerInfoTag::CreateFromEpg(*tag); CFileItem *newTimerItem = new CFileItem(*newtimer); return g_PVRTimers->AddTimer(*newTimerItem); }
bool CGUIWindowPVRCommon::StopRecordFile(CFileItem *item) { if (!item->HasEPGInfoTag()) return false; CEpgInfoTag *tag = item->GetEPGInfoTag(); if (!tag || !tag->ChannelTag() || tag->ChannelTag()->ChannelNumber() <= 0) return false; CPVRTimerInfoTag *timer = g_PVRTimers->GetMatch(item); if (!timer || timer->m_bIsRepeating) return false; return g_PVRTimers->DeleteTimer(*timer); }
void CPVRGUIInfo::UpdatePlayingTag(void) { CPVRChannelPtr currentChannel; CPVRRecording recording; if (g_PVRManager.GetCurrentChannel(currentChannel)) { CEpgInfoTag epgTag; bool bHasEpgTag = GetPlayingTag(epgTag); CPVRChannelPtr channel; if (bHasEpgTag) channel = epgTag.ChannelTag(); if (!bHasEpgTag || !epgTag.IsActive() || !channel || *channel != *currentChannel) { CEpgInfoTag newTag; { CSingleLock lock(m_critSection); ResetPlayingTag(); if (currentChannel->GetEPGNow(newTag)) { m_playingEpgTag = new CEpgInfoTag(newTag); m_iDuration = m_playingEpgTag->GetDuration() * 1000; } } g_PVRManager.UpdateCurrentFile(); } } else if (g_PVRClients->GetPlayingRecording(recording)) { ResetPlayingTag(); m_iDuration = recording.GetDuration() * 1000; } }
bool CGUIWindowPVRBase::ActionPlayEpg(CFileItem *item) { if (!item || !item->HasEPGInfoTag()) return false; CPVRChannelPtr channel; CEpgInfoTag *epgTag = item->GetEPGInfoTag(); if (epgTag->HasPVRChannel()) channel = epgTag->ChannelTag(); if (!channel || !g_PVRManager.CheckParentalLock(*channel)) return false; CFileItem fileItem; if (epgTag->HasRecording()) fileItem = CFileItem(*epgTag->Recording()); else fileItem = CFileItem(*channel); g_application.SwitchToFullScreen(); if (!PlayFile(&fileItem)) { // CHANNELNAME could not be played. Check the log for details. std::string msg = StringUtils::Format(g_localizeStrings.Get(19035).c_str(), channel->ChannelName().c_str()); CGUIDialogOK::ShowAndGetInput(19033, 0, msg, 0); return false; } return true; }
bool CGUIDialogPVRGuideInfo::OnClickButtonSwitch(CGUIMessage &message) { bool bReturn = false; if (message.GetSenderId() == CONTROL_BTN_SWITCH) { Close(); PlayBackRet ret = PLAYBACK_CANCELED; CEpgInfoTag *epgTag = m_progItem->GetEPGInfoTag(); if (epgTag) { if (epgTag->HasRecording()) ret = g_application.PlayFile(CFileItem(*epgTag->Recording())); else if (epgTag->HasPVRChannel()) ret = g_application.PlayFile(CFileItem(*epgTag->ChannelTag())); } else ret = PLAYBACK_FAIL; if (ret == PLAYBACK_FAIL) { CStdString msg = StringUtils::Format(g_localizeStrings.Get(19035).c_str(), g_localizeStrings.Get(19029).c_str()); // Channel could not be played. Check the log for details. CGUIDialogOK::ShowAndGetInput(19033, 0, msg, 0); } else if (ret == PLAYBACK_OK) { bReturn = true; } } return bReturn; }
bool EpgSearchFilter::FilterEntry(const CEpgInfoTag &tag) const { return (MatchGenre(tag) && MatchDuration(tag) && MatchStartAndEndTimes(tag) && MatchSearchTerm(tag)) && (!tag.HasPVRChannel() || (MatchChannelNumber(tag) && MatchChannelGroup(tag) && (!m_bFTAOnly || !tag.ChannelTag()->IsEncrypted()))); }
bool EpgSearchFilter::MatchChannelGroup(const CEpgInfoTag &tag) const { bool bReturn(true); if (m_iChannelGroup != EPG_SEARCH_UNSET && g_PVRManager.IsStarted()) { const CPVRChannelGroup *group = g_PVRChannelGroups->GetByIdFromAll(m_iChannelGroup); bReturn = (group && group->IsGroupMember(*tag.ChannelTag())); } return bReturn; }
bool EpgSearchFilter::MatchChannelNumber(const CEpgInfoTag &tag) const { bool bReturn(true); if (m_iChannelNumber != EPG_SEARCH_UNSET && g_PVRManager.IsStarted()) { const CPVRChannelGroup *group = (m_iChannelGroup != EPG_SEARCH_UNSET) ? g_PVRChannelGroups->GetByIdFromAll(m_iChannelGroup) : g_PVRChannelGroups->GetGroupAllTV(); if (!group) group = CPVRManager::Get().ChannelGroups()->GetGroupAllTV(); bReturn = (m_iChannelNumber == (int) group->GetChannelNumber(*tag.ChannelTag())); } return bReturn; }
bool CGUIWindowPVRCommon::ActionRecord(CFileItem *item) { bool bReturn = false; CEpgInfoTag *epgTag = item->GetEPGInfoTag(); if (!epgTag) return bReturn; CPVRChannelPtr channel = epgTag->ChannelTag(); if (!channel || !g_PVRManager.CheckParentalLock(*channel)) return bReturn; if (epgTag->Timer() == NULL) { /* create a confirmation dialog */ CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*) g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return bReturn; pDialog->SetHeading(264); pDialog->SetLine(0, ""); pDialog->SetLine(1, epgTag->Title()); pDialog->SetLine(2, ""); pDialog->DoModal(); /* prompt for the user's confirmation */ if (!pDialog->IsConfirmed()) return bReturn; CPVRTimerInfoTag *newTimer = CPVRTimerInfoTag::CreateFromEpg(*epgTag); if (newTimer) { bReturn = g_PVRTimers->AddTimer(*newTimer); delete newTimer; } else { bReturn = false; } } else { CGUIDialogOK::ShowAndGetInput(19033,19034,0,0); bReturn = true; } return bReturn; }
bool CGUIWindowPVRCommon::StartRecordFile(CFileItem *item) { if (!item->HasEPGInfoTag()) return false; CEpgInfoTag *tag = item->GetEPGInfoTag(); CPVRChannelPtr channel; if (tag) channel = tag->ChannelTag(); if (!channel || !g_PVRManager.CheckParentalLock(*channel)) return false; CFileItemPtr timer = g_PVRTimers->GetTimerForEpgTag(item); if (timer && timer->HasPVRTimerInfoTag()) { CGUIDialogOK::ShowAndGetInput(19033,19034,0,0); return false; } CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return false; pDialog->SetHeading(264); pDialog->SetLine(0, tag->PVRChannelName()); pDialog->SetLine(1, ""); pDialog->SetLine(2, tag->Title()); pDialog->DoModal(); if (!pDialog->IsConfirmed()) return false; CPVRTimerInfoTag *newTimer = CPVRTimerInfoTag::CreateFromEpg(*tag); bool bReturn(false); if (newTimer) { bReturn = g_PVRTimers->AddTimer(*newTimer); delete newTimer; } return bReturn; }
JSON_STATUS CPVROperations::ScheduleRecording(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { if (!g_PVRManager.IsStarted()) { CLog::Log(LOGDEBUG, "JSONRPC: PVR not started"); return FailedToExecute; } int iEpgId = (int)parameterObject["epgid"].asInteger(); int iUniqueId = (int)parameterObject["uniqueid"].asInteger(); int iStartTime = (int)parameterObject["starttime"].asInteger(); if (iEpgId > 0 && iUniqueId > 0 && iStartTime > 0) { CDateTime startTime(iStartTime); CEpgInfoTag *tag = g_EpgContainer.GetById(iEpgId)->GetTag(iUniqueId, startTime); if (tag && tag->ChannelTag()) { CLog::Log(LOGDEBUG, "JSONRPC: schedule recording - channel: '%s' start: '%s' end: '%s'", tag->ChannelTag()->ChannelName().c_str(), tag->StartAsLocalTime().GetAsLocalizedDateTime(false, false).c_str(), tag->EndAsLocalTime().GetAsLocalizedDateTime(false, false).c_str()); CPVRTimerInfoTag *newTimer = CPVRTimerInfoTag::CreateFromEpg(*tag); bool bCreated = (newTimer != NULL); bool bAdded = false; if (bCreated) { CLog::Log(LOGDEBUG, "JSONRPC: recording scheduled"); bAdded = CPVRTimers::AddTimer(*newTimer); } else { CLog::Log(LOGERROR, "JSONRPC: failed to schedule recording"); } delete newTimer; return bAdded ? ACK : InternalError; } } return InvalidParams; }
bool CGUIWindowPVRCommon::ActionPlayEpg(CFileItem *item) { bool bReturn = false; CEpgInfoTag *epgTag = item->GetEPGInfoTag(); if (!epgTag) return bReturn; const CPVRChannel *channel = epgTag->ChannelTag(); if (!channel || channel->ChannelNumber() > 0) return bReturn; bReturn = g_application.PlayFile(CFileItem(*channel)); if (!bReturn) { /* cannot play file */ CGUIDialogOK::ShowAndGetInput(19033,0,19035,0); } return bReturn; }
bool CGUIWindowPVRCommon::ActionPlayEpg(CFileItem *item) { CEpgInfoTag *epgTag = item->GetEPGInfoTag(); if (!epgTag) return false; CPVRChannelPtr channel = epgTag->ChannelTag(); if (!channel || channel->ChannelNumber() > 0 || !g_PVRManager.CheckParentalLock(*channel)) return false; PlayBackRet ret = g_application.PlayFile(CFileItem(*channel)); if (ret == PLAYBACK_FAIL) { CStdString msg; msg.Format(g_localizeStrings.Get(19035).c_str(), channel->ChannelName().c_str()); // CHANNELNAME could not be played. Check the log for details. CGUIDialogOK::ShowAndGetInput(19033, 0, msg, 0); } return ret == PLAYBACK_OK; }
bool EpgSearchFilter::MatchChannelType(const CEpgInfoTag &tag) const { return (g_PVRManager.IsStarted() && tag.ChannelTag()->IsRadio() == m_bIsRadio); }