diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-05-08 20:08:22 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-05-08 20:08:22 +0000 |
| commit | ca7d92c97764d916bb8dd6731efa1ccff693b944 (patch) | |
| tree | d5883fbc6b73cd2ce8bf4e85f64e26d26a605ac7 /lib/dvb/db.cpp | |
| parent | 4bbe1d7e132ead361bf179b8ee618bdaba2335dc (diff) | |
| download | enigma2-ca7d92c97764d916bb8dd6731efa1ccff693b944.tar.gz enigma2-ca7d92c97764d916bb8dd6731efa1ccff693b944.zip | |
fix "Clearall before scan" handling
add ability to reset the newfound flag from single service via channellist context menu
add ability to the newfound flags for all services from a "orbital position" via channellist context menu
Diffstat (limited to 'lib/dvb/db.cpp')
| -rw-r--r-- | lib/dvb/db.cpp | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index e8500b23..c0064071 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -670,17 +670,26 @@ eDVBDB::~eDVBDB() instance=NULL; } -RESULT eDVBDB::removeService(eServiceReferenceDVB service) +RESULT eDVBDB::removeService(const eServiceReference &ref) { - std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_services.find(service)); - if (it != m_services.end()) + if (ref.type == eServiceReference::idDVB) { - m_services.erase(it); - return 0; + eServiceReferenceDVB &service = (eServiceReferenceDVB&)ref; + std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_services.find(service)); + if (it != m_services.end()) + { + m_services.erase(it); + return 0; + } } return -1; } +RESULT eDVBDB::removeServices(int dvb_namespace, int tsid, int onid, unsigned int orb_pos) +{ + return removeServices(eDVBChannelID(eDVBNamespace(dvb_namespace), eTransportStreamID(tsid), eOriginalNetworkID(onid)), orb_pos); +} + RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) { RESULT ret=-1; @@ -710,6 +719,10 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) remove=false; if ( remove ) { + eDebug("remove %08x %04x %04x", + ch.dvbnamespace.get(), + ch.original_network_id.get(), + ch.transport_stream_id.get()); removed_chids.insert(it->first); m_channels.erase(it++); } @@ -734,22 +747,35 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) return ret; } -RESULT eDVBDB::addFlag(eServiceReferenceDVB service, unsigned int flagmask) +RESULT eDVBDB::addFlag(const eServiceReference &ref, unsigned int flagmask) { - std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_services.find(service)); - if (it != m_services.end()) + if (ref.type == eServiceReference::idDVB) { - it->second->m_flags |= ~flagmask; + eServiceReferenceDVB &service = (eServiceReferenceDVB&)ref; + std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_services.find(service)); + if (it != m_services.end()) + it->second->m_flags |= ~flagmask; + return 0; } - return 0; + return -1; } -RESULT eDVBDB::removeFlag(eServiceReferenceDVB service, unsigned int flagmask) +RESULT eDVBDB::removeFlag(const eServiceReference &ref, unsigned int flagmask) { - std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_services.find(service)); - if (it != m_services.end()) - it->second->m_flags &= ~flagmask; - return 0; + if (ref.type == eServiceReference::idDVB) + { + eServiceReferenceDVB &service = (eServiceReferenceDVB&)ref; + std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator it(m_services.find(service)); + if (it != m_services.end()) + it->second->m_flags &= ~flagmask; + return 0; + } + return -1; +} + +RESULT eDVBDB::removeFlags(unsigned int flagmask, int dvb_namespace, int tsid, int onid, unsigned int orb_pos) +{ + return removeFlags(flagmask, eDVBChannelID(eDVBNamespace(dvb_namespace), eTransportStreamID(tsid), eOriginalNetworkID(onid)), orb_pos); } RESULT eDVBDB::removeFlags(unsigned int flagmask, eDVBChannelID chid, unsigned int orbpos) @@ -798,7 +824,6 @@ RESULT eDVBDB::removeFlags(unsigned int flagmask, eDVBChannelID chid, unsigned i return 0; } - RESULT eDVBDB::addChannelToList(const eDVBChannelID &id, iDVBFrontendParameters *feparm) { channel ch; |
