int CPVRDatabase::Get(CPVRChannelGroupInternal &results) { int iReturn(0); CStdString strQuery = FormatSQL("SELECT channels.idChannel, channels.iUniqueId, channels.bIsRadio, channels.bIsHidden, channels.bIsUserSetIcon, " "channels.sIconPath, channels.sChannelName, channels.bIsVirtual, channels.bEPGEnabled, channels.sEPGScraper, channels.iLastWatched, channels.iClientId, " "channels.iClientChannelNumber, channels.sInputFormat, channels.sInputFormat, channels.sStreamURL, channels.iEncryptionSystem, map_channelgroups_channels.iChannelNumber, channels.idEpg " "FROM map_channelgroups_channels " "LEFT JOIN channels ON channels.idChannel = map_channelgroups_channels.idChannel " "WHERE map_channelgroups_channels.idGroup = %u AND channels.bIsRadio = %u ", results.IsRadio() ? XBMC_INTERNAL_GROUP_RADIO : XBMC_INTERNAL_GROUP_TV, results.IsRadio()); if (ResultQuery(strQuery)) { try { while (!m_pDS->eof()) { CPVRChannel *channel = new CPVRChannel(); channel->m_iChannelId = m_pDS->fv("idChannel").get_asInt(); channel->m_iUniqueId = m_pDS->fv("iUniqueId").get_asInt(); channel->m_bIsRadio = m_pDS->fv("bIsRadio").get_asBool(); channel->m_bIsHidden = m_pDS->fv("bIsHidden").get_asBool(); channel->m_bIsUserSetIcon = m_pDS->fv("bIsUserSetIcon").get_asBool(); channel->m_strIconPath = m_pDS->fv("sIconPath").get_asString(); channel->m_strChannelName = m_pDS->fv("sChannelName").get_asString(); channel->m_bIsVirtual = m_pDS->fv("bIsVirtual").get_asBool(); channel->m_bEPGEnabled = m_pDS->fv("bEPGEnabled").get_asBool(); channel->m_strEPGScraper = m_pDS->fv("sEPGScraper").get_asString(); channel->m_iLastWatched = (time_t) m_pDS->fv("iLastWatched").get_asInt(); channel->m_iClientId = m_pDS->fv("iClientId").get_asInt(); channel->m_iClientChannelNumber = m_pDS->fv("iClientChannelNumber").get_asInt(); channel->m_strInputFormat = m_pDS->fv("sInputFormat").get_asString(); channel->m_strStreamURL = m_pDS->fv("sStreamURL").get_asString(); channel->m_iClientEncryptionSystem = m_pDS->fv("iEncryptionSystem").get_asInt(); channel->m_iEpgId = m_pDS->fv("idEpg").get_asInt(); CLog::Log(LOGDEBUG, "PVRDB - %s - channel '%s' (id: %i) loaded from the database (client id: %i channel uid: %i channel nr: %i)", __FUNCTION__, channel->m_strChannelName.c_str(), channel->m_iChannelId, channel->m_iClientId, channel->m_iUniqueId, channel->m_iClientChannelNumber); PVRChannelGroupMember newMember = { channel, m_pDS->fv("iChannelNumber").get_asInt() }; results.push_back(newMember); m_pDS->next(); ++iReturn; } m_pDS->close(); } catch (...) { CLog::Log(LOGERROR, "PVR - %s - couldn't load channels from the database", __FUNCTION__); } } else { CLog::Log(LOGERROR, "PVR - %s - query failed", __FUNCTION__); } m_pDS->close(); return iReturn; }
bool CPVRChannelGroups::Load(void) { CLog::Log(LOGDEBUG, "PVRChannelGroups - %s - loading all %s channel groups", __FUNCTION__, m_bRadio ? "radio" : "TV"); Clear(); /* create internal channel group */ CPVRChannelGroupInternal *internalChannels = new CPVRChannelGroupInternal(m_bRadio); push_back(internalChannels); internalChannels->Load(); /* load the other groups from the database */ CPVRDatabase *database = CPVRManager::Get()->GetTVDatabase(); if (database->Open()) { database->GetChannelGroupList(*this, m_bRadio); /* load group members */ for (unsigned int iGroupPtr = 1; iGroupPtr < size(); iGroupPtr++) at(iGroupPtr)->Load(); database->Close(); } CLog::Log(LOGDEBUG, "PVRChannelGroups - %s - %d %s channel groups loaded", __FUNCTION__, size(), m_bRadio ? "radio" : "TV"); return true; }
void CAddonHelpers_PVR::PVRTransferChannelEntry(void *addonData, const PVRHANDLE handle, const PVR_CHANNEL *channel) { CAddonHelpers* addon = (CAddonHelpers*) addonData; if (addon == NULL || handle == NULL || channel == NULL) { CLog::Log(LOGERROR, "PVR: PVRTransferChannelEntry is called with NULL-Pointer!!!"); return; } CPVRClient* client = (CPVRClient*) handle->CALLER_ADDRESS; CPVRChannelGroupInternal *xbmcChannels = (CPVRChannelGroupInternal*) handle->DATA_ADDRESS; CPVRChannel channelTag(channel->radio); channelTag.SetClientChannelNumber(channel->number); channelTag.SetClientID(client->GetClientID()); channelTag.SetUniqueID(channel->uid); channelTag.SetChannelName(channel->name); channelTag.SetClientChannelName(channel->callsign); channelTag.SetIconPath(channel->iconpath); channelTag.SetEncryptionSystem(channel->encryption); channelTag.SetHidden(channel->hide); channelTag.SetRecording(channel->recording); channelTag.SetInputFormat(channel->input_format); channelTag.SetStreamURL(channel->stream_url); xbmcChannels->UpdateChannel(channelTag); }
void CAddonCallbacksPVR::PVRTransferChannelEntry(void *addonData, const PVR_HANDLE handle, const PVR_CHANNEL *channel) { CPVRClient *client = GetPVRClient(addonData); CPVRChannelGroupInternal *xbmcChannels = static_cast<CPVRChannelGroupInternal *>(handle->dataAddress); if (!handle || !channel || !client || !xbmcChannels) { CLog::Log(LOGERROR, "PVR - %s - invalid handler data", __FUNCTION__); return; } /* transfer this entry to the internal channels group */ xbmcChannels->UpdateFromClient(CPVRChannel(*channel, client->GetID())); }
void CAddonCallbacksPVR::PVRTransferChannelEntry(void *addonData, const PVR_HANDLE handle, const PVR_CHANNEL *channel) { CAddonCallbacks* addon = (CAddonCallbacks*) addonData; if (addon == NULL || handle == NULL || channel == NULL) { CLog::Log(LOGERROR, "CAddonCallbacksPVR - %s - called with a null pointer", __FUNCTION__); return; } CPVRClient* client = (CPVRClient*) handle->callerAddress; CPVRChannelGroupInternal *xbmcChannels = (CPVRChannelGroupInternal*) handle->dataAddress; CPVRChannel channelTag(*channel, client->GetClientID()); /* transfer this entry to the internal channels group */ xbmcChannels->UpdateFromClient(channelTag); }
bool CPVRChannelGroups::Load(void) { CLog::Log(LOGDEBUG, "PVRChannelGroups - %s - loading all %s channel groups", __FUNCTION__, m_bRadio ? "radio" : "TV"); Clear(); /* create and load the internal channel group */ CPVRChannelGroupInternal *internalChannels = new CPVRChannelGroupInternal(m_bRadio); push_back(internalChannels); internalChannels->Load(); /* load the other groups from the database */ LoadUserDefinedChannelGroups(); CLog::Log(LOGDEBUG, "PVRChannelGroups - %s - %d %s channel groups loaded", __FUNCTION__, (int) size(), m_bRadio ? "radio" : "TV"); return size() > 0; }
int CPVRDatabase::Get(CPVRChannelGroupInternal &results) { int iReturn(0); std::string strQuery = PrepareSQL("SELECT channels.idChannel, channels.iUniqueId, channels.bIsRadio, channels.bIsHidden, channels.bIsUserSetIcon, channels.bIsUserSetName, " "channels.sIconPath, channels.sChannelName, channels.bIsVirtual, channels.bEPGEnabled, channels.sEPGScraper, channels.iLastWatched, channels.iClientId, channels.bIsLocked, " "map_channelgroups_channels.iChannelNumber, channels.idEpg " "FROM map_channelgroups_channels " "LEFT JOIN channels ON channels.idChannel = map_channelgroups_channels.idChannel " "WHERE map_channelgroups_channels.idGroup = %u", results.IsRadio() ? PVR_INTERNAL_GROUP_ID_RADIO : PVR_INTERNAL_GROUP_ID_TV); if (ResultQuery(strQuery)) { try { bool bIgnoreEpgDB = CSettings::Get().GetBool("epg.ignoredbforclient"); while (!m_pDS->eof()) { CPVRChannelPtr channel = CPVRChannelPtr(new CPVRChannel()); channel->m_iChannelId = m_pDS->fv("idChannel").get_asInt(); channel->m_iUniqueId = m_pDS->fv("iUniqueId").get_asInt(); channel->m_bIsRadio = m_pDS->fv("bIsRadio").get_asBool(); channel->m_bIsHidden = m_pDS->fv("bIsHidden").get_asBool(); channel->m_bIsUserSetIcon = m_pDS->fv("bIsUserSetIcon").get_asBool(); channel->m_bIsUserSetName = m_pDS->fv("bIsUserSetName").get_asBool(); channel->m_bIsLocked = m_pDS->fv("bIsLocked").get_asBool(); channel->m_strIconPath = m_pDS->fv("sIconPath").get_asString(); channel->m_strChannelName = m_pDS->fv("sChannelName").get_asString(); channel->m_bEPGEnabled = m_pDS->fv("bEPGEnabled").get_asBool(); channel->m_strEPGScraper = m_pDS->fv("sEPGScraper").get_asString(); channel->m_iLastWatched = (time_t) m_pDS->fv("iLastWatched").get_asInt(); channel->m_iClientId = m_pDS->fv("iClientId").get_asInt(); if (bIgnoreEpgDB) channel->m_iEpgId = -1; else channel->m_iEpgId = m_pDS->fv("idEpg").get_asInt(); channel->UpdateEncryptionName(); #if PVRDB_DEBUGGING CLog::Log(LOGDEBUG, "PVR - %s - channel '%s' loaded from the database", __FUNCTION__, channel->m_strChannelName.c_str()); #endif PVRChannelGroupMember newMember = { channel, (unsigned int)m_pDS->fv("iChannelNumber").get_asInt() }; results.m_sortedMembers.push_back(newMember); results.m_members.insert(std::make_pair(channel->StorageId(), newMember)); m_pDS->next(); ++iReturn; } m_pDS->close(); } catch (...) { CLog::Log(LOGERROR, "PVR - %s - couldn't load channels from the database", __FUNCTION__); } } else { CLog::Log(LOGERROR, "PVR - %s - query failed", __FUNCTION__); } m_pDS->close(); return iReturn; }