aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/db.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-05-08 20:08:22 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-05-08 20:08:22 +0000
commitca7d92c97764d916bb8dd6731efa1ccff693b944 (patch)
treed5883fbc6b73cd2ce8bf4e85f64e26d26a605ac7 /lib/dvb/db.cpp
parent4bbe1d7e132ead361bf179b8ee618bdaba2335dc (diff)
downloadenigma2-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.cpp57
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;