+ if config.movielist.description.value == MovieList.SHOW_DESCRIPTION:
+ menu.append((_("hide extended description"), boundFunction(self.showDescription, MovieList.HIDE_DESCRIPTION)))
+ else:
+ menu.append((_("show extended description"), boundFunction(self.showDescription, MovieList.SHOW_DESCRIPTION)))
+ self["menu"] = MenuList(menu)
+
+ def okbuttonClick(self):
+ self["menu"].getCurrent()[1]()
+
+ def cancelClick(self):
+ self.close(False)
+
+ def sortBy(self, newType):
+ config.movielist.moviesort.value = newType
+ self.csel.selectedmovie = self.csel.getCurrent()
+ self.csel.setSortType(newType)
+ self.csel.reloadList()
+ self.csel.moveTo()
+ self.close()
+
+ def listType(self, newType):
+ config.movielist.listtype.value = newType
+ self.csel.setListType(newType)
+ self.csel.list.redrawList()
+ self.close()
+
+ def showDescription(self, newType):
+ config.movielist.description.value = newType
+ self.csel.setDescriptionState(newType)
+ self.csel.updateDescription()
+ self.close()
+
+ def execPlugin(self, plugin):
+ plugin(session=self.session, service=self.service)
+
+ def delete(self):
+ serviceHandler = eServiceCenter.getInstance()
+ offline = serviceHandler.offlineOperations(self.service)
+ info = serviceHandler.info(self.service)
+ name = info and info.getName(self.service) or _("this recording")
+ result = False
+ if offline is not None:
+ # simulate first
+ if not offline.deleteFromDisk(1):
+ result = True
+ if result == True:
+ self.session.openWithCallback(self.deleteConfirmed, MessageBox, _("Do you really want to delete %s?") % (name))
+ else:
+ self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR)
+
+ def deleteConfirmed(self, confirmed):
+ if not confirmed:
+ return self.close()
+
+ serviceHandler = eServiceCenter.getInstance()
+ offline = serviceHandler.offlineOperations(self.service)
+ result = False
+ if offline is not None:
+ # really delete!
+ if not offline.deleteFromDisk(0):
+ result = True
+
+ if result == False:
+ self.session.openWithCallback(self.close, MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR)
+ else:
+ self.csel["list"].removeService(self.service)
+ self.csel["freeDiskSpace"].update()
+ self.close()
+
+class SelectionEventInfo:
+ def __init__(self):
+ self["Service"] = ServiceEvent()
+ self.list.connectSelChanged(self.__selectionChanged)
+ self.timer = eTimer()
+ self.timer.callback.append(self.updateEventInfo)
+ self.onShown.append(self.__selectionChanged)
+
+ def __selectionChanged(self):
+ if self.execing and config.movielist.description.value == MovieList.SHOW_DESCRIPTION:
+ self.timer.start(100, True)
+
+ def updateEventInfo(self):
+ serviceref = self.getCurrent()
+ self["Service"].newService(serviceref)
+
+class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
+ def __init__(self, session, selectedmovie = None):
+ Screen.__init__(self, session)
+ HelpableScreen.__init__(self)
+
+ self.tags = [ ]
+ self.selected_tags = None
+
+ self.movemode = False
+ self.bouquet_mark_edit = False
+
+ self.delayTimer = eTimer()
+ self.delayTimer.callback.append(self.updateHDDData)
+
+ self["waitingtext"] = Label(_("Please wait... Loading list..."))
+
+ # create optional description border and hide immediately
+ self["DescriptionBorder"] = Pixmap()
+ self["DescriptionBorder"].hide()
+
+ if not pathExists(config.movielist.last_videodir.value):
+ config.movielist.last_videodir.value = resolveFilename(SCOPE_HDD)
+ config.movielist.last_videodir.save()
+ self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + config.movielist.last_videodir.value)
+
+ self["list"] = MovieList(None,
+ config.movielist.listtype.value,
+ config.movielist.moviesort.value,
+ config.movielist.description.value)
+
+ self.list = self["list"]
+ self.selectedmovie = selectedmovie
+
+ # Need list for init
+ SelectionEventInfo.__init__(self)
+
+ self["key_red"] = Button(_("All..."))
+ self["key_green"] = Button("")
+ self["key_yellow"] = Button("")
+ self["key_blue"] = Button("")
+
+ self["freeDiskSpace"] = self.diskinfo = DiskInfo(config.movielist.last_videodir.value, DiskInfo.FREE, update=False)
+
+ if config.usage.setup_level.index >= 2: # expert+
+ self["InfobarActions"] = HelpableActionMap(self, "InfobarActions",
+ {
+ "showMovies": (self.doPathSelect, _("select the movie path")),
+ })
+
+
+ self["MovieSelectionActions"] = HelpableActionMap(self, "MovieSelectionActions",
+ {
+ "contextMenu": (self.doContext, _("menu")),
+ "showEventInfo": (self.showEventInformation, _("show event details")),
+ })
+
+ self["ColorActions"] = HelpableActionMap(self, "ColorActions",