display remaining time for next event
[enigma2.git] / lib / service / iservice.h
index 5a5a6cee312cbe7bdbb37eab9530f21da308bdc4..2f489b172c47fade11f2ff75b77796cd4c8daf2e 100644 (file)
@@ -2,6 +2,7 @@
 #define __lib_dvb_iservice_h
 
 #include <lib/python/swig.h>
+#include <lib/python/python.h>
 #include <lib/base/object.h>
 #include <string>
 #include <connection.h>
@@ -166,6 +167,8 @@ public:
 
 SWIG_ALLOW_OUTPUT_SIMPLE(eServiceReference);
 
+extern PyObject *New_eServiceReference(const eServiceReference &ref); // defined in enigma_python.i
+
 typedef long long pts_t;
 
        /* the reason we have the servicereference as additional argument is
@@ -307,6 +310,7 @@ public:
                /* if you want to do several seeks in a row, you can enable the trickmode. 
                   audio will be switched off, sync will be disabled etc. */
        virtual RESULT setTrickmode(int trick=0)=0;
+       virtual RESULT isCurrentlySeekable()=0;
 };
 
 TEMPLATE_TYPEDEF(ePtr<iSeekableService>, iSeekableServicePtr);
@@ -365,6 +369,10 @@ class iTimeshiftService: public iObject
 public:
        virtual RESULT startTimeshift()=0;
        virtual RESULT stopTimeshift()=0;
+       
+       virtual int isTimeshiftActive()=0;
+                       /* this essentially seeks to the relative end of the timeshift buffer */
+       virtual RESULT activateTimeshift()=0;
 };
 
 TEMPLATE_TYPEDEF(ePtr<iTimeshiftService>, iTimeshiftServicePtr);
@@ -379,6 +387,8 @@ class iPlayableService: public iObject
 public:
        enum
        {
+                       /* these first two events are magical, and should only
+                          be generated if you know what you're doing. */
                evStart,
                evEnd,
                
@@ -386,8 +396,12 @@ public:
                        // when iServiceInformation is implemented:
                evUpdatedEventInfo,
                evUpdatedInfo,
+
+                       /* when seek() is implemented: */               
+               evSeekableStatusChanged, /* for example when timeshifting */
                
-               evEOF
+               evEOF,
+               evSOF, /* bounced against start of file (when seeking backwards) */
        };
        virtual RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection)=0;
        virtual RESULT start()=0;
@@ -435,6 +449,8 @@ public:
                /* moves a service in a list, only if list suppports a specific sort method. */
                /* pos is the new, absolute position from 0..size-1 */
        virtual RESULT moveService(eServiceReference &ref, int pos)=0;
+               /* set name of list, for bouquets this is the visible bouquet name */
+       virtual RESULT setListName(const std::string &name)=0;
 };
 
 TEMPLATE_TYPEDEF(ePtr<iMutableServiceList>, iMutableServiceListPtr);
@@ -447,8 +463,9 @@ class iListableService: public iObject
 #endif
 public:
                /* legacy interface: get a list */
-       virtual RESULT getContent(std::list<eServiceReference> &list)=0;
-       
+       virtual RESULT getContent(std::list<eServiceReference> &list, bool sorted=false)=0;
+       virtual RESULT getContent(PyObject *list, bool sorted=false)=0;
+
                /* new, shiny interface: streaming. */
        virtual SWIG_VOID(RESULT) getNext(eServiceReference &SWIG_OUTPUT)=0;