2 from Screens.MessageBox import MessageBox
3 from Screens.ChoiceBox import ChoiceBox
4 from Screens.InputBox import InputBox
7 from Components.Input import Input
10 from enigma import eTimer
13 """Simple Plugin to automatically zap back to a Service after a given amount
16 def __init__(self, session, servicelist, cleanupfnc = None):
17 # Save Session&Servicelist
18 self.session = session
19 self.servicelist = servicelist
22 self.zap_timer = eTimer()
23 self.zap_timer.callback.append(self.zap)
26 self.zap_service = None
27 self.move_service = None
30 self.cleanupfnc = cleanupfnc
32 def showSelection(self):
33 # Check if timer is active
34 if self.zap_timer.isActive():
35 # Ask if we should stop the running timer
36 self.session.openWithCallback(
39 _("Timer already running.\nStop it?")
43 self.session.openWithCallback(
46 _("When to Zap back?"),
49 ' '.join([str(x), _("minutes")]),
54 ( _("Custom"), 'custom')
58 def confirmStop(self, result):
64 self.zap_service = None
65 self.move_service = None
67 # Clean up if possible
71 def choiceCallback(self, result):
72 result = result and result[1]
73 if result == "custom":
74 self.session.openWithCallback(
77 title=_("How many minutes to wait until zapping back?"),
82 elif result is not None:
83 self.confirmStart(result)
84 # Clean up if possible
88 def inputCallback(self, result):
89 if result is not None:
90 self.confirmStart(int(result))
91 # Clean up if possible
96 def confirmStart(self, duration):
97 # Show Information to User, Save Service, Start Timer
100 _("Zapping back in %d Minutes") % (duration),
101 type = MessageBox.TYPE_INFO,
105 # Keep playing and selected service as we might be playing a service not in servicelist
106 self.zap_service = self.session.nav.getCurrentlyPlayingServiceReference()
107 self.move_service = self.servicelist.getCurrentSelection()
110 self.zap_timer.startLongTimer(duration*60)
113 if self.zap_service is not None:
114 # Check if we know where to move in Servicelist
115 if self.move_service is not None:
116 self.servicelist.setCurrentSelection(self.move_service)
117 self.servicelist.zap()
119 # Play zap_service if it is different from move_service
120 if self.zap_service != self.move_service:
122 self.session.nav.playService(self.zap_service)
125 self.zap_service = None
126 self.move_service = None
128 # Clean up if possible
133 self.zap_timer.callback.remove(self.zap)
134 self.zap_timer = None