import time
import os
+from Components.config import config, currentConfigSelectionElement
+
# hack alert!
from Menu import MainMenu, mdom
+from GlobalActions import globalActionMap
+
class InfoBarVolumeControl:
"""Volume control, handles volUp, volDown, volMute actions and display
a corresponding dialog"""
+
def __init__(self):
+ global globalActionMap
+ globalActionMap.actions["volumeUp"]=self.volUp
+ globalActionMap.actions["volumeDown"]=self.volDown
+ globalActionMap.actions["volumeMute"]=self.volMute
+
config.audio = ConfigSubsection()
config.audio.volume = configElement("config.audio.volume", configSequence, [100], configsequencearg.get("INTEGER", (0, 100)))
- self["VolumeActions"] = ActionMap( ["InfobarVolumeActions"] ,
- {
- "volumeUp": self.volUp,
- "volumeDown": self.volDown,
- "volumeMute": self.volMute,
- })
-
self.volumeDialog = self.session.instantiateDialog(Volume)
self.muteDialog = self.session.instantiateDialog(Mute)
bouquetlist = serviceHandler.list(bouquet)
if not bouquetlist is None:
while number:
- bouquet = bouquetlist.getNext()
+ bouquet = self.servicelist.appendDVBTypes(bouquetlist.getNext())
if not bouquet.valid(): #check end of list
break
if ((bouquet.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory):
def __init__(self):
self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
{
- "showEPGList": (self.openSingleServiceEPG, _("show EPG...")),
+ "showEPGList": (self.showEPG, _("show EPG...")),
})
+ def showEPG(self):
+ if currentConfigSelectionElement(config.usage.epgtoggle) == "yes":
+ self.openSingleServiceEPG()
+ else:
+ self.showEPGList()
+
def showEPGList(self):
bouquets = self.servicelist.getBouquetList()
if bouquets is None:
if info:
self.showEPGList()
+ def openEventView(self):
+ try:
+ self.epglist = [ ]
+ service = self.session.nav.getCurrentService()
+ info = service.info()
+ ptr=info.getEvent(0)
+ if ptr:
+ self.epglist.append(ptr)
+ ptr=info.getEvent(1)
+ if ptr:
+ self.epglist.append(ptr)
+ if len(self.epglist) > 0:
+ self.session.open(EventView, self.epglist[0], ServiceReference(ref), self.eventViewCallback)
+ except:
+ pass
+
def openSingleServiceEPG(self):
ref=self.session.nav.getCurrentlyPlayingServiceReference()
ptr=eEPGCache.getInstance()
self.session.openWithCallback(self.singleEPGCallback, EPGSelection, ref)
else: # try to show now/next
print 'no epg for service', ref.toString()
- try:
- self.epglist = [ ]
- service = self.session.nav.getCurrentService()
- info = service.info()
- ptr=info.getEvent(0)
- if ptr:
- self.epglist.append(ptr)
- ptr=info.getEvent(1)
- if ptr:
- self.epglist.append(ptr)
- if len(self.epglist) > 0:
- self.session.open(EventView, self.epglist[0], ServiceReference(ref), self.eventViewCallback)
- except:
- pass
+
def openBouquetEPG(self, bouquet):
ptr=eEPGCache.getInstance()
def __init__(self):
self["ServiceName"] = ServiceName(self.session.nav)
-class InfoBarPVR:
-
+class InfoBarSeek:
+ """handles actions like seeking, pause"""
+
# ispause, isff, issm, skip
SEEK_STATE_PLAY = (0, 0, 0, 0)
SEEK_STATE_PAUSE = (1, 0, 0, 0)
SEEK_STATE_SM_QUARTER = (0, 0, 4, 0)
SEEK_STATE_SM_EIGHTH = (0, 0, 8, 0)
- """handles PVR specific actions like seeking, pause"""
def __init__(self):
- self["PVRActions"] = HelpableActionMap(self, "InfobarPVRActions",
+ self["SeekActions"] = HelpableActionMap(self, "InfobarSeekActions",
{
"pauseService": (self.pauseService, "pause"),
"unPauseService": (self.unPauseService, "continue"),
"seekFwdUp": (self.seekFwdUp, "skip forward"),
"seekBack": (self.seekBack, "skip backward"),
"seekBackUp": (self.seekBackUp, "skip backward"),
-
- "up": (self.showMovies, "movie list"),
- "down": (self.showMovies, "movie list")
})
self.seekstate = self.SEEK_STATE_PLAY
def rwdSeekTo(self, minutes):
self.fwdSeekTo(0 - minutes)
+class InfoBarShowMovies:
+
+ # i don't really like this class.
+ # it calls a not further specified "movie list" on up/down/movieList,
+ # so this is not moe than an action map
+ def __init__(self):
+ self["MovieListActions"] = HelpableActionMap(self, "InfobarMovieListActions",
+ {
+ "movieList": (self.showMovies, "movie list"),
+ "up": (self.showMovies, "movie list"),
+ "down": (self.showMovies, "movie list")
+ })
+
+class InfoBarTimeshift:
+ def __init__(self):
+ self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions",
+ {
+ "timeshiftStart": (self.startTimeshift, "start timeshift "),
+ "timeshiftStop": (self.stopTimeshift, "stop timeshift")
+ })
+ self.tshack = 0
+
+ def getTimeshift(self):
+ service = self.session.nav.getCurrentService()
+ return service.timeshift()
+
+ def startTimeshift(self):
+ # TODO: check for harddisk! (or do this in the interface? would make
+ # more sense... for example radio could be timeshifted in memory,
+ # and the decision can't be made here)
+ print "enable timeshift"
+ ts = self.getTimeshift()
+ if ts is None:
+ self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
+ print "no ts interface"
+ return
+ print "ok, timeshift enabled"
+ if self.tshack == 0:
+ ts.startTimeshift()
+ self.tshack = 1
+ else:
+ pauseable = self.session.nav.getCurrentService().pause()
+ pauseable.pause() # switch to record
+
+ def stopTimeshift(self):
+ print "disable timeshift"
+ ts = self.getTimeshift()
+ if ts is None:
+ return
+ ts.stopTimeshift()
+ self.tshack = 0
+
+
from RecordTimer import parseEvent
class InfoBarInstantRecord:
if event is not None:
data = parseEvent(event)
- data = (data[0], data[1] + 3600 * 10, data[2], data[3], data[4])
+ begin = data[0]
+ if begin < time.time():
+ begin = time.time()
+
+ end = data[1]
+ if end < begin:
+ end = begin
+
+ end += 3600 * 10
+
+ data = (begin, end, data[2], data[3], data[4])
else:
data = (time.time(), time.time() + 3600 * 10, "instant record", "", None)
self.hideSubServiceIndication()
def checkDolby(self, service):
+ # FIXME
dolby = False
audio = service.audioTracks()
if audio is not None: