int CPVRChannelGroupInternal::LoadFromDb(bool bCompress /* = false */) { CPVRDatabase *database = OpenPVRDatabase(); if (!database) return -1; int iChannelCount = size(); if (database->Get(*this) > 0) { if (bCompress) database->Compress(true); } else { CLog::Log(LOGINFO, "PVRChannelGroupInternal - %s - no channels in the database", __FUNCTION__); } database->Close(); SortByChannelNumber(); return size() - iChannelCount; }
bool CPVRChannelGroups::LoadUserDefinedChannelGroups(void) { CPVRDatabase *database = GetPVRDatabase(); if (!database) return false; bool bSyncWithBackends = g_guiSettings.GetBool("pvrmanager.syncchannelgroups"); CSingleLock lock(m_critSection); // load the other groups from the database int iSize = m_groups.size(); database->Get(*this); CLog::Log(LOGDEBUG, "PVR - %s - %d user defined %s channel groups fetched from the database", __FUNCTION__, (int) (m_groups.size() - iSize), m_bRadio ? "radio" : "TV"); // load groups from the backends if the option is enabled iSize = m_groups.size(); if (bSyncWithBackends) { GetGroupsFromClients(); CLog::Log(LOGDEBUG, "PVR - %s - %d new user defined %s channel groups fetched from clients", __FUNCTION__, (int) (m_groups.size() - iSize), m_bRadio ? "radio" : "TV"); } else CLog::Log(LOGDEBUG, "PVR - %s - 'synchannelgroups' is disabled; skipping groups from clients", __FUNCTION__); // load group members for (std::vector<CPVRChannelGroupPtr>::iterator it = m_groups.begin(); it != m_groups.end(); it++) (*it)->Load(); // persist changes if we fetched groups from the backends return bSyncWithBackends ? PersistAll() : true; }
bool CPVRChannelGroups::LoadUserDefinedChannelGroups(void) { CPVRDatabase *database = GetPVRDatabase(); if (!database) return false; CSingleLock lock(m_critSection); /* load the other groups from the database */ int iSize = size(); database->Get(*this); CLog::Log(LOGDEBUG, "PVRChannelGroups - %s - %d user defined %s channel groups fetched from the database", __FUNCTION__, (int) (size() - iSize), m_bRadio ? "radio" : "TV"); iSize = size(); GetGroupsFromClients(); CLog::Log(LOGDEBUG, "PVRChannelGroups - %s - %d new user defined %s channel groups fetched from clients", __FUNCTION__, (int) (size() - iSize), m_bRadio ? "radio" : "TV"); /* load group members */ for (unsigned int iGroupPtr = 1; iGroupPtr < size(); iGroupPtr++) at(iGroupPtr)->Load(); return PersistAll(); }
bool CPVRChannelGroups::LoadUserDefinedChannelGroups(void) { CPVRDatabase *database = GetPVRDatabase(); if (!database) return false; bool bSyncWithBackends = CSettings::Get().GetBool("pvrmanager.syncchannelgroups"); CSingleLock lock(m_critSection); // load the other groups from the database int iSize = m_groups.size(); database->Get(*this); CLog::Log(LOGDEBUG, "PVR - %s - %d user defined %s channel groups fetched from the database", __FUNCTION__, (int) (m_groups.size() - iSize), m_bRadio ? "radio" : "TV"); // load groups from the backends if the option is enabled iSize = m_groups.size(); if (bSyncWithBackends) { GetGroupsFromClients(); CLog::Log(LOGDEBUG, "PVR - %s - %d new user defined %s channel groups fetched from clients", __FUNCTION__, (int) (m_groups.size() - iSize), m_bRadio ? "radio" : "TV"); } else CLog::Log(LOGDEBUG, "PVR - %s - 'synchannelgroups' is disabled; skipping groups from clients", __FUNCTION__); std::vector<CPVRChannelGroupPtr> emptyGroups; // load group members for (std::vector<CPVRChannelGroupPtr>::iterator it = m_groups.begin(); it != m_groups.end(); it++) { // load only user defined groups, as internal group is already loaded if (!(*it)->IsInternalGroup()) { if (!(*it)->Load()) { CLog::Log(LOGDEBUG, "PVR - %s - failed to load channel group '%s'", __FUNCTION__, (*it)->GroupName().c_str()); return false; } // remove empty groups when sync with backend is enabled if (bSyncWithBackends && (*it)->Size() == 0) emptyGroups.push_back(*it); } } for (std::vector<CPVRChannelGroupPtr>::iterator it = emptyGroups.begin(); it != emptyGroups.end(); it++) { CLog::Log(LOGDEBUG, "PVR - %s - deleting empty group '%s'", __FUNCTION__, (*it)->GroupName().c_str()); DeleteGroup(*(*it)); } // persist changes if we fetched groups from the backends return bSyncWithBackends ? PersistAll() : true; }
int CPVRChannelGroup::LoadFromDb(bool bCompress /* = false */) { CPVRDatabase *database = GetPVRDatabase(); if (!database) return -1; int iChannelCount = Size(); database->Get(*this); return Size() - iChannelCount; }
bool CPVRChannelGroups::Load(void) { CPVRDatabase *database = GetPVRDatabase(); if (!database) return false; CSingleLock lock(m_critSection); // remove previous contents Clear(); CLog::Log(LOGDEBUG, "CPVRChannelGroups - %s - loading all %s channel groups", __FUNCTION__, m_bRadio ? "radio" : "TV"); // create the internal channel group CPVRChannelGroupPtr internalGroup = CPVRChannelGroupPtr(new CPVRChannelGroupInternal(m_bRadio)); m_groups.push_back(internalGroup); // load groups from the database database->Get(*this); CLog::Log(LOGDEBUG, "CPVRChannelGroups - %s - %" PRIuS" %s groups fetched from the database", __FUNCTION__, m_groups.size(), m_bRadio ? "radio" : "TV"); // load channels of internal group if (!internalGroup->Load()) { CLog::Log(LOGERROR, "CPVRChannelGroups - %s - failed to load channels", __FUNCTION__); return false; } // load the other groups from the database if (!LoadUserDefinedChannelGroups()) { CLog::Log(LOGERROR, "CPVRChannelGroups - %s - failed to load channel groups", __FUNCTION__); return false; } // set the last played group as selected group at startup CPVRChannelGroupPtr lastPlayedGroup = GetLastPlayedGroup(); SetSelectedGroup(lastPlayedGroup ? lastPlayedGroup : internalGroup); CLog::Log(LOGDEBUG, "CPVRChannelGroups - %s - %" PRIuS" %s channel groups loaded", __FUNCTION__, m_groups.size(), m_bRadio ? "radio" : "TV"); // need at least 1 group return m_groups.size() > 0; }