aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens/EpgSelection.py
blob: 4d288b0047ec8a6fb0aab1b5cb86aa20fe520723 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from Screen import Screen
from Components.Button import Button
from Components.EpgList import EPGList
from Components.ActionMap import ActionMap
from Screens.EventView import EventView
from enigma import eServiceReference, eServiceEventPtr
from Screens.FixedMenu import FixedMenu
from RecordTimer import RecordTimerEntry, parseEvent
from TimerEdit import TimerEditList
from TimerEntry import TimerEntry
from ServiceReference import ServiceReference

import xml.dom.minidom

class EPGSelection(Screen):
	def __init__(self, session, root):
		Screen.__init__(self, session)

		self["list"] = EPGList()

		class ChannelActionMap(ActionMap):
			def action(self, contexts, action):
					ActionMap.action(self, contexts, action)
					
		self["key_red"] = Button("")
		self["key_green"] = Button(_("Add timer"))
		self["key_yellow"] = Button("")
		self["key_blue"] = Button("")

		self["actions"] = ChannelActionMap(["EPGSelectActions", "OkCancelActions"], 
			{
				"cancel": self.close,
				"ok": self.eventSelected,
				"timerAdd": self.timerAdd
			})
		self["actions"].csel = self
		self.setRoot(root)

	def eventViewCallback(self, setEvent, val):
		if val == -1:
			self.moveUp()
			setEvent(self["list"].getCurrent())
		elif val == +1:
			self.moveDown()
			setEvent(self["list"].getCurrent())

	def eventSelected(self):
		event = self["list"].getCurrent()
		self.session.open(EventView, event, self.currentService, self.eventViewCallback)
	
	def timerAdd(self):
		event = self["list"].getCurrent()
		
		if event is None:
			return
		
		# FIXME only works if already playing a service
		serviceref = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference())
		
		newEntry = RecordTimerEntry(serviceref, *parseEvent(event))
		self.session.openWithCallback(self.timerEditFinished, TimerEntry, newEntry)
	
	def timerEditFinished(self, answer):
		if (answer[0]):
			self.session.nav.RecordTimer.record(answer[1])
		else:
			print "Timeredit aborted"	

	def setRoot(self, root):
		self.currentService=ServiceReference(root)
		self["list"].setRoot(root)

	def moveUp(self):
		self["list"].moveUp()

	def moveDown(self):
		self["list"].moveDown()