<key id="KEY_RIGHT" mapto="zapDown" flags="mr" />
<key id="KEY_UP" mapto="switchChannelUp" flags="mr" />
<key id="KEY_DOWN" mapto="switchChannelDown" flags="mr" />
-
+ <key id="KEY_PREVIOUS" mapto="historyBack" flags="mr" />
+ <key id="KEY_NEXT" mapto="historyNext" flags="mr" />
<key id="BTN_0" mapto="zapUp" flags="mr" />
<key id="BTN_1" mapto="zapDown" flags="mr" />
</map>
return bouquets
return None
+HISTORYSIZE = 20
+
class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG):
def __init__(self, session):
ChannelSelectionBase.__init__(self,session)
self.lastChannelRootTimer.timeout.get().append(self.__onCreate)
self.lastChannelRootTimer.start(100,True)
+ self.history = [ ]
+ self.history_pos = 0
+
def __onCreate(self):
self.setTvMode()
self.restoreRoot()
lastservice=eServiceReference(config.tv.lastservice.value)
if lastservice.valid():
self.setCurrentSelection(lastservice)
- self.session.nav.playService(lastservice)
+ self.zap()
def __onShown(self):
self.recallBouquetMode()
#called from infoBar and channelSelected
def zap(self):
ref = self.session.nav.getCurrentlyPlayingServiceReference()
- if ref is None or ref != self.getCurrentSelection():
- self.session.nav.playService(self.getCurrentSelection())
+ nref = self.getCurrentSelection()
+ if ref is None or ref != nref:
+ self.session.nav.playService(nref)
+ self.saveRoot()
+ self.saveChannel()
+ tmp=self.servicePath[:]
+ tmp.append(nref)
+ try:
+ del self.history[self.history_pos+1:]
+ except:
+ pass
+ self.history.append(tmp)
+ hlen = len(self.history)
+ if hlen > HISTORYSIZE:
+ del self.history[0]
+ self.history_pos = hlen-1
+
+ def historyBack(self):
+ hlen = len(self.history)
+ if hlen > 1 and self.history_pos > 0:
+ self.history_pos -= 1
+ self.setHistoryPath()
+
+ def historyNext(self):
+ hlen = len(self.history)
+ if hlen > 1 and self.history_pos < (hlen-1):
+ self.history_pos += 1
+ self.setHistoryPath()
+
+ def setHistoryPath(self):
+ path = self.history[self.history_pos][:]
+ ref = path.pop()
+ self.servicePath = path
self.saveRoot()
+ plen = len(path)
+ root = path[plen-1]
+ if self.getRoot() != root:
+ self.setRoot(root)
+ self.session.nav.playService(ref)
+ self.setCurrentSelection(ref)
self.saveChannel()
def saveRoot(self):
"switchChannelDown": self.switchChannelDown,
"zapUp": (self.zapUp, _("next channel")),
"zapDown": (self.zapDown, _("previous channel")),
+ "historyBack": (self.historyBack, _("previous channel in history")),
+ "historyNext": (self.historyNext, _("next channel in history"))
})
+ def historyBack(self):
+ self.servicelist.historyBack()
+
+ def historyNext(self):
+ self.servicelist.historyNext()
+
def switchChannelUp(self):
self.servicelist.moveUp()
self.session.execDialog(self.servicelist)