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(); } }
void CPVREpg::Cleanup(const CDateTime &Time) { CSingleLock lock(m_critSection); for (unsigned int i = 0; i < size(); i++) { CPVREpgInfoTag *tag = (CPVREpgInfoTag *) at(i); if ( tag && /* valid tag */ !tag->HasTimer() && /* no timer set */ (tag->End() + CDateTimeSpan(0, g_advancedSettings.m_iEpgLingerTime / 60, g_advancedSettings.m_iEpgLingerTime % 60, 0) < Time)) { DeleteInfoTag(tag); } } }
void CPVREpgInfoTag::Update(const CPVREpgInfoTag &tag) { SetBroadcastId(tag.BroadcastId()); SetTitle(tag.Title()); SetPlotOutline(tag.PlotOutline()); SetPlot(tag.Plot()); SetStart(tag.Start()); SetEnd(tag.End()); SetGenre(tag.GenreType(), tag.GenreSubType(), tag.Genre()); SetFirstAired(tag.FirstAired()); SetParentalRating(tag.ParentalRating()); SetStarRating(tag.StarRating()); SetNotify(tag.Notify()); SetEpisodeNum(tag.EpisodeNum()); SetEpisodePart(tag.EpisodePart()); SetEpisodeName(tag.EpisodeName()); }
void CGUIDialogPVRGuideInfo::Update() { // set recording button label CPVREpgInfoTag* tag = (CPVREpgInfoTag *) m_progItem->GetEPGInfoTag(); if (tag->End() > CDateTime::GetCurrentDateTime()) { if (tag->Timer() == NULL) { if (tag->Start() < CDateTime::GetCurrentDateTime()) SET_CONTROL_LABEL(CONTROL_BTN_RECORD, 264); else SET_CONTROL_LABEL(CONTROL_BTN_RECORD, 19061); } else { if (tag->Start() < CDateTime::GetCurrentDateTime()) SET_CONTROL_LABEL(CONTROL_BTN_RECORD, 19059); else SET_CONTROL_LABEL(CONTROL_BTN_RECORD, 19060); } } else SET_CONTROL_HIDDEN(CONTROL_BTN_RECORD); }
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; }