bool CGUIWindowPVRCommon::StartRecordFile(CFileItem *item) { bool bReturn = false; if (!item->HasEPGInfoTag()) return bReturn; CPVREpgInfoTag *tag = (CPVREpgInfoTag *) item->GetEPGInfoTag(); if (!tag || !tag->ChannelTag() || tag->ChannelTag()->ChannelNumber() <= 0) return bReturn; CPVRTimerInfoTag *timer = CPVRManager::GetTimers()->GetMatch(item); if (timer) { CGUIDialogOK::ShowAndGetInput(19033,19034,0,0); return bReturn; } CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return bReturn; pDialog->SetHeading(264); pDialog->SetLine(0, tag->ChannelTag()->ChannelName()); pDialog->SetLine(1, ""); pDialog->SetLine(2, tag->Title()); pDialog->DoModal(); if (!pDialog->IsConfirmed()) return bReturn; CPVRTimerInfoTag *newtimer = CPVRTimerInfoTag::CreateFromEpg(*tag); CFileItem *newTimerItem = new CFileItem(*newtimer); if (CPVRManager::GetTimers()->AddTimer(*newTimerItem)) { CPVRManager::GetTimers()->Update(); bReturn = true; } return bReturn; }
bool PVREpgSearchFilter::FilterEntry(const CPVREpgInfoTag &tag) const { bool bReturn = EpgSearchFilter::FilterEntry(tag); if (bReturn) { if (m_iChannelNumber != -1) { if (m_iChannelNumber == -2) { if (tag.ChannelTag()->IsRadio()) bReturn = false; } else if (m_iChannelNumber == -3) { if (!tag.ChannelTag()->IsRadio()) bReturn = false; } else if (tag.ChannelTag()->ChannelNumber() != m_iChannelNumber) bReturn = false; } if (m_bFTAOnly && tag.ChannelTag()->IsEncrypted()) { bReturn = false; } if (m_iChannelGroup != -1) { const CPVRChannelGroup *group = CPVRManager::GetChannelGroups()->GetById(tag.ChannelTag()->IsRadio(), m_iChannelGroup); if (!group || !group->IsGroupMember(tag.ChannelTag())) bReturn = false; } } return bReturn; }
void CPVREpgs::UpdateFirstAndLastEPGDates(const CPVREpgInfoTag &tag) { if (!tag.ChannelTag()) return; if (tag.ChannelTag()->IsRadio()) { if (tag.Start() < m_RadioFirst) m_RadioFirst = tag.Start(); if (tag.End() > m_RadioLast) m_RadioLast = tag.End(); } else { if (tag.Start() < m_TVFirst) m_TVFirst = tag.Start(); if (tag.End() > m_TVLast) m_TVLast = tag.End(); } }
bool CGUIWindowPVRCommon::StopRecordFile(CFileItem *item) { bool bReturn = false; if (!item->HasEPGInfoTag()) return bReturn; CPVREpgInfoTag *tag = (CPVREpgInfoTag *) item->GetEPGInfoTag(); if (!tag || !tag->ChannelTag() || tag->ChannelTag()->ChannelNumber() <= 0) return bReturn; CPVRTimerInfoTag *timer = CPVRManager::GetTimers()->GetMatch(item); if (!timer || timer->IsRepeating()) return bReturn; if (CPVRManager::GetTimers()->DeleteTimer(*timer)) { CPVRManager::GetTimers()->Update(); bReturn = true; } return bReturn; }
bool CGUIWindowPVRCommon::ActionRecord(CFileItem *item) { bool bReturn = false; CPVREpgInfoTag *epgTag = (CPVREpgInfoTag *) item->GetEPGInfoTag(); if (!epgTag) return bReturn; const CPVRChannel *channel = epgTag->ChannelTag(); if (!channel || channel->ChannelNumber() > 0) 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); if (CPVRManager::GetTimers()->AddTimer(*item)) CPVRManager::GetTimers()->Update(); bReturn = true; } else { CGUIDialogOK::ShowAndGetInput(19033,19034,0,0); bReturn = true; } return bReturn; }
bool CGUIWindowPVRCommon::ActionPlayEpg(CFileItem *item) { bool bReturn = false; CPVREpgInfoTag *epgTag = (CPVREpgInfoTag *) 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 CPVRDatabase::UpdateEpgEntry(const CPVREpgInfoTag &tag, bool bSingleUpdate /* = true */, bool bLastUpdate /* = false */) { int bReturn = false; /* invalid tag */ if (tag.UniqueBroadcastID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid EPG tag", __FUNCTION__); return bReturn; } int iBroadcastId = tag.BroadcastId(); if (iBroadcastId) { CStdString strWhereClause = FormatSQL("(BroadcastUid = '%u' OR StartTime = '%s') AND ChannelId = '%u'", tag.UniqueBroadcastID(), tag.Start().GetAsDBDateTime().c_str(), tag.ChannelTag()->ChannelID()); CStdString strValue = GetSingleValue("EpgData", "BroadcastId", strWhereClause); if (!strValue.IsEmpty()) iBroadcastId = atoi(strValue); } CStdString strQuery; if (iBroadcastId < 0) { strQuery = FormatSQL("INSERT INTO EpgData (ChannelId, StartTime, " "EndTime, Title, PlotOutline, Plot, GenreType, GenreSubType, Genre, " "FirstAired, ParentalRating, StarRating, Notify, SeriesId, " "EpisodeId, EpisodePart, EpisodeName, BroadcastUid) " "VALUES (%i, '%s', '%s', '%s', '%s', '%s', %i, %i, '%s', '%s', %i, %i, %i, '%s', '%s', '%s', '%s', %i)\n", tag.ChannelTag()->ChannelID(), tag.Start().GetAsDBDateTime().c_str(), tag.End().GetAsDBDateTime().c_str(), tag.Title().c_str(), tag.PlotOutline().c_str(), tag.Plot().c_str(), tag.GenreType(), tag.GenreSubType(), tag.Genre(), tag.FirstAired().GetAsDBDateTime().c_str(), tag.ParentalRating(), tag.StarRating(), tag.Notify(), tag.SeriesNum().c_str(), tag.EpisodeNum().c_str(), tag.EpisodePart().c_str(), tag.EpisodeName().c_str(), tag.UniqueBroadcastID()); } else { strQuery = FormatSQL("REPLACE INTO EpgData (ChannelId, StartTime, " "EndTime, Title, PlotOutline, Plot, GenreType, GenreSubType, Genre, " "FirstAired, ParentalRating, StarRating, Notify, SeriesId, " "EpisodeId, EpisodePart, EpisodeName, BroadcastUid, BroadcastId) " "VALUES (%i, '%s', '%s', '%s', '%s', '%s', %i, %i, '%s', '%s', %i, %i, %i, '%s', '%s', '%s', '%s', %i, %i)\n", tag.ChannelTag()->ChannelID(), tag.Start().GetAsDBDateTime().c_str(), tag.End().GetAsDBDateTime().c_str(), tag.Title().c_str(), tag.PlotOutline().c_str(), tag.Plot().c_str(), tag.GenreType(), tag.GenreSubType(), tag.Genre(), tag.FirstAired().GetAsDBDateTime().c_str(), tag.ParentalRating(), tag.StarRating(), tag.Notify(), tag.SeriesNum().c_str(), tag.EpisodeNum().c_str(), tag.EpisodePart().c_str(), tag.EpisodeName().c_str(), tag.UniqueBroadcastID(), iBroadcastId); } if (bSingleUpdate) { bReturn = ExecuteQuery(strQuery); } else { bReturn = QueueInsertQuery(strQuery); if (bLastUpdate) CommitInsertQueries(); } if ((bSingleUpdate || bLastUpdate) && GetEpgDataEnd(tag.ChannelTag()->ChannelID()) > tag.End()) EraseEpgForChannel(*tag.ChannelTag(), NULL, tag.End()); return bReturn; }