bool CGUIWindowPVRCommon::StartRecordFile(CFileItem *item) { if (!item->HasEPGInfoTag()) return false; CEpgInfoTag *tag = item->GetEPGInfoTag(); if (!tag || !tag->HasPVRChannel()) 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->PVRChannelName()); 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 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 CGUIWindowPVRCommon::StopRecordFile(CFileItem *item) { if (!item->HasEPGInfoTag()) return false; CEpgInfoTag *tag = item->GetEPGInfoTag(); if (!tag || !tag->HasPVRChannel()) return false; CPVRTimerInfoTag *timer = g_PVRTimers->GetMatch(item); if (!timer || timer->m_bIsRepeating) return false; return g_PVRTimers->DeleteTimer(*timer); }
bool CGUIWindowPVRCommon::ActionRecord(CFileItem *item) { bool bReturn = false; CEpgInfoTag *epgTag = item->GetEPGInfoTag(); if (!epgTag) return bReturn; if (!epgTag->HasPVRChannel()) 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); CFileItem *item = new CFileItem(*newtimer); bReturn = g_PVRTimers->AddTimer(*item); } else { CGUIDialogOK::ShowAndGetInput(19033,19034,0,0); bReturn = true; } 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->HasPVRChannel()) { CLog::Log(LOGDEBUG, "JSONRPC: schedule recording - channel: '%s' start: '%s' end: '%s'", tag->PVRChannelName().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; }