from Components.ServiceList import ServiceList
from Components.ActionMap import ActionMap
from EpgSelection import EPGSelection
-from enigma import eServiceReference, eEPGCache, eEPGCachePtr, eServiceCenter, eServiceCenterPtr, iMutableServiceListPtr
+from enigma import eServiceReference, eEPGCache, eEPGCachePtr, eServiceCenter, eServiceCenterPtr, iMutableServiceListPtr, eTimer
+from Components.config import config, configElement, ConfigSubsection, configText
from Screens.FixedMenu import FixedMenu
def __init__(self, session, csel):
self.csel = csel
- menu = [("back", self.close)]
-
+ menu = [ ]
+
if csel.mutableList is not None:
if not csel.bouquet_mark_edit:
if csel.movemode:
if not csel.bouquet_mark_edit and not csel.movemode:
menu.append(("remove service", self.removeCurrentService))
+ menu.append(("back", self.close))
+ else:
+ menu.append(("back", self.close))
FixedMenu.__init__(self, session, "Channel Selection", menu)
self.skinName = "Menu"
self.close()
class ChannelSelection(Screen):
+ def lastService(self):
+ self.lastServiceTimer.stop()
+ #zap to last running tv service
+ self.setRoot(eServiceReference(config.tv.lastroot.value))
+ self.session.nav.playService(eServiceReference(config.tv.lastservice.value))
+
def __init__(self, session):
Screen.__init__(self, session)
+
+ #config for lastservice
+ config.tv = ConfigSubsection();
+ config.tv.lastservice = configElement("config.tv.lastservice", configText, "", 0);
+ config.tv.lastroot = configElement("config.tv.lastroot", configText, "", 0);
self.entry_marked = False
self.movemode = False
self["key_blue"] = Button("Favourites")
self["list"] = ServiceList()
- self.setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)"""))
- #self["okbutton"] = Button("ok", [self.channelSelected])
+ if config.tv.lastroot.value == "":
+ self.setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)"""))
+ #self["okbutton"] = Button("ok", [self.channelSelected])
+
+ self.lastServiceTimer = eTimer()
+ self.lastServiceTimer.timeout.get().append(self.lastService)
+ self.lastServiceTimer.start(100)
+
class ChannelActionMap(ActionMap):
def action(self, contexts, action):
if action[:7] == "bouquet":
l = self.csel
+ list = l["list"]
+ list.setMode(list.MODE_NORMAL)
l.setRoot(eServiceReference("1:7:1:0:0:0:0:0:0:0:" + action[8:]))
else:
if action == "cancel":
"ok": self.channelSelected,
"mark": self.doMark,
"contextMenu": self.doContext,
- "showEPGList": self.showEPGList
+ "showFavourites": self.showFavourites,
+ "showEPGList": self.showEPGList
})
self["actions"].csel = self
ref=l.getCurrent()
if ref.valid() and self.mutableList is not None:
self.mutableList.removeService(ref)
- pos = l.cursorGet()
self.mutableList.flushChanges() #FIXME dont flush on each single removed service
self.setRoot(l.getRoot())
-# l.cursorSet(pos) #whats going wrong here????
def endMarkedEdit(self, abort):
l = self["list"]
self.mutableList.addService(eServiceReference(x))
if changed:
self.mutableList.flushChanges()
- self.setRoot(self.bouquetRoot)
+ #self.setRoot(self.bouquetRoot)
+ self.showFavourites()
self.__marked = []
self.clearMarks()
self.bouquet_mark_edit = False
self.mutableList = list.startEdit()
else:
self.mutableList = None
+ self.saveRoot(root)
self["list"].setRoot(root)
def clearMarks(self):
self.doMark()
else:
self.session.nav.playService(ref)
+ self.saveChannel()
self.close()
#called from infoBar
def zap(self):
self.session.nav.playService(self["list"].getCurrent())
+ self.saveChannel()
def moveUp(self):
self["list"].moveUp()
def toggleMoveMode(self):
if self.movemode:
+ if self.entry_marked:
+ self.channelSelected() # unmark current entry
self.movemode = False
self.mutableList.flushChanges() # FIXME add check if changes was made
else:
self.movemode = True
+
+ def showFavourites(self):
+ self.setRoot(eServiceReference('1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'))
+ list = self["list"]
+ list.setMode(list.MODE_FAVOURITES)
+
+ def saveRoot(self, root):
+ if root is not None:
+ config.tv.lastroot.value = root.toString()
+ config.tv.lastroot.save()
+
+ def saveChannel(self):
+ ref = self.session.nav.getCurrentlyPlayingServiceReference()
+ if ref is not None:
+ refstr = ref.toString()
+ else:
+ refstr = ""
+ config.tv.lastservice.value = refstr
+ config.tv.lastservice.save()