make delete working in movieMenu
[enigma2.git] / lib / service / iservice.h
index 54d7b11f29d494aa76b90ab6bc541dde00f10ce5..f9a26722bf7d57125a687401651309565c95fb82 100644 (file)
@@ -44,6 +44,10 @@ public:
        int data[8];
        std::string path;
 
+// only for override service names in bouquets or to give servicerefs a name which not have a
+// real existing service ( for dvb eServiceDVB )
+       std::string name;
+
        eServiceReference()
                : type(idInvalid), flags(0)
        {
@@ -217,6 +221,7 @@ public:
                evStart,
                evEnd,
                
+               evTuneFailed,
                // when iServiceInformation is implemented:
                evUpdatedEventInfo
        };
@@ -233,7 +238,7 @@ TEMPLATE_TYPEDEF(ePtr<iPlayableService>, iPlayableServicePtr);
 class iRecordableService: public iObject
 {
 public:
-       virtual RESULT prepare()=0;
+       virtual RESULT prepare(const char *filename)=0;
        virtual RESULT start()=0;
        virtual RESULT stop()=0;
 };
@@ -250,10 +255,29 @@ public:
        
                /* new, shiny interface: streaming. */
        virtual SWIG_VOID(RESULT) getNext(eServiceReference &SWIG_OUTPUT)=0;
+       
+               /* use this for sorting. output is not sorted because of either
+                - performance reasons: the whole list must be buffered or
+                - the interface would be restricted to a list. streaming
+                  (as well as a future "active" extension) won't be possible.
+               */
+       virtual int compareLessEqual(const eServiceReference &, const eServiceReference &)=0;
 };
 
 TEMPLATE_TYPEDEF(ePtr<iListableService>, iListableServicePtr);
 
+       /* a helper class which can be used as argument to stl's sort(). */
+class iListableServiceCompare
+{
+       ePtr<iListableService> m_list;
+public:
+       iListableServiceCompare(iListableService *list): m_list(list) { }
+       bool operator()(const eServiceReference &a, const eServiceReference &b)
+       {
+               return m_list->compareLessEqual(a, b);
+       }
+};
+
 class iServiceOfflineOperations: public iObject
 {
 public: