bool CPVRDatabase::PersistChannelSettings(const CPVRChannel &channel, const CVideoSettings &settings) { /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %i", __FUNCTION__, channel.ChannelID()); return false; } CStdString strQuery = FormatSQL( "REPLACE INTO channelsettings " "(idChannel, iInterlaceMethod, iViewMode, fCustomZoomAmount, fPixelRatio, iAudioStream, iSubtitleStream, fSubtitleDelay, " "bSubtitles, fBrightness, fContrast, fGamma, fVolumeAmplification, fAudioDelay, bOutputToAllSpeakers, bCrop, iCropLeft, " "iCropRight, iCropTop, iCropBottom, fSharpness, fNoiseReduction, fCustomVerticalShift, bCustomNonLinStretch, bPostProcess, iScalingMethod, iDeinterlaceMode) VALUES " "(%i, %i, %i, %f, %f, %i, %i, %f, %i, %f, %f, %f, %f, %f, %i, %i, %i, %i, %i, %i, %f, %f, %f, %i, %i, %i, %i);", channel.ChannelID(), settings.m_InterlaceMethod, settings.m_ViewMode, settings.m_CustomZoomAmount, settings.m_CustomPixelRatio, settings.m_AudioStream, settings.m_SubtitleStream, settings.m_SubtitleDelay, settings.m_SubtitleOn ? 1 :0, settings.m_Brightness, settings.m_Contrast, settings.m_Gamma, settings.m_VolumeAmplification, settings.m_AudioDelay, settings.m_OutputToAllSpeakers ? 1 : 0, settings.m_Crop ? 1 : 0, settings.m_CropLeft, settings.m_CropRight, settings.m_CropTop, settings.m_CropBottom, settings.m_Sharpness, settings.m_NoiseReduction, settings.m_CustomVerticalShift, settings.m_CustomNonLinStretch ? 1 : 0, settings.m_PostProcess ? 1 : 0, settings.m_ScalingMethod, settings.m_DeinterlaceMode); return ExecuteQuery(strQuery); }
bool CPVRDatabase::GetChannelSettings(const CPVRChannel &channel, CVideoSettings &settings) { bool bReturn = false; /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %i", __FUNCTION__, channel.ChannelID()); return bReturn; } CStdString strQuery = FormatSQL("SELECT * FROM channelsettings WHERE idChannel = %u;", channel.ChannelID()); if (ResultQuery(strQuery)) { try { if (m_pDS->num_rows() > 0) { settings.m_AudioDelay = m_pDS->fv("fAudioDelay").get_asFloat(); settings.m_AudioStream = m_pDS->fv("iAudioStream").get_asInt(); settings.m_Brightness = m_pDS->fv("fBrightness").get_asFloat(); settings.m_Contrast = m_pDS->fv("fContrast").get_asFloat(); settings.m_CustomPixelRatio = m_pDS->fv("fPixelRatio").get_asFloat(); settings.m_CustomNonLinStretch = m_pDS->fv("bCustomNonLinStretch").get_asBool(); settings.m_NoiseReduction = m_pDS->fv("fNoiseReduction").get_asFloat(); settings.m_PostProcess = m_pDS->fv("bPostProcess").get_asBool(); settings.m_Sharpness = m_pDS->fv("fSharpness").get_asFloat(); settings.m_CustomZoomAmount = m_pDS->fv("fCustomZoomAmount").get_asFloat(); settings.m_CustomVerticalShift = m_pDS->fv("fCustomVerticalShift").get_asFloat(); settings.m_Gamma = m_pDS->fv("fGamma").get_asFloat(); settings.m_SubtitleDelay = m_pDS->fv("fSubtitleDelay").get_asFloat(); settings.m_SubtitleOn = m_pDS->fv("bSubtitles").get_asBool(); settings.m_SubtitleStream = m_pDS->fv("iSubtitleStream").get_asInt(); settings.m_ViewMode = m_pDS->fv("iViewMode").get_asInt(); settings.m_Crop = m_pDS->fv("bCrop").get_asBool(); settings.m_CropLeft = m_pDS->fv("iCropLeft").get_asInt(); settings.m_CropRight = m_pDS->fv("iCropRight").get_asInt(); settings.m_CropTop = m_pDS->fv("iCropTop").get_asInt(); settings.m_CropBottom = m_pDS->fv("iCropBottom").get_asInt(); settings.m_InterlaceMethod = (EINTERLACEMETHOD)m_pDS->fv("iInterlaceMethod").get_asInt(); settings.m_VolumeAmplification = m_pDS->fv("fVolumeAmplification").get_asFloat(); settings.m_OutputToAllSpeakers = m_pDS->fv("bOutputToAllSpeakers").get_asBool(); settings.m_ScalingMethod = (ESCALINGMETHOD)m_pDS->fv("iScalingMethod").get_asInt(); bReturn = true; } m_pDS->close(); } catch(...) { CLog::Log(LOGERROR, "PVRDB - %s - failed to get channel settings for channel '%s'", __FUNCTION__, channel.ChannelName().c_str()); } } return bReturn; }
bool CPVRDatabase::Delete(const CPVRChannel &channel) { /* invalid channel */ if (channel.ChannelID() <= 0) return false; CStdString strWhereClause = FormatSQL("idChannel = %u", channel.ChannelID()); return DeleteValues("channels", strWhereClause); }
bool CPVRDatabase::Delete(const CPVRChannel &channel) { /* invalid channel */ if (channel.ChannelID() <= 0) return false; CLog::Log(LOGDEBUG, "PVR - %s - deleting channel '%s' from the database", __FUNCTION__, channel.ChannelName().c_str()); CStdString strWhereClause = FormatSQL("idChannel = %u", channel.ChannelID()); return DeleteValues("channels", strWhereClause); }
int CPVRDatabase::Persist(const CPVRChannel &channel, bool bQueueWrite /* = false */) { int iReturn = -1; /* invalid channel */ if (channel.UniqueID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel uid: %d", __FUNCTION__, channel.UniqueID()); return iReturn; } CStdString strQuery; if (channel.ChannelID() <= 0) { /* new channel */ strQuery = FormatSQL("INSERT INTO channels (" "iUniqueId, bIsRadio, bIsHidden, " "sIconPath, sChannelName, bIsVirtual, bEPGEnabled, sEPGScraper, iLastWatched, iClientId, " "iClientChannelNumber, sInputFormat, sStreamURL, iEncryptionSystem, idEpg) " "VALUES (%i, %i, %i, '%s', '%s', %i, %i, '%s', %u, %i, %i, '%s', '%s', %i, %i);", channel.UniqueID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), (channel.IsVirtual() ? 1 : 0), (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.LastWatched(), channel.ClientID(), channel.ClientChannelNumber(), channel.InputFormat().c_str(), channel.StreamURL().c_str(), channel.EncryptionSystem(), channel.EpgID()); } else { /* update channel */ strQuery = FormatSQL("REPLACE INTO channels (" "iUniqueId, bIsRadio, bIsHidden, " "sIconPath, sChannelName, bIsVirtual, bEPGEnabled, sEPGScraper, iLastWatched, iClientId, " "iClientChannelNumber, sInputFormat, sStreamURL, iEncryptionSystem, idChannel, idEpg) " "VALUES (%i, %i, %i, '%s', '%s', %i, %i, '%s', %u, %i, %i, '%s', '%s', %i, %i, %i);", channel.UniqueID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), (channel.IsVirtual() ? 1 : 0), (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.LastWatched(), channel.ClientID(), channel.ClientChannelNumber(), channel.InputFormat().c_str(), channel.StreamURL().c_str(), channel.EncryptionSystem(), channel.ChannelID(), channel.EpgID()); } if (bQueueWrite) { QueueInsertQuery(strQuery); iReturn = 0; } else if (ExecuteQuery(strQuery)) { iReturn = (channel.ChannelID() <= 0) ? (int) m_pDS->lastinsertid() : channel.ChannelID(); } return iReturn; }
bool CPVRDatabase::RemoveChannel(const CPVRChannel &channel) { /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %li", __FUNCTION__, channel.ChannelID()); return false; } CStdString strWhereClause = FormatSQL("ChannelId = '%u'", channel.ChannelID()); return DeleteValues("Channels", strWhereClause); }
bool CPVRDatabase::Delete(const CPVRChannel &channel) { /* invalid channel */ if (channel.ChannelID() <= 0) return false; CLog::Log(LOGDEBUG, "PVR - %s - deleting channel '%s' from the database", __FUNCTION__, channel.ChannelName().c_str()); Filter filter; filter.AppendWhere(PrepareSQL("idChannel = %u", channel.ChannelID())); return DeleteValues("channels", filter); }
long CPVRDatabase::UpdateChannel(const CPVRChannel &channel, bool bQueueWrite /* = false */) { long iReturn = -1; /* invalid channel */ if (channel.UniqueID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel uid: %d", __FUNCTION__, channel.UniqueID()); return iReturn; } CStdString strQuery; if (channel.ChannelID() <= 0) { /* new channel */ strQuery = FormatSQL("INSERT INTO Channels (" "UniqueId, ChannelNumber, GroupId, IsRadio, IsHidden, " "IconPath, ChannelName, IsVirtual, EPGEnabled, EPGScraper, ClientId, " "ClientChannelNumber, InputFormat, StreamURL, EncryptionSystem) " "VALUES (%i, %i, %i, %i, %i, '%s', '%s', %i, %i, '%s', %i, %i, '%s', '%s', %i)\n", channel.UniqueID(), channel.ChannelNumber(), channel.GroupID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), (channel.IsVirtual() ? 1 : 0), (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.ClientID(), channel.ClientChannelNumber(), channel.InputFormat().c_str(), channel.StreamURL().c_str(), channel.EncryptionSystem()); } else { /* update channel */ strQuery = FormatSQL("REPLACE INTO Channels (" "UniqueId, ChannelNumber, GroupId, IsRadio, IsHidden, " "IconPath, ChannelName, IsVirtual, EPGEnabled, EPGScraper, ClientId, " "ClientChannelNumber, InputFormat, StreamURL, EncryptionSystem, ChannelId) " "VALUES (%i, %i, %i, %i, %i, '%s', '%s', %i, %i, '%s', %i, %i, '%s', '%s', %i, %i)\n", channel.UniqueID(), channel.ChannelNumber(), channel.GroupID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), (channel.IsVirtual() ? 1 : 0), (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.ClientID(), channel.ClientChannelNumber(), channel.InputFormat().c_str(), channel.StreamURL().c_str(), channel.EncryptionSystem(), channel.ChannelID()); } if (bQueueWrite) { QueueInsertQuery(strQuery); iReturn = 0; } else if (ExecuteQuery(strQuery)) { iReturn = (channel.ChannelID() <= 0) ? (long) m_pDS->lastinsertid() : channel.ChannelID(); } return iReturn; }
bool CPVRDatabase::DeleteChannelSettings(const CPVRChannel &channel) { bool bReturn(false); /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVR - %s - invalid channel id: %i", __FUNCTION__, channel.ChannelID()); return bReturn; } CStdString strWhereClause = FormatSQL("idChannel = %u", channel.ChannelID()); return DeleteValues("channelsettings", strWhereClause); }
bool CPVRDatabase::Delete(const CPVRChannel &channel) { /* invalid channel */ if (channel.ChannelID() <= 0) return false; CLog::LogFC(LOGDEBUG, LOGPVR, "Deleting channel '%s' from the database", channel.ChannelName().c_str()); Filter filter; filter.AppendWhere(PrepareSQL("idChannel = %u", channel.ChannelID())); CSingleLock lock(m_critSection); return DeleteValues("channels", filter); }
bool CPVRDatabase::Persist(CPVRChannel &channel) { bool bReturn(false); /* invalid channel */ if (channel.UniqueID() <= 0) { CLog::Log(LOGERROR, "PVR - %s - invalid channel uid: %d", __FUNCTION__, channel.UniqueID()); return bReturn; } std::string strQuery; if (channel.ChannelID() <= 0) { /* new channel */ strQuery = PrepareSQL("INSERT INTO channels (" "iUniqueId, bIsRadio, bIsHidden, bIsUserSetIcon, bIsUserSetName, bIsLocked, " "sIconPath, sChannelName, bIsVirtual, bEPGEnabled, sEPGScraper, iLastWatched, iClientId, " "idEpg) " "VALUES (%i, %i, %i, %i, %i, %i, '%s', '%s', %i, %i, '%s', %u, %i, %i)", channel.UniqueID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), (channel.IsUserSetIcon() ? 1 : 0), (channel.IsUserSetName() ? 1 : 0), (channel.IsLocked() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), 0, (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.LastWatched(), channel.ClientID(), channel.EpgID()); } else { /* update channel */ strQuery = PrepareSQL("REPLACE INTO channels (" "iUniqueId, bIsRadio, bIsHidden, bIsUserSetIcon, bIsUserSetName, bIsLocked, " "sIconPath, sChannelName, bIsVirtual, bEPGEnabled, sEPGScraper, iLastWatched, iClientId, " "idChannel, idEpg) " "VALUES (%i, %i, %i, %i, %i, %i, '%s', '%s', %i, %i, '%s', %u, %i, %i, %i)", channel.UniqueID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), (channel.IsUserSetIcon() ? 1 : 0), (channel.IsUserSetName() ? 1 : 0), (channel.IsLocked() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), 0, (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.LastWatched(), channel.ClientID(), channel.ChannelID(), channel.EpgID()); } if (QueueInsertQuery(strQuery)) { /* update the channel ID for new channels */ if (channel.ChannelID() <= 0) channel.SetChannelID((int)m_pDS->lastinsertid()); bReturn = true; } return bReturn; }
bool CPVRDatabase::UpdateLastChannel(const CPVRChannel &channel) { /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %li", __FUNCTION__, channel.ChannelID()); return false; } CStdString strQuery = FormatSQL("REPLACE INTO LastChannel (ChannelId, Number, Name) VALUES (%i, %i, '%s')\n", channel.ChannelID(), channel.ChannelNumber(), channel.ChannelName().c_str()); return ExecuteQuery(strQuery); }
bool CPVRDatabase::UpdateLastWatched(const CPVRChannel &channel) { CSingleLock lock(m_critSection); const std::string strQuery = PrepareSQL("UPDATE channels SET iLastWatched = %u WHERE idChannel = %d", static_cast<unsigned int>(channel.LastWatched()), channel.ChannelID()); return ExecuteQuery(strQuery); }
bool CPVRDatabase::UpdateLastWatched(const CPVRChannel &channel) { std::string strQuery = PrepareSQL("UPDATE channels SET iLastWatched = %d WHERE idChannel = %d", channel.LastWatched(), channel.ChannelID()); return ExecuteQuery(strQuery); }
bool CPVRChannelGroupInternal::RemoveFromGroup(const CPVRChannel &channel) { CSingleLock lock(m_critSection); /* check if this channel is currently playing if we are hiding it */ CPVRChannel currentChannel; if (g_PVRManager.GetCurrentChannel(currentChannel) && currentChannel == channel) { CGUIDialogOK::ShowAndGetInput(19098,19101,0,19102); return false; } /* get the actual channel since this is called from a fileitemlist copy */ CPVRChannel *realChannel = (CPVRChannel *) GetByChannelID(channel.ChannelID()); if (!realChannel) return false; /* switch the hidden flag */ if (!realChannel->IsHidden()) { realChannel->SetHidden(true, true); ++m_iHiddenChannels; /* renumber this list */ Renumber(); /* and persist */ return Persist(); } return true; }
bool CPVRDatabase::DeleteChannelSettings(const CPVRChannel &channel) { bool bReturn(false); /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVR - %s - invalid channel id: %i", __FUNCTION__, channel.ChannelID()); return bReturn; } Filter filter; filter.AppendWhere(PrepareSQL("idChannel = %u", channel.ChannelID())); return DeleteValues("channelsettings", filter); }
bool CPVRChannelGroupInternal::AddToGroup(CPVRChannel &channel, int iChannelNumber /* = 0 */, bool bSortAndRenumber /* = true */) { CSingleLock lock(m_critSection); bool bReturn(false); /* get the actual channel since this is called from a fileitemlist copy */ CPVRChannel *realChannel = (CPVRChannel *) GetByChannelID(channel.ChannelID()); if (!realChannel) return bReturn; /* switch the hidden flag */ if (realChannel->IsHidden()) { realChannel->SetHidden(false, true); m_iHiddenChannels--; if (bSortAndRenumber) Renumber(); } /* move this channel and persist */ bReturn = (iChannelNumber > 0) ? MoveChannel(realChannel->ChannelNumber(), iChannelNumber, true) : MoveChannel(realChannel->ChannelNumber(), size() - m_iHiddenChannels, true); return bReturn; }
bool CPVRDatabase::GetChannelSettings(const CPVRChannel &channel, CVideoSettings &settings) { bool bReturn = false; /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %li", __FUNCTION__, channel.ChannelID()); return bReturn; } CStdString strQuery = FormatSQL("SELECT * FROM ChannelSettings WHERE ChannelId = %u\n", channel.ChannelID()); if (ResultQuery(strQuery)) { settings.m_AudioDelay = m_pDS->fv("AudioDelay").get_asFloat(); settings.m_AudioStream = m_pDS->fv("AudioStream").get_asInt(); settings.m_Brightness = m_pDS->fv("Brightness").get_asFloat(); settings.m_Contrast = m_pDS->fv("Contrast").get_asFloat(); settings.m_CustomPixelRatio = m_pDS->fv("PixelRatio").get_asFloat(); settings.m_NoiseReduction = m_pDS->fv("NoiseReduction").get_asFloat(); settings.m_Sharpness = m_pDS->fv("Sharpness").get_asFloat(); settings.m_CustomZoomAmount = m_pDS->fv("CustomZoomAmount").get_asFloat(); settings.m_Gamma = m_pDS->fv("Gamma").get_asFloat(); settings.m_SubtitleDelay = m_pDS->fv("SubtitleDelay").get_asFloat(); settings.m_SubtitleOn = m_pDS->fv("SubtitlesOn").get_asBool(); settings.m_SubtitleStream = m_pDS->fv("SubtitleStream").get_asInt(); settings.m_ViewMode = m_pDS->fv("ViewMode").get_asInt(); settings.m_Crop = m_pDS->fv("Crop").get_asBool(); settings.m_CropLeft = m_pDS->fv("CropLeft").get_asInt(); settings.m_CropRight = m_pDS->fv("CropRight").get_asInt(); settings.m_CropTop = m_pDS->fv("CropTop").get_asInt(); settings.m_CropBottom = m_pDS->fv("CropBottom").get_asInt(); settings.m_InterlaceMethod = (EINTERLACEMETHOD)m_pDS->fv("InterlaceMethod").get_asInt(); settings.m_VolumeAmplification = m_pDS->fv("VolumeAmplification").get_asFloat(); settings.m_OutputToAllSpeakers = m_pDS->fv("OutputToAllSpeakers").get_asBool(); settings.m_SubtitleCached = false; bReturn = true; } m_pDS->close(); return bReturn; }
CPVRChannel *CPVRChannels::GetByChannelID(long iChannelID) { for (unsigned int ptr = 0; ptr < size(); ptr++) { CPVRChannel *channel = at(ptr); if (channel->ChannelID() == iChannelID) return channel; } return NULL; }
bool CPVRDatabase::Persist(CPVRChannel &channel, bool bQueueWrite /* = false */) { bool bReturn(false); /* invalid channel */ if (channel.UniqueID() <= 0) { CLog::Log(LOGERROR, "PVR - %s - invalid channel uid: %d", __FUNCTION__, channel.UniqueID()); return bReturn; } CStdString strQuery; if (channel.ChannelID() <= 0) { /* new channel */ strQuery = PrepareSQL("INSERT INTO channels (" "iUniqueId, bIsRadio, bIsHidden, bIsUserSetIcon, bIsLocked, " "sIconPath, sChannelName, bIsVirtual, bEPGEnabled, sEPGScraper, iLastWatched, iClientId, " "iClientChannelNumber, sInputFormat, sStreamURL, iEncryptionSystem, idEpg) " "VALUES (%i, %i, %i, %i, %i, '%s', '%s', %i, %i, '%s', %u, %i, %i, '%s', '%s', %i, %i)", channel.UniqueID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), (channel.IsUserSetIcon() ? 1 : 0), (channel.IsLocked() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), (channel.IsVirtual() ? 1 : 0), (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.LastWatched(), channel.ClientID(), channel.ClientChannelNumber(), channel.InputFormat().c_str(), channel.StreamURL().c_str(), channel.EncryptionSystem(), channel.EpgID()); } else { /* update channel */ strQuery = PrepareSQL("REPLACE INTO channels (" "iUniqueId, bIsRadio, bIsHidden, bIsUserSetIcon, bIsLocked, " "sIconPath, sChannelName, bIsVirtual, bEPGEnabled, sEPGScraper, iLastWatched, iClientId, " "iClientChannelNumber, sInputFormat, sStreamURL, iEncryptionSystem, idChannel, idEpg) " "VALUES (%i, %i, %i, %i, %i, '%s', '%s', %i, %i, '%s', %u, %i, %i, '%s', '%s', %i, %i, %i)", channel.UniqueID(), (channel.IsRadio() ? 1 :0), (channel.IsHidden() ? 1 : 0), (channel.IsUserSetIcon() ? 1 : 0), (channel.IsLocked() ? 1 : 0), channel.IconPath().c_str(), channel.ChannelName().c_str(), (channel.IsVirtual() ? 1 : 0), (channel.EPGEnabled() ? 1 : 0), channel.EPGScraper().c_str(), channel.LastWatched(), channel.ClientID(), channel.ClientChannelNumber(), channel.InputFormat().c_str(), channel.StreamURL().c_str(), channel.EncryptionSystem(), channel.ChannelID(), channel.EpgID()); } if (bQueueWrite) { QueueInsertQuery(strQuery); bReturn = true; } else if (ExecuteQuery(strQuery)) { CSingleLock lock(channel.m_critSection); if (channel.m_iChannelId <= 0) channel.m_iChannelId = (int)m_pDS->lastinsertid(); bReturn = true; } return bReturn; }
CEpgPtr CEpgContainer::GetByChannel(const CPVRChannel &channel) const { CSingleLock lock(m_critSection); for (const auto &epgEntry : m_epgs) { if (channel.ChannelID() == epgEntry.second->ChannelID()) return epgEntry.second; } return NULL; }
bool CGUIWindowPVRChannels::OnContextButtonRecord(CFileItem *item, CONTEXT_BUTTON button) { bool bReturn(false); if (button == CONTEXT_BUTTON_RECORD_ITEM) { CPVRChannel *channel = item->GetPVRChannelInfoTag(); if (channel) return g_PVRManager.ToggleRecordingOnChannel(channel->ChannelID()); } return bReturn; }
bool CPVRDatabase::EraseEpgForChannel(const CPVRChannel &channel, const CDateTime &start /* = NULL */, const CDateTime &end /* = NULL */) { /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %li", __FUNCTION__, channel.ChannelID()); return false; } CLog::Log(LOGDEBUG, "PVRDB - %s - clearing the EPG for channel '%s'", __FUNCTION__, channel.ChannelName().c_str()); CStdString strWhereClause; strWhereClause = FormatSQL("ChannelId = %u", channel.ChannelID()); if (start != NULL) strWhereClause.append(FormatSQL(" AND StartTime < %u", start.GetAsDBDateTime().c_str()).c_str()); if (end != NULL) strWhereClause.append(FormatSQL(" AND EndTime > %u", end.GetAsDBDateTime().c_str()).c_str()); return DeleteValues("EpgData", strWhereClause); }
bool CPVRDatabase::SetChannelSettings(const CPVRChannel &channel, const CVideoSettings &settings) { /* invalid channel */ if (channel.ChannelID() <= 0) { CLog::Log(LOGERROR, "PVRDB - %s - invalid channel id: %li", __FUNCTION__, channel.ChannelID()); return false; } CStdString strQuery = FormatSQL( "REPLACE INTO ChannelSettings " "(ChannelId, InterlaceMethod, ViewMode, CustomZoomAmount, PixelRatio, AudioStream, SubtitleStream, SubtitleDelay, " "SubtitlesOn, Brightness, Contrast, Gamma, VolumeAmplification, AudioDelay, OutputToAllSpeakers, Crop, CropLeft, " "CropRight, CropTop, CropBottom, Sharpness, NoiseReduction) VALUES " "(%i, %i, %i, %f, %f, %i, %i, %f, %i, %f, %f, %f, %f, %f, %i, %i, %i, %i, %i, %i, %f, %f)\n", channel.ChannelID(), settings.m_InterlaceMethod, settings.m_ViewMode, settings.m_CustomZoomAmount, settings.m_CustomPixelRatio, settings.m_AudioStream, settings.m_SubtitleStream, settings.m_SubtitleDelay, settings.m_SubtitleOn, settings.m_Brightness, settings.m_Contrast, settings.m_Gamma, settings.m_VolumeAmplification, settings.m_AudioDelay, settings.m_OutputToAllSpeakers, settings.m_Crop, settings.m_CropLeft, settings.m_CropRight, settings.m_CropTop, settings.m_CropBottom, settings.m_Sharpness, settings.m_NoiseReduction); return ExecuteQuery(strQuery); }
unsigned int CPVRChannelGroup::GetSubChannelNumber(const CPVRChannel &channel) const { unsigned int iReturn = 0; CSingleLock lock(m_critSection); for (std::vector<PVRChannelGroupMember>::const_iterator it = m_members.begin(); it != m_members.end(); ++it) { if ((*it).channel->ChannelID() == channel.ChannelID()) { iReturn = (*it).iSubChannelNumber; break; } } return iReturn; }
unsigned int CPVRChannelGroup::GetChannelNumber(const CPVRChannel &channel) const { unsigned int iReturn = 0; CSingleLock lock(m_critSection); unsigned int iSize = m_members.size(); for (unsigned int iChannelPtr = 0; iChannelPtr < iSize; iChannelPtr++) { PVRChannelGroupMember member = m_members.at(iChannelPtr); if (member.channel->ChannelID() == channel.ChannelID()) { iReturn = member.iChannelNumber; break; } } return iReturn; }
void CPVRManager::UpdateLastWatched(CPVRChannel &channel) { time_t tNow; CDateTime::GetCurrentDateTime().GetAsTime(tNow); // update last watched timestamp for channel // NOTE: method could be called with a fileitem copy as argument so we need to obtain the right channel instance CPVRChannelPtr channelPtr = m_channelGroups->GetChannelById(channel.ChannelID()); channelPtr->SetLastWatched(tNow); channelPtr->Persist(); // update last watched timestamp for group CPVRChannelGroupPtr group = GetPlayingGroup(channel.IsRadio()); group->SetLastWatched(tNow); group->Persist(); /* update last played group */ m_channelGroups->SetLastPlayedGroup(group); }
bool CPVREpgContainer::CreateChannelEpgs(void) { for (int radio = 0; radio <= 1; radio++) { const CPVRChannelGroup *channels = CPVRManager::GetChannelGroups()->GetGroupAll(radio == 1); for (unsigned int iChannelPtr = 0; iChannelPtr < channels->Size(); iChannelPtr++) { CPVRChannel *channel = (CPVRChannel *) channels->GetByIndex(iChannelPtr); CEpg *epg = GetById(channel->ChannelID()); if (!epg) channel->GetEPG(); else { channel->m_EPG = (CPVREpg *) epg; epg->m_Channel = channel; epg->m_bHasChannel = true; } } } return true; }
int CPVRDatabase::GetEpgForChannel(CPVREpg *epg, const CDateTime &start /* = NULL */, const CDateTime &end /* = NULL */) { int iReturn = -1; CPVRChannel *channel = epg->Channel(); if (!channel) { CLog::Log(LOGERROR, "PVRDB - %s - EPG doesn't contain a channel tag", __FUNCTION__); return false; } CStdString strWhereClause; strWhereClause = FormatSQL("ChannelId = %u", channel->ChannelID()); if (start != NULL) strWhereClause.append(FormatSQL(" AND StartTime < %u", start.GetAsDBDateTime().c_str()).c_str()); if (end != NULL) strWhereClause.append(FormatSQL(" AND EndTime > %u", end.GetAsDBDateTime().c_str()).c_str()); CStdString strQuery; strQuery.Format("SELECT * FROM EpgData WHERE %s ORDER BY StartTime ASC\n", strWhereClause.c_str()); int iNumRows = ResultQuery(strQuery); if (iNumRows > 0) { try { while (!m_pDS->eof()) { int iBroadcastUid = m_pDS->fv("BroadcastUid").get_asInt(); CDateTime startTime, endTime, firstAired; startTime.SetFromDBDateTime (m_pDS->fv("StartTime").get_asString()); endTime.SetFromDBDateTime (m_pDS->fv("EndTime").get_asString()); firstAired.SetFromDBDateTime(m_pDS->fv("FirstAired").get_asString()); CPVREpgInfoTag newTag(iBroadcastUid); newTag.SetBroadcastId (m_pDS->fv("BroadcastId").get_asInt()); newTag.SetTitle (m_pDS->fv("Title").get_asString().c_str()); newTag.SetPlotOutline (m_pDS->fv("PlotOutline").get_asString().c_str()); newTag.SetPlot (m_pDS->fv("Plot").get_asString().c_str()); newTag.SetStart (startTime); newTag.SetEnd (endTime); newTag.SetGenre (m_pDS->fv("GenreType").get_asInt(), m_pDS->fv("GenreSubType").get_asInt(), m_pDS->fv("Genre").get_asString().c_str()); newTag.SetFirstAired (firstAired); newTag.SetParentalRating (m_pDS->fv("ParentalRating").get_asInt()); newTag.SetStarRating (m_pDS->fv("StarRating").get_asInt()); newTag.SetNotify (m_pDS->fv("Notify").get_asBool()); newTag.SetEpisodeNum (m_pDS->fv("EpisodeId").get_asString().c_str()); newTag.SetEpisodePart (m_pDS->fv("EpisodePart").get_asString().c_str()); newTag.SetEpisodeName (m_pDS->fv("EpisodeName").get_asString().c_str()); epg->UpdateEntry(newTag, false); m_pDS->next(); ++iReturn; } } catch (...) { CLog::Log(LOGERROR, "%s - couldn't load EPG data from the database", __FUNCTION__); } } return iReturn; }