+DEFINE_REF(eDVBServiceList);
+
+eDVBServiceList::eDVBServiceList(const eServiceReference &parent): m_parent(parent)
+{
+}
+
+eDVBServiceList::~eDVBServiceList()
+{
+}
+
+RESULT eDVBServiceList::getContent(std::list<eServiceReference> &list)
+{
+ ePtr<iDVBChannelList> db;
+ ePtr<eDVBResourceManager> res;
+
+ int err;
+ if ((err = eDVBResourceManager::getInstance(res)) != 0)
+ {
+ eDebug("no resource manager");
+ return err;
+ }
+ if ((err = res->getChannelList(db)) != 0)
+ {
+ eDebug("no channel list");
+ return err;
+ }
+
+ ePtr<iDVBChannelListQuery> query;
+
+ ePtr<eDVBChannelQuery> q;
+
+ if (m_parent.path.size())
+ eDVBChannelQuery::compile(q, m_parent.path);
+
+ if ((err = db->startQuery(query, q)) != 0)
+ {
+ eDebug("startQuery failed");
+ return err;
+ }
+
+ eServiceReferenceDVB ref;
+
+ while (!query->getNextResult(ref))
+ list.push_back(ref);
+ return 0;
+}
+