ce3a9732b2a51d9b409faa38ab04a10592b282f5
[enigma2.git] / lib / python / Screens / MovieSelection.py
1 from Screen import Screen
2 from Components.Button import Button
3 from Components.ServiceList import ServiceList
4 from Components.ActionMap import ActionMap
5 from Components.MovieList import MovieList
6 from Components.DiskInfo import DiskInfo
7
8 from Screens.MessageBox import MessageBox
9 from Screens.FixedMenu import FixedMenu
10
11 from enigma import eServiceReference, eServiceCenter
12
13 class ChannelContextMenu(FixedMenu):
14         def __init__(self, session, csel, service):
15                 self.csel = csel
16                 self.service = service
17                 
18                 menu = [("back", self.close), ("delete...", self.delete)]
19                 
20                 FixedMenu.__init__(self, session, "Movie Menu", menu)
21                 self.skinName = "Menu"
22
23         def delete(self):
24                 serviceHandler = eServiceCenter.getInstance()
25                 offline = serviceHandler.offlineOperations(self.service)
26                 result = False
27                 if offline is not None:
28                         # simulate first
29                         if not offline.deleteFromDisk(1):
30                                 result = True
31                 
32                 if result == True:
33                         self.session.openWithCallback(self.deleteConfirmed, MessageBox, "Do you really want to delete this recording?")
34                 else:
35                         self.session.openWithCallback(self.close, MessageBox, "You cannot delete this!")
36
37         def deleteConfirmed(self, confirmed):
38                 if not confirmed:
39                         return self.close()
40                         
41                 serviceHandler = eServiceCenter.getInstance()
42                 offline = serviceHandler.offlineOperations(self.service)
43                 result = False
44                 if offline is not None:
45                         # really delete!
46                         if not offline.deleteFromDisk(0):
47                                 result = True
48                 
49                 if result == False:
50                         self.session.openWithCallback(self.close, MessageBox, "Delete failed!")
51                 else:
52                         self.csel["list"].reload()
53                         self.close()
54                 
55  
56 class MovieSelection(Screen):
57         def __init__(self, session):
58                 Screen.__init__(self, session)
59                 
60                 self.movemode = False
61                 self.bouquet_mark_edit = False
62                 
63                 self["list"] = MovieList(eServiceReference("2:0:1:0:0:0:0:0:0:0:/hdd/movies/"))
64                 
65                 #self["okbutton"] = Button("ok", [self.channelSelected])
66                 self["freeDiskSpace"] = DiskInfo("/hdd/movies", DiskInfo.FREE)
67                 
68                 self["actions"] = ActionMap(["OkCancelActions", "ContextMenuActions"],
69                         {
70                                 "cancel": self.abort,
71                                 "ok": self.movieSelected,
72                                 "contextMenu": self.doContext,
73                         })
74                 self["actions"].csel = self
75
76         def getCurrent(self):
77                 return self["list"].getCurrent()[0]
78
79         def movieSelected(self):
80                 self.close(self.getCurrent())
81
82         def doContext(self):
83                 self.session.open(ChannelContextMenu, self, self.getCurrent())
84
85         def abort(self):
86                 self.close(None)