2 from Screens.MessageBox import MessageBox
5 from enigma import eTimer
8 """Simple Plugin to automatically zap back to a Service after a given amount
11 def __init__(self, session, servicelist, cleanupfnc = None):
12 # Save Session&Servicelist
13 self.session = session
14 self.servicelist = servicelist
17 self.zap_timer = eTimer()
18 self.zap_timer.callback.append(self.zap)
21 self.zap_service = None
22 self.move_service = None
25 self.cleanupfnc = cleanupfnc
27 def showSelection(self):
28 # Check if timer is active
29 if self.zap_timer.isActive():
30 # Ask if we should stop the running timer
31 self.session.openWithCallback(
34 _("Timer already running.\nStop it?")
37 from Screens.ChoiceBox import ChoiceBox
40 self.session.openWithCallback(
43 _("When to Zap back?"),
46 ' '.join([str(x), _("minutes")]),
51 ( _("Custom"), 'custom')
55 def confirmStop(self, result):
61 self.zap_service = None
62 self.move_service = None
64 # Clean up if possible
68 def choiceCallback(self, result):
69 result = result and result[1]
70 if result == "custom":
71 from Screens.InputBox import InputBox
72 from Components.Input import Input
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