+
+ def saveconfig(self):
+ config.movielist.last_selected_tags.value = self.selected_tags
+ config.movielist.moviesort.save()
+ config.movielist.listtype.save()
+ config.movielist.description.save()
+
+ def getTagDescription(self, tag):
+ # TODO: access the tag database
+ return tag
+
+ def updateTags(self):
+ # get a list of tags available in this list
+ self.tags = list(self["list"].tags)
+
+ if not self.tags:
+ # by default, we do not display any filtering options
+ self.tag_first = ""
+ self.tag_second = ""
+ else:
+ tmp = config.movielist.first_tags.value
+ if tmp in self.tags:
+ self.tag_first = tmp
+ else:
+ self.tag_first = "<"+_("Tag 1")+">"
+ tmp = config.movielist.second_tags.value
+ if tmp in self.tags:
+ self.tag_second = tmp
+ else:
+ self.tag_second = "<"+_("Tag 2")+">"
+ self["key_green"].text = self.tag_first
+ self["key_yellow"].text = self.tag_second
+
+ # the rest is presented in a list, available on the
+ # fourth ("blue") button
+ if self.tags:
+ self["key_blue"].text = _("Tags")+"..."
+ else:
+ self["key_blue"].text = ""
+
+ def setListType(self, type):
+ self["list"].setListType(type)
+
+ def setDescriptionState(self, val):
+ self["list"].setDescriptionState(val)
+
+ def setSortType(self, type):
+ self["list"].setSortType(type)
+
+ def reloadList(self, sel = None, home = False):
+ if not fileExists(config.movielist.last_videodir.value):
+ path = defaultMoviePath()
+ config.movielist.last_videodir.value = path
+ config.movielist.last_videodir.save()
+ self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + path)
+ self["freeDiskSpace"].path = path
+ if sel is None:
+ sel = self.getCurrent()
+ self["list"].reload(self.current_ref, self.selected_tags)
+ title = _("Recorded files...")
+ if config.usage.setup_level.index >= 2: # expert+
+ title += " " + config.movielist.last_videodir.value
+ if self.selected_tags is not None:
+ title += " - " + ','.join(self.selected_tags)
+ self.setTitle(title)
+ if not (sel and self["list"].moveTo(sel)):
+ if home:
+ self["list"].moveToIndex(0)
+ self.updateTags()
+ self["freeDiskSpace"].update()
+
+ def doPathSelect(self):
+ self.session.openWithCallback(
+ self.gotFilename,
+ MovieLocationBox,
+ _("Please select the movie path..."),
+ config.movielist.last_videodir.value
+ )
+
+ def gotFilename(self, res):
+ if res is not None and res is not config.movielist.last_videodir.value:
+ if fileExists(res):
+ config.movielist.last_videodir.value = res
+ config.movielist.last_videodir.save()
+ self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + res)
+ self["freeDiskSpace"].path = res
+ self.reloadList(home = True)
+ else:
+ self.session.open(
+ MessageBox,
+ _("Directory %s nonexistent.") % (res),
+ type = MessageBox.TYPE_ERROR,
+ timeout = 5
+ )
+
+ def showAll(self):
+ self.selected_tags_ele = None
+ self.selected_tags = None
+ self.reloadList(home = True)
+
+ def showTagsN(self, tagele):
+ if not self.tags:
+ self.showTagWarning()
+ elif not tagele or (self.selected_tags and tagele.value in self.selected_tags) or not tagele.value in self.tags:
+ self.showTagsMenu(tagele)
+ else:
+ self.selected_tags_ele = tagele
+ self.selected_tags = set([tagele.value])
+ self.reloadList(home = True)
+
+ def showTagsFirst(self):
+ self.showTagsN(config.movielist.first_tags)
+
+ def showTagsSecond(self):
+ self.showTagsN(config.movielist.second_tags)
+
+ def showTagsSelect(self):
+ self.showTagsN(None)
+
+ def tagChosen(self, tag):
+ if tag is not None:
+ self.selected_tags = set([tag[0]])
+ if self.selected_tags_ele:
+ self.selected_tags_ele.value = tag[0]
+ self.selected_tags_ele.save()
+ self.reloadList(home = True)
+
+ def showTagsMenu(self, tagele):
+ self.selected_tags_ele = tagele
+ list = [(tag, self.getTagDescription(tag)) for tag in self.tags ]
+ self.session.openWithCallback(self.tagChosen, ChoiceBox, title=_("Please select tag to filter..."), list = list)
+
+ def showTagWarning(self):
+ self.session.open(MessageBox, _("No tags are set on these movies."), MessageBox.TYPE_ERROR)