add extension to swap picture in picture with big picture
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 22 May 2006 03:26:50 +0000 (03:26 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 22 May 2006 03:26:50 +0000 (03:26 +0000)
lib/python/Screens/InfoBarGenerics.py
lib/python/Screens/PictureInPicture.py

index 6721265..13bca8d 100644 (file)
@@ -1020,6 +1020,7 @@ class InfoBarExtensions:
        PIPON = 0
        PIPOFF = 1
        MOVEPIP = 2
+       PIPSWAP = 3
 
        def extensions(self):
                list = []
@@ -1028,29 +1029,30 @@ class InfoBarExtensions:
                elif self.pipshown == True:
                        list.append((_("Disable Picture in Picture"), self.PIPOFF))
                        list.append((_("Move Picture in Picture"), self.MOVEPIP))
+                       list.append((_("Swap services"), self.PIPSWAP))
                self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list)
 
        def extensionCallback(self, answer):
                if answer is not None:
                        if answer[1] == self.PIPON:
-#                              self.session.nav.stopService()
                                self.pip = self.session.instantiateDialog(PictureInPicture)
-                               #self.pip.show()
                                
                                newservice = self.session.nav.getCurrentlyPlayingServiceReference()
-                               self.pipservice = eServiceCenter.getInstance().play(newservice)
-                               if self.pipservice and not self.pipservice.setTarget(1):
-                                       self.pipservice.start()
+                               
+                               if self.pip.playService(newservice):
                                        self.pipshown = True
                                else:
-                                       self.pipservice = None
+                                       self.pipshown = False
                                        del self.pip
                                self.session.nav.playService(newservice)
                        elif answer[1] == self.PIPOFF:
-                               #self.pip.hide()
-                               self.pipservice = None
                                del self.pip
                                self.pipshown = False
+                       elif answer[1] == self.PIPSWAP:
+                               swapservice = self.pip.getCurrentService()
+                               self.pip.playService(self.session.nav.getCurrentlyPlayingServiceReference())
+                               self.session.nav.playService(swapservice)
+                               
                        elif answer[1] == self.MOVEPIP:
                                self.session.open(PiPSetup, pip = self.pip)
 
index 403ecd3..20cdb23 100644 (file)
@@ -1,5 +1,5 @@
 from Screens.Screen import Screen
-from enigma import ePoint, eSize
+from enigma import ePoint, eSize, eServiceCenter
 
 from Components.VideoWindow import VideoWindow
 
@@ -8,6 +8,7 @@ class PictureInPicture(Screen):
                Screen.__init__(self, session)
                
                self["video"] = VideoWindow()
+               self.currentService = None
 
        def move(self, x, y):
                print "moving pip to", str(x) + ":" + str(y)
@@ -22,4 +23,18 @@ class PictureInPicture(Screen):
                return ((self.instance.position().x(), self.instance.position().y()))
                
        def getSize(self):
-               return (self.instance.size().width(), self.instance.size().height())
\ No newline at end of file
+               return (self.instance.size().width(), self.instance.size().height())
+               
+       def playService(self, service):
+               self.pipservice = eServiceCenter.getInstance().play(service)
+               if self.pipservice and not self.pipservice.setTarget(1):
+                       self.pipservice.start()
+                       self.currentService = service
+                       return True
+               else:
+                       self.pipservice = None
+                       return False
+               
+       def getCurrentService(self):
+               return self.currentService
+