X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b067ecfa85c92c10bdac90db8bc209274ca2c136..e330dbae62e83dd2aa2ff63a984519a84b23c3ad:/lib/dvb/db.cpp diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index e7617fd3..1bfc06ee 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -34,20 +34,31 @@ RESULT eBouquet::moveService(const eServiceReference &ref, unsigned int pos) { if ( pos < 0 || pos >= m_services.size() ) return -1; + ++pos; list::iterator source=m_services.end(); list::iterator dest=m_services.end(); + bool forward = false; for (list::iterator it(m_services.begin()); it != m_services.end(); ++it) { - if (dest == m_services.end() && !pos--) + if (dest == m_services.end() && !--pos) dest = it; if (*it == ref) + { source = it; + forward = pos>0; + } if (dest != m_services.end() && source != m_services.end()) break; } if (dest == m_services.end() || source == m_services.end() || source == dest) return -1; - std::iter_swap(source,dest); + while (source != dest) + { + if (forward) + std::iter_swap(source++, source); + else + std::iter_swap(source--, source); + } return 0; } @@ -113,6 +124,18 @@ eDVBService &eDVBService::operator=(const eDVBService &s) return *this; } +void eDVBService::genSortName() +{ + m_service_name_sort = removeDVBChars(m_service_name); + makeUpper(m_service_name_sort); + while ((!m_service_name_sort.empty()) && m_service_name_sort[0] == ' ') + m_service_name_sort.erase(0, 1); + + /* put unnamed services at the end, not at the beginning. */ + if (m_service_name_sort.empty()) + m_service_name_sort = "\xFF"; +} + RESULT eDVBService::getName(const eServiceReference &ref, std::string &name) { if (!ref.name.empty()) @@ -303,15 +326,8 @@ void eDVBDB::load() line[strlen(line)-1]=0; s->m_service_name = line; - s->m_service_name_sort = removeDVBChars(line); - makeUpper(s->m_service_name_sort); - while ((!s->m_service_name_sort.empty()) && s->m_service_name_sort[0] == ' ') - s->m_service_name_sort.erase(0, 1); - - /* put unnamed services at the end, not at the beginning. */ - if (s->m_service_name_sort.empty()) - s->m_service_name_sort = "\xFF"; - + s->genSortName(); + fgets(line, 256, f); if (strlen(line)) line[strlen(line)-1]=0; @@ -530,11 +546,6 @@ void eDVBDB::loadBouquet(const char *path) eDebug("%d entries in Bouquet %s", entries, bouquet_name.c_str()); } -void eDVBDB::saveBouquet(const char *path) -{ - -} - void eDVBDB::loadBouquets() { loadBouquet("bouquets.tv"); @@ -574,11 +585,6 @@ void eDVBDB::loadBouquets() } } -void eDVBDB::saveBouquets() -{ - -} - eDVBDB::eDVBDB() { load(); @@ -636,6 +642,12 @@ RESULT eDVBDB::getService(const eServiceReferenceDVB &reference, ePtr