aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens/EventView.py
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-04-19 18:37:37 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-04-19 18:37:37 +0000
commit52492210cfa975235fb07171f0348e9471edd8ef (patch)
treeb6cbfe569f71d8081aafb55ec8c660bdaceac9e5 /lib/python/Screens/EventView.py
parent5f808a16079e84f0a6f5b88a62faffc12d74a5e3 (diff)
downloadenigma2-52492210cfa975235fb07171f0348e9471edd8ef.tar.gz
enigma2-52492210cfa975235fb07171f0348e9471edd8ef.zip
show similar broadcastings deferred in eventview
when similar broascastings are avail now it is possible to open a epglist with all similar broadcastings (via red button)
Diffstat (limited to 'lib/python/Screens/EventView.py')
-rw-r--r--lib/python/Screens/EventView.py64
1 files changed, 42 insertions, 22 deletions
diff --git a/lib/python/Screens/EventView.py b/lib/python/Screens/EventView.py
index 86947461..56a9e02c 100644
--- a/lib/python/Screens/EventView.py
+++ b/lib/python/Screens/EventView.py
@@ -3,14 +3,15 @@ from Components.ActionMap import ActionMap
from Components.Button import Button
from Components.Label import Label
from Components.ScrollLabel import ScrollLabel
-from enigma import eServiceEventPtr, eEPGCachePtr, eEPGCache
+from enigma import eServiceEventPtr, eEPGCachePtr, eEPGCache, eTimer
from ServiceReference import ServiceReference
from RecordTimer import RecordTimerEntry, parseEvent
from TimerEntry import TimerEntry
from time import localtime, asctime
class EventViewBase:
- def __init__(self, Event, Ref, callback=None):
+ def __init__(self, Event, Ref, callback=None, similarEPGCB=None):
+ self.similarEPGCB = similarEPGCB
self.cbFunc = callback
self.currentService=Ref
self.isRecording = len(Ref.ref.getPath())
@@ -20,6 +21,11 @@ class EventViewBase:
self["channel"] = Label()
self["duration"] = Label()
self["key_red"] = Button("")
+ if similarEPGCB is not None:
+ self.SimilarBroadcastTimer = eTimer()
+ self.SimilarBroadcastTimer.timeout.get().append(self.getSimilarEvents)
+ else:
+ self.SimilarBroadcastTimer = None
if self.isRecording:
self["key_green"] = Button("")
else:
@@ -34,7 +40,8 @@ class EventViewBase:
"pageDown": self.pageDown,
"prevEvent": self.prevEvent,
"nextEvent": self.nextEvent,
- "timerAdd": self.timerAdd
+ "timerAdd": self.timerAdd,
+ "openSimilarList": self.openSimilarList
})
self.onShown.append(self.onCreate)
@@ -62,7 +69,6 @@ class EventViewBase:
print "Timeredit aborted"
def setService(self, service):
-
self.currentService=service
if self.isRecording:
self["channel"].setText(_("Recording"))
@@ -83,10 +89,6 @@ class EventViewBase:
def setEvent(self, event):
self.event = event
- id = event.getEventId()
-
- refstr = str(self.currentService)
- epgcache = eEPGCache.getInstance()
text = event.getEventName()
short = event.getShortDescription()
ext = event.getExtendedDescription()
@@ -97,19 +99,13 @@ class EventViewBase:
text = text + '\n\n'
text = text + ext
- # search similar broadcastings
- ret = epgcache.search(('NB', 100, eEPGCache.SIMILAR_BROADCASTINGS_SEARCH, refstr, id))
- if ret is not None:
- text += '\n\n' + _('Similar broadcasts:')
- ret.sort(self.sort_func)
- for x in ret:
- t = localtime(x[1])
- text += '\n%d.%d.%d, %02d:%02d - %s'%(t[2], t[1], t[0], t[3], t[4], x[0])
-
self.setTitle(event.getEventName())
self["epg_description"].setText(text)
self["datetime"].setText(event.getBeginTimeString())
self["duration"].setText(_("%d min")%(event.getDuration()/60))
+ self["key_red"].setText("")
+ if self.SimilarBroadcastTimer is not None:
+ self.SimilarBroadcastTimer.start(400,True)
def pageUp(self):
self["epg_description"].pageUp()
@@ -117,21 +113,45 @@ class EventViewBase:
def pageDown(self):
self["epg_description"].pageDown()
+ def getSimilarEvents(self):
+ # search similar broadcastings
+ refstr = str(self.currentService)
+ id = self.event.getEventId()
+ epgcache = eEPGCache.getInstance()
+ ret = epgcache.search(('NB', 100, eEPGCache.SIMILAR_BROADCASTINGS_SEARCH, refstr, id))
+ if ret is not None:
+ descr = self["epg_description"]
+ text = descr.getText()
+ text += '\n\n' + _('Similar broadcasts:')
+ ret.sort(self.sort_func)
+ for x in ret:
+ t = localtime(x[1])
+ text += '\n%d.%d.%d, %02d:%02d - %s'%(t[2], t[1], t[0], t[3], t[4], x[0])
+ descr.setText(text)
+ self["key_red"].setText(_("Similar"))
+
+ def openSimilarList(self):
+ if self.similarEPGCB is not None:
+ id = self.event and self.event.getEventId()
+ refstr = str(self.currentService)
+ if id is not None:
+ self.similarEPGCB(id, refstr)
+
class EventViewSimple(Screen, EventViewBase):
- def __init__(self, session, Event, Ref, callback=None):
+ def __init__(self, session, Event, Ref, callback=None, similarEPGCB=None):
Screen.__init__(self, session)
self.skinName = "EventView"
- EventViewBase.__init__(self, Event, Ref, callback)
+ EventViewBase.__init__(self, Event, Ref, callback, similarEPGCB)
class EventViewEPGSelect(Screen, EventViewBase):
- def __init__(self, session, Event, Ref, callback=None, singleEPGCB=None, multiEPGCB=None):
+ def __init__(self, session, Event, Ref, callback=None, singleEPGCB=None, multiEPGCB=None, similarEPGCB=None):
Screen.__init__(self, session)
self.skinName = "EventView"
- EventViewBase.__init__(self, Event, Ref, callback)
+ EventViewBase.__init__(self, Event, Ref, callback, similarEPGCB)
self["key_yellow"].setText(_("Single EPG"))
self["key_blue"].setText(_("Multi EPG"))
self["epgactions"] = ActionMap(["EventViewEPGActions"],
{
"openSingleServiceEPG": singleEPGCB,
- "openMultiServiceEPG": multiEPGCB
+ "openMultiServiceEPG": multiEPGCB,
})