from Screens.MessageBox import MessageBox
from Screens.Dish import Dish
from Screens.Standby import Standby
-from Screens.EventView import EventViewEPGSelect
+from Screens.EventView import EventViewEPGSelect, EventViewSimple
from Screens.MinuteInput import MinuteInput
from Components.Harddisk import harddiskmanager
assert menu.tagName == "menu", "root element in menu must be 'menu'!"
self.session.open(MainMenu, menu, menu.childNodes)
+class InfoBarSimpleEventView:
+ """ Opens the Eventview for now/next """
+ def __init__(self):
+ self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
+ {
+ "showEventInfo": (self.openEventView, _("show event details")),
+ })
+
+ def openEventView(self):
+ self.epglist = [ ]
+ service = self.session.nav.getCurrentService()
+ ref = self.session.nav.getCurrentlyPlayingServiceReference()
+ 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(EventViewSimple, self.epglist[0], ServiceReference(ref), self.eventViewCallback)
+
+ def eventViewCallback(self, setEvent, setService, val): #used for now/next displaying
+ if len(self.epglist) > 1:
+ tmp = self.epglist[0]
+ self.epglist[0]=self.epglist[1]
+ self.epglist[1]=tmp
+ setEvent(self.epglist[0])
+
class InfoBarEPG:
""" EPG - Opens an EPG list when the showEPGList action fires """
def __init__(self):
iPlayableService.evEOF: self.__evEOF,
iPlayableService.evSOF: self.__evSOF,
})
- self["SeekActions"] = HelpableActionMap(self, "InfobarSeekActions",
+
+ class InfoBarSeekActionMap(HelpableActionMap):
+ def __init__(self, screen, *args, **kwargs):
+ HelpableActionMap.__init__(self, screen, *args, **kwargs)
+ self.screen = screen
+
+ def action(self, contexts, action):
+ if action[:5] == "seek:":
+ time = int(action[5:])
+ self.screen.seekRelative(time * 90000)
+ else:
+ HelpableActionMap.action(self, contexts, action)
+
+ self["SeekActions"] = InfoBarSeekActionMap(self, "InfobarSeekActions",
{
"pauseService": (self.pauseService, "pause"),
"unPauseService": (self.unPauseService, "continue"),
if self.seekstate != self.SEEK_STATE_PLAY:
self.setSeekState(self.SEEK_STATE_PAUSE)
# HACK
- self.getSeek().seekRelative(1, -90000)
+ #self.getSeek().seekRelative(1, -90000)
self.setSeekState(self.SEEK_STATE_PLAY)
else:
self.setSeekState(self.SEEK_STATE_PAUSE)
def seekRelative(self, diff):
seekable = self.getSeek()
if seekable is not None:
- seekable.seekRelative(0, diff)
+ seekable.seekRelative(1, diff)
from Screens.PVRState import PVRState
event = None
try:
service = self.session.nav.getCurrentService()
- info = service.info()
- ev = info.getEvent(0)
- event = ev
+ epg = eEPGCache.getInstance()
+ event = epg.lookupEventTime(serviceref, -1, 0)
+ if event is None:
+ info = service.info()
+ ev = info.getEvent(0)
+ event = ev
except:
pass
-
+
if event is not None:
data = parseEvent(event)
begin = time.time()
end = begin + 3600 * 10
-
data = (begin, end, data[2], data[3], data[4])
else:
data = (time.time(), time.time() + 3600 * 10, "instant record", "", None)
return None
return service.seek()
- def __getCurrentPosition(self):
+ def cueGetCurrentPosition(self):
seek = self.__getSeekable()
if seek is None:
return None
return long(r[1])
def jumpPreviousNextMark(self, cmp, alternative=None):
- current_pos = self.__getCurrentPosition()
+ current_pos = self.cueGetCurrentPosition()
if current_pos is None:
return
mark = self.getNearestCutPoint(current_pos, cmp=cmp)
seekable.seekTo(pts)
def jumpPreviousMark(self):
- print "jumpPreviousMark"
# we add 2 seconds, so if the play position is <2s after
# the mark, the mark before will be used
self.jumpPreviousNextMark(lambda x: -x-5*90000, alternative=0)
def jumpNextMark(self):
- print "jumpNextMark"
self.jumpPreviousNextMark(lambda x: x)
def getNearestCutPoint(self, pts, cmp=abs):
nearest = cp
return nearest
- def toggleMark(self):
- print "toggleMark"
- current_pos = self.__getCurrentPosition()
+ def toggleMark(self, onlyremove=False, onlyadd=False, tolerance=5*90000):
+ current_pos = self.cueGetCurrentPosition()
if current_pos is None:
print "not seekable"
return
- print "current position: ", current_pos
-
nearest_cutpoint = self.getNearestCutPoint(current_pos)
- print "nearest_cutpoint: ", nearest_cutpoint
- if nearest_cutpoint is not None and abs(nearest_cutpoint[0] - current_pos) < 5*90000:
- self.removeMark(self, *nearest_cutpoint)
- else:
- self.addMark(self, current_pos, self.CUT_TYPE_MARK)
-
- def addMark(self, where, type):
- bisect.insort(self.cut_list, (current_pos, self.CUT_TYPE_MARK))
+ if nearest_cutpoint is not None and abs(nearest_cutpoint[0] - current_pos) < tolerance:
+ if not onlyadd:
+ self.removeMark(nearest_cutpoint)
+ elif not onlyremove:
+ self.addMark((current_pos, self.CUT_TYPE_MARK))
+
+ def addMark(self, point):
+ bisect.insort(self.cut_list, point)
self.uploadCuesheet()
- def removeMark(self, where, type):
- self.cut_list.remove(nearest_cutpoint)
+ def removeMark(self, point):
+ self.cut_list.remove(point)
self.uploadCuesheet()
def __getCuesheet(self):
print "upload failed, no cuesheet interface"
return
self.cut_list = cue.getCutList()
-
- print "cuts:", self.cut_list