diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-11-13 18:25:34 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-11-13 18:25:34 +0000 |
| commit | a6d3a3d2a552e2846e8da5a03f7651c5c2e7d6b2 (patch) | |
| tree | e40e204ccace37d2594ee881240294de734c1e80 /lib/dvb/db.cpp | |
| parent | de0f72b065f83042e6933b63487eb8124e643990 (diff) | |
| download | enigma2-a6d3a3d2a552e2846e8da5a03f7651c5c2e7d6b2.tar.gz enigma2-a6d3a3d2a552e2846e8da5a03f7651c5c2e7d6b2.zip | |
move services in bouquets is now possible.. (bouquet save is missing yet)
Diffstat (limited to 'lib/dvb/db.cpp')
| -rw-r--r-- | lib/dvb/db.cpp | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 70d512c1..a9329f18 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -10,6 +10,48 @@ DEFINE_REF(eDVBService); +// the following three methodes are declared in idvb.h +RESULT eBouquet::addService(const eServiceReference &ref) +{ + list::iterator it = + std::find(m_services.begin(), m_services.end(), ref); + if ( it != m_services.end() ) + return -1; + m_services.push_back(ref); + return 0; +} + +RESULT eBouquet::removeService(const eServiceReference &ref) +{ + list::iterator it = + std::find(m_services.begin(), m_services.end(), ref); + if ( it == m_services.end() ) + return -1; + m_services.erase(it); + return 0; +} + +RESULT eBouquet::moveService(const eServiceReference &ref, unsigned int pos) +{ + if ( pos < 0 || pos >= m_services.size() ) + return -1; + list::iterator source=m_services.end(); + list::iterator dest=m_services.end(); + for (list::iterator it(m_services.begin()); it != m_services.end(); ++it) + { + if (dest == m_services.end() && !pos--) + dest = it; + if (*it == ref) + source = it; + 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); + return 0; +} + eDVBService::eDVBService() { } @@ -507,7 +549,7 @@ RESULT eDVBDB::getService(const eServiceReferenceDVB &reference, ePtr<eDVBServic return 0; } -RESULT eDVBDB::getBouquet(const eServiceReference &ref, const eBouquet* &bouquet) +RESULT eDVBDB::getBouquet(const eServiceReference &ref, eBouquet* &bouquet) { std::string str = ref.path; if (str.empty()) |
