diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-01-04 21:33:19 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-01-04 21:33:19 +0000 |
| commit | 06469e38dc7f21a2587efc181f47fa219efa8e5f (patch) | |
| tree | ae19682d5ee17d396284b8fd18ea270fab4842c3 | |
| parent | c6e0a23d7d303f47b0c99ee2a5c618d2aeb3e87f (diff) | |
| download | enigma2-06469e38dc7f21a2587efc181f47fa219efa8e5f.tar.gz enigma2-06469e38dc7f21a2587efc181f47fa219efa8e5f.zip | |
export eDVBDB to python ( for reloadServicelist and reloadBouquets )
| -rw-r--r-- | lib/dvb/db.cpp | 19 | ||||
| -rw-r--r-- | lib/dvb/db.h | 33 | ||||
| -rw-r--r-- | lib/python/enigma_python.i | 2 | ||||
| -rw-r--r-- | main/enigma.cpp | 6 |
4 files changed, 36 insertions, 24 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 3920053d..ad2996f9 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -229,7 +229,7 @@ void eDVBService::setCachePID(cacheID id, int pid) DEFINE_REF(eDVBDB); /* THIS CODE IS BAD. it should be replaced by somethine better. */ -void eDVBDB::load() +void eDVBDB::reloadServicelist() { eDebug("---- opening lame channel db"); FILE *f=fopen(CONFIGDIR"/enigma2/lamedb", "rt"); @@ -239,7 +239,7 @@ void eDVBDB::load() if ( !stat("lamedb", &s) ) { rename("lamedb", CONFIGDIR"/enigma2/lamedb" ); - load(); + reloadServicelist(); } return; } @@ -406,7 +406,7 @@ void eDVBDB::load() fclose(f); } -void eDVBDB::save() +void eDVBDB::saveServicelist() { eDebug("---- saving lame channel db"); FILE *f=fopen(CONFIGDIR"/enigma2/lamedb", "w"); @@ -583,8 +583,9 @@ void eDVBDB::loadBouquet(const char *path) eDebug("%d entries in Bouquet %s", entries, bouquet_name.c_str()); } -void eDVBDB::loadBouquets() +void eDVBDB::reloadBouquets() { + m_bouquets.clear(); loadBouquet("bouquets.tv"); loadBouquet("bouquets.radio"); // create default bouquets when missing @@ -622,15 +623,17 @@ void eDVBDB::loadBouquets() } } +eDVBDB *eDVBDB::instance; + eDVBDB::eDVBDB() { - load(); - loadBouquets(); + instance = this; + reloadServicelist(); } eDVBDB::~eDVBDB() { -// save(); + instance=NULL; } RESULT eDVBDB::addChannelToList(const eDVBChannelID &id, iDVBFrontendParameters *feparm) @@ -681,7 +684,7 @@ RESULT eDVBDB::getService(const eServiceReferenceDVB &reference, ePtr<eDVBServic RESULT eDVBDB::flush() { - save(); + saveServicelist(); return 0; } diff --git a/lib/dvb/db.h b/lib/dvb/db.h index 8bb0e5ae..bf39df18 100644 --- a/lib/dvb/db.h +++ b/lib/dvb/db.h @@ -1,20 +1,23 @@ #ifndef __db_h #define __db_h +#ifndef SWIG #include <lib/base/eptrlist.h> #include <lib/dvb/idvb.h> #include <set> - class ServiceDescriptionSection; +#endif class eDVBDB: public iDVBChannelList { + static eDVBDB *instance; DECLARE_REF(eDVBDB); friend class eDVBDBQuery; friend class eDVBDBBouquetQuery; friend class eDVBDBSatellitesQuery; friend class eDVBDBProvidersQuery; -private: + + struct channel { ePtr<iDVBFrontendParameters> m_frontendParameters; @@ -25,16 +28,13 @@ private: std::map<eServiceReferenceDVB, ePtr<eDVBService> > m_services; std::map<std::string, eBouquet> m_bouquets; -public: - void load(); - void save(); - - void loadBouquet(const char *path); - void loadBouquets(); - +#ifdef SWIG eDVBDB(); - virtual ~eDVBDB(); - + ~eDVBDB(); +#endif +public: +#ifndef SWIG +// iDVBChannelList RESULT addChannelToList(const eDVBChannelID &id, iDVBFrontendParameters *feparm); RESULT removeChannel(const eDVBChannelID &id); @@ -47,8 +47,18 @@ public: RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source); RESULT getBouquet(const eServiceReference &ref, eBouquet* &bouquet); +////// + void saveServicelist(); + void loadBouquet(const char *path); + eDVBDB(); + virtual ~eDVBDB(); +#endif + static eDVBDB *getInstance() { return instance; } + void reloadServicelist(); + void reloadBouquets(); }; +#ifndef SWIG // we have to add a possibility to invalidate here. class eDVBDBQueryBase: public iDVBChannelListQuery { @@ -100,5 +110,6 @@ class eDVBDBProvidersQuery: public eDVBDBListQuery public: eDVBDBProvidersQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); }; +#endif // SWIG #endif diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 8d18e416..54a5bcf3 100644 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -68,6 +68,7 @@ is usually caused by not marking PSignals as immutable. #include <lib/actions/action.h> #include <lib/gdi/gfont.h> #include <lib/gdi/epng.h> +#include <lib/dvb/db.h> #include <lib/dvb/volume.h> #include <lib/dvb/sec.h> #include <lib/dvb/epgcache.h> @@ -175,6 +176,7 @@ typedef long time_t; %include <lib/driver/etimezone.h> %include <lib/gdi/lcd.h> %include <lib/dvb_ci/dvbci_ui.h> +%include <lib/dvb/db.h> /************** eptr **************/ %template(eActionMapPtr) ePtr<eActionMap>; diff --git a/main/enigma.cpp b/main/enigma.cpp index b6c57304..2003a452 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -128,15 +128,11 @@ public: m_locale_time_handler = new eDVBLocalTimeHandler(); m_epgcache = new eEPGCache(); m_mgr->setChannelList(m_dvbdb); - -// m_scan = new eComponentScan(); -// m_scan->start(); - } ~eMain() { - m_dvbdb->save(); + m_dvbdb->saveServicelist(); m_scan = 0; } }; |
