Ejemplo n.º 1
0
	def reload(self):
		self._list = []
		db = eMediaDatabase.getInstance()
		res = None
		if self._id < 0: #no @staticmethod get() used, probably....
			self._valid = False
			self.listChanged()
			Log.w("A Playlist with the name/id %s/%s does not exist!" %(self._name, self._id))
			return

		res = db.getPlaylistItemsById(self._id)
		if res and not res.error():
			for data in res.data():
				data = dict(data)
				file_uri = data.get(eMediaDatabase.FIELD_FILE_URI, None)
				if not file_uri:
					Log.w("Playlist entry invalid, %s" % data)
					continue
				if file_uri.endswith('.ts'):
					ref = eServiceReference(eServiceReference.idDVB, 0, file_uri)
				elif file_uri.endswith('.m2ts'):
					ref = eServiceReference(3, 0, file_uri)
				else:
					ref = eServiceReference(eServiceReference.idGST, 0, file_uri)
				self.add(ref, data, True)
			self._valid = True
		else:
			Log.i("Error loading playlist %s:%s\n%s\n%s" % (self._id, self._name, res.errorDatabaseText(), res.errorDriverText()))
			self._valid = False
		self.listChanged()
Ejemplo n.º 2
0
	def save(self):
		#c-ify
		vector = StringMapVector()
		pos = 1
		for item in self._list:
			item = item[2]
			stringMap = StringMap()
			for k, v in item.iteritems():
				stringMap[k] = str(v)
			stringMap[eMediaDatabase.FIELD_POS] = str(pos)
			pos += 1
			vector.append(stringMap)
		db = eMediaDatabase.getInstance()
		res = db.savePlaylist(self._id, self._name, self._type, vector)
		error = res.error()
		if error:
			Log.w("Error saving playlist %s\n%s\n%s" % (self._id, res.errorDatabaseText(), res.errorDriverText()))
			return not error
		#if self._id <= 0:
		data = res.data()
		self._id = -1
		if data and len(data) > 0:
			self._id = int(res.data()[0].get(eMediaDatabase.FIELD_ID, -1))
		if self._id == -1:
			error = True
		self._valid = not error
		if not error:
			Log.i("Playlist '%s (%s)' saved" %(self._name, self._id))
		else:
			Log.w("Error saving playlist!")
		return not error
Ejemplo n.º 3
0
	def reload(self):
		self._list = []
		db = eMediaDatabase.getInstance()
		res = None
		if self._id < 0: #no @staticmethod get() used, probably....
			self._valid = False
			self.listChanged()
			Log.w("A Playlist with the name/id %s/%s does not exist!" %(self._name, self._id))
			return

		res = db.getPlaylistItemsById(self._id)
		if res and not res.error():
			for data in res.data():
				data = dict(data)
				file_uri = data.get(eMediaDatabase.FIELD_FILE_URI, None)
				if not file_uri:
					Log.w("Playlist entry invalid, %s" % data)
					continue
				if file_uri.endswith('.ts'):
					ref = eServiceReference(eServiceReference.idDVB, 0, file_uri)
				elif file_uri.endswith('.m2ts'):
					ref = eServiceReference(3, 0, file_uri)
				else:
					ref = eServiceReference(eServiceReference.idGST, 0, file_uri)
				self.add(ref, data, True)
			self._valid = True
		else:
			Log.i("Error loading playlist %s:%s\n%s\n%s" % (self._id, self._name, res.errorDatabaseText(), res.errorDriverText()))
			self._valid = False
		self.listChanged()
Ejemplo n.º 4
0
	def __init__(self, session):
		Screen.__init__(self, session)
		self["list"] = List([], enableWrapAround=True)
		self["key_red"] = Button(_("Remove"))
		self["key_green"] = Button(_("Add"))
		self["key_yellow"] = Button(_("Reset"))
		self["key_blue"] = Button(_("Rescan"))
		self["status"] = Label(_("waiting for statistics..."))

		# Background for Buttons
		self["red"] = Pixmap()
		self["green"] = Pixmap()
		self["yellow"] = Pixmap()
		self["blue"] = Pixmap()

		self._db = eMediaDatabase.getInstance()
		self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
		{
			"ok" : self._ok,
			"cancel" : self.close,
			"red" : self._red,
			"green" : self._green,
			"yellow" : self._yellow,
			"blue" : self._blue
		}, -2)

		self._db_scanStatistics_conn = self._db.scanStatistics.connect(self._onScanStatistics)
		self._db_scanFinished_conn = self._db.scanFinished.connect(self._onScanFinished)
		self._db_insertFinished_conn = self._db.insertFinished.connect(self._onInsertFinished)
		self.onLayoutFinish.append(self._onLayoutFinish)
		self.onClose.append(self._onClose)
Ejemplo n.º 5
0
	def save(self):
		#c-ify
		vector = StringMapVector()
		pos = 1
		for item in self._list:
			item = item[2]
			stringMap = StringMap()
			for k, v in item.iteritems():
				stringMap[k] = str(v)
			stringMap[eMediaDatabase.FIELD_POS] = str(pos)
			pos += 1
			vector.append(stringMap)
		db = eMediaDatabase.getInstance()
		res = db.savePlaylist(self._id, self._name, self._type, vector)
		error = res.error()
		if error:
			Log.w("Error saving playlist %s\n%s\n%s" % (self._id, res.errorDatabaseText(), res.errorDriverText()))
			return not error
		#if self._id <= 0:
		data = res.data()
		self._id = -1
		if data and len(data) > 0:
			self._id = int(res.data()[0].get(eMediaDatabase.FIELD_ID, -1))
		if self._id == -1:
			error = True
		self._valid = not error
		if not error:
			Log.i("Playlist '%s (%s)' saved" %(self._name, self._id))
		else:
			Log.w("Error saving playlist!")
		return not error
Ejemplo n.º 6
0
    def get(id=-1, name=None, type=MediaCore.TYPE_AUDIO, create=False):
        # If we'er called with only the name given we'll try to get the id.
        # If we cannot find a matching playlist, we return None
        db = eMediaDatabase.getInstance()
        if id < 0:
            res = db.getPlaylistByName(name, type)
        else:
            res = db.getPlaylist(id)
        if res.error(
        ) or not res.data():  #Playlist unkown (not yet saved/created!)
            Log.w("%s / %s" % (res.errorDatabaseText(), res.errorDriverText()))
            if create:
                Log.i("creating new playlist")
                return DatabasePlaylist.create(name, type)
            else:
                Log.w("Unkown Playlist for id=%s, name=%s and type=%s" %
                      (id, name, type))
                return None

        data = res.data()[0]
        id = int(data[eMediaDatabase.FIELD_ID])
        name = data[eMediaDatabase.FIELD_NAME]
        Log.i("Playlist %s found. Id is %s" % (name, id))
        playlist = DatabasePlaylist(id, name=name, type=type)
        playlist.reload()
        return playlist
Ejemplo n.º 7
0
    def __init__(self, session):
        Screen.__init__(self, session)
        self["list"] = List([], enableWrapAround=True)
        self["key_red"] = Button(_("Remove"))
        self["key_green"] = Button(_("Add"))
        self["key_yellow"] = Button("")
        self["key_blue"] = Button(_("Rescan"))
        self["status"] = Label(_("waiting for statistics..."))

        # Background for Buttons
        self["red"] = Pixmap()
        self["green"] = Pixmap()
        self["yellow"] = Pixmap()
        self["blue"] = Pixmap()

        self._db = eMediaDatabase.getInstance()
        self["actions"] = ActionMap(
            ["OkCancelActions", "ColorActions"], {
                "ok": self._ok,
                "cancel": self.close,
                "red": self._red,
                "green": self._green,
                "yellow": self._yellow,
                "blue": self._blue
            }, -2)

        self._db_scanStatistics_conn = self._db.scanStatistics.connect(
            self._onScanStatistics)
        self._db_scanFinished_conn = self._db.scanFinished.connect(
            self._onScanFinished)
        self._db_insertFinished_conn = self._db.insertFinished.connect(
            self._onInsertFinished)
        self.onLayoutFinish.append(self._onLayoutFinish)
        self.onClose.append(self._onClose)
Ejemplo n.º 8
0
	def getPlaylists(type=MediaCore.TYPE_AUDIO):
		Log.i("")
		res = eMediaDatabase.getInstance().getPlaylists(type)
		playlists = []
		if res:
			for item in res.data():
				playlists.append((
					DatabasePlaylist( int(item[eMediaDatabase.FIELD_ID]), name=item[eMediaDatabase.FIELD_PLAYLIST_NAME], type=int(item[eMediaDatabase.FIELD_TYPE]) )
				))
		return playlists
Ejemplo n.º 9
0
	def getPlaylists(type=MediaCore.TYPE_AUDIO):
		Log.i("")
		res = eMediaDatabase.getInstance().getPlaylists(type)
		playlists = []
		if res:
			for item in res.data():
				playlists.append((
					DatabasePlaylist( int(item[eMediaDatabase.FIELD_ID]), name=item[eMediaDatabase.FIELD_PLAYLIST_NAME], type=int(item[eMediaDatabase.FIELD_TYPE]) )
				))
		return playlists
Ejemplo n.º 10
0
	def create(name, type=MediaCore.TYPE_AUDIO):
		Log.i("name=%s, type=%s" %(name, type))
		db = eMediaDatabase.getInstance()
		res = db.getPlaylistByName(name, type)
		if not res or res.error() or res.data():
			Log.w("%s / %s / %s" %(res.data(), res.errorDatabaseText(), res.errorDriverText()))
			return None

		playlist = DatabasePlaylist(-1, name=name, type=type)
		playlist.save()
		return playlist
Ejemplo n.º 11
0
	def create(name, type=MediaCore.TYPE_AUDIO):
		Log.i("name=%s, type=%s" %(name, type))
		db = eMediaDatabase.getInstance()
		res = db.getPlaylistByName(name, type)
		if not res or res.error() or res.data():
			Log.w("%s / %s / %s" %(res.data(), res.errorDatabaseText(), res.errorDriverText()))
			return None

		playlist = DatabasePlaylist(-1, name=name, type=type)
		playlist.save()
		return playlist
Ejemplo n.º 12
0
	def search(needle):
		db = eMediaDatabase.getInstance()
		res = db.filterAudio(needle, 0, 250)
		if res.error():
			return []
		items = []
		for item in res.data():
			filename = "%s/%s" %(item[eMediaDatabase.FIELD_PATH], item[eMediaDatabase.FIELD_FILENAME])
			ref = eServiceReference(4097, 0, filename)
			ref.setName("%s - %s" %(item[eMediaDatabase.FIELD_ARTIST], item[eMediaDatabase.FIELD_TITLE]))
			items.append( (ref.getName(), (ref, dict(item))) )
		return items
Ejemplo n.º 13
0
	def __init__(self, server, *args, **kwargs):
		AbstractBackendStore.__init__(self, server, **kwargs)
		self._db = eMediaDatabase.getInstance()

		self.next_id = 1000
		self.name = kwargs.get('name', 'Dreambox Mediaserver')
		# streaminghost is the ip address of the dreambox machine, defaults to localhost
		self.streaminghost = kwargs.get('streaminghost', self.server.coherence.hostname)

		self.refresh = float(kwargs.get('refresh', 1)) * 60
		self.init_root()
		self.init_completed()
Ejemplo n.º 14
0
	def getDetailsByRef(self, ref):
		path = ref.getPath()
		#if we get only a reference or an entry with "extra data" but no file id yet we ask the database to enrich the data
		if path.startswith("/"):
			Log.i("Asking database for details!")
			db = eMediaDatabase.getInstance()
			res = db.getFileByPath(path)
			if res and res.data() and not res.error() :
				return dict(res.data()[0])
			else:
				Log.i("ERROR: %s :: %s" %(res.errorDatabaseText(), res.errorDriverText()))
		else:
			Log.i("%s is not an absolute local path, skip querying the database" % path)

		return None
Ejemplo n.º 15
0
    def __init__(self, server, *args, **kwargs):
        AbstractBackendStore.__init__(self, server, **kwargs)
        self._db = eMediaDatabase.getInstance()

        self.next_id = 1000
        self.name = kwargs.get('name', 'Dreambox Mediaserver')
        # streaminghost is the ip address of the dreambox machine, defaults to localhost
        self.streaminghost = kwargs.get('streaminghost',
                                        self.server.coherence.hostname)

        self.refresh = float(kwargs.get('refresh', 1)) * 60
        self.init_root()
        self.init_completed()

        self._cover_root = None
Ejemplo n.º 16
0
	def getDetailsByRef(self, ref):
		path = ref.getPath()
		#if we get only a reference or an entry with "extra data" but no file id yet we ask the database to enrich the data
		if path.startswith("/"):
			Log.i("Asking database for details!")
			db = eMediaDatabase.getInstance()
			res = db.getFileByPath(path)
			if res and res.data() and not res.error() :
				return dict(res.data()[0])
			else:
				Log.i("ERROR: %s :: %s" %(res.errorDatabaseText(), res.errorDriverText()))
		else:
			Log.i("%s is not an absolute local path, skip querying the database" % path)

		return None
Ejemplo n.º 17
0
	def __init__(self, root, list_type=None, sort_type=None, descr_state=None):
		TemplatedMultiContentComponent.__init__(self)
		self.virtualList = []
		self.list = []
		self._vlist = []

		self.descr_state = descr_state or self.HIDE_DESCRIPTION
		self.sort_type = sort_type or self.SORT_RECORDED
		self.setListType(list_type or self.LISTTYPE_ORIGINAL)
		self.tags = set()
		self.root = root
		self.filter_tags = []

		self.l.setBuildFunc(self.buildMovieListEntry)
		self.onSelectionChanged = [ ]
		self.__mediaDbScanFinished_conn = eMediaDatabase.getInstance().scanFinished.connect(self._onMediaDbScanFinished)
Ejemplo n.º 18
0
	def search(needle):
		db = eMediaDatabase.getInstance()
		res = db.filterAudio(needle, 0, 250)
		if res.error():
			return []
		items = []
		for item in res.data():
			filename = "%s/%s" %(item[eMediaDatabase.FIELD_PATH], item[eMediaDatabase.FIELD_FILENAME])
			if filename.endswith('.ts'):
				ref = eServiceReference(eServiceReference.idDVB, 0, filename)
			elif filename.endswith('.m2ts'):
				ref = eServiceReference(3, 0, filename)
			else:
				ref = eServiceReference(eServiceReference.idGST, 0, filename)
			ref.setName("%s - %s" %(item[eMediaDatabase.FIELD_ARTIST], item[eMediaDatabase.FIELD_TITLE]))
			items.append( (ref.getName(), (ref, dict(item))) )
		return items
Ejemplo n.º 19
0
	def get(ref, state, data, coverSize=eSize(300,300)):
		artist = data.get(eMediaDatabase.FIELD_ARTIST, "")
		title = data.get(eMediaDatabase.FIELD_TITLE, "")
		album = data.get(eMediaDatabase.FIELD_ALBUM, "")
		seconds = int(data.get(eMediaDatabase.FIELD_DURATION, 0))
		cover_art_id = int(data.get(eMediaDatabase.FIELD_COVER_ART_ID, 0))
		cover_art = DefaultCoverArt
		cover = None
		if cover_art_id:
			cover = eMediaDatabase.getInstance().getCoverArt(cover_art_id, coverSize)
		if cover:
			cover_art = cover

		if seconds > 0:
			minutes, seconds = divmod(seconds, 60)
			duration = "%02d:%02d" % (minutes, seconds)
		else:
			duration = "--:--"

		entry = (data, "", title, artist, album, duration, cover_art)
		entry = AudioPlaylistEntry.updateState(entry, state)

		return entry
Ejemplo n.º 20
0
	def get(ref, state, data):
		artist = data.get(eMediaDatabase.FIELD_ARTIST, "")
		title = data.get(eMediaDatabase.FIELD_TITLE, "")
		album = data.get(eMediaDatabase.FIELD_ALBUM, "")
		seconds = int(data.get(eMediaDatabase.FIELD_DURATION, 0))
		cover_art_id = int(data.get(eMediaDatabase.FIELD_COVER_ART_ID, 0))
		cover_art = DefaultCoverArt
		cover = None
		if cover_art_id:
			cover = eMediaDatabase.getInstance().getCoverArt(cover_art_id)
		if cover:
			cover_art = cover

		if seconds > 0:
			minutes, seconds = divmod(seconds, 60)
			duration = "%02d:%02d" % (minutes, seconds)
		else:
			duration = "--:--"

		entry = (data, "", title, artist, album, duration, cover_art)
		entry = AudioPlaylistEntry.updateState(entry, state)

		return entry
Ejemplo n.º 21
0
	def get(id=-1, name=None, type=MediaCore.TYPE_AUDIO, create=False):
		# If we'er called with only the name given we'll try to get the id.
		# If we cannot find a matching playlist, we return None
		db = eMediaDatabase.getInstance()
		if id < 0:
			res = db.getPlaylistByName(name, type)
		else:
			res = db.getPlaylist(id)
		if res.error() or not res.data(): #Playlist unkown (not yet saved/created!)
			Log.w("%s / %s" %(res.errorDatabaseText(), res.errorDriverText()))
			if create:
				Log.i("creating new playlist")
				return DatabasePlaylist.create(name, type)
			else:
				Log.w("Unkown Playlist for id=%s, name=%s and type=%s" %(id, name, type))
				return None

		data = res.data()[0]
		id = int(data[eMediaDatabase.FIELD_ID])
		name = data[eMediaDatabase.FIELD_NAME]
		Log.i("Playlist %s found. Id is %s" %(name, id))
		playlist = DatabasePlaylist(id, name=name, type=type)
		playlist.reload()
		return playlist
Ejemplo n.º 22
0
	def __init__(self, type):
		MenuList.__init__(self, [], True, eListboxPythonMultiContent)
		MediaBrowserList.__init__(self, type)

		tlf = TemplatedListFonts()
		self.l.setFont(0, gFont(tlf.face(tlf.MEDIUM), tlf.size(tlf.MEDIUM)))
		itemHeight = componentSizes.itemHeight(componentSizes.FILE_LIST, 30)
		self.l.setItemHeight(itemHeight)
		self.l.setBuildFunc(self._buildListEntry)

		self._db = eMediaDatabase.getInstance()
		self._rootHandle = RootNavigationHandle(self._navRoot)

		if type == MediaCore.TYPE_AUDIO:
			#Artist -> Album -> Titles
			self._artistHandle = NavigationHandle(self.__getArtists, [eMediaDatabase.FIELD_ARTIST])
			self._artistAlbumHandle = NavigationHandle(self.__getAlbumsByArtist, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM])
			self._artistAllHandle = NavigationHandle(self.__filterByArtist, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM, eMediaDatabase.FIELD_TITLE])
			self._artistAlbumTitleHandle = NavigationHandle(self.__filterByArtistAlbum, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_TITLE])

			self._artistHandle.link(desc=self._artistAlbumHandle, asc=self._rootHandle)
			self._artistAlbumHandle.link(desc=self._artistAlbumTitleHandle, asc=self._artistHandle, all=self._artistAllHandle)
			self._artistAllHandle.link(asc=self._artistAlbumHandle)
			self._artistAlbumTitleHandle.link(asc=self._artistAlbumHandle)

			#Album -> Titles
			self._albumHandle = NavigationHandle(self.__getAllAlbums, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM])
			self._albumTitleHandle = NavigationHandle(self.__filterByArtistAlbum, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_TITLE])
			self._albumHandle.link(desc=self._albumTitleHandle, asc=self._rootHandle)
			self._albumTitleHandle.link(asc=self._albumHandle)

			#AlbumArtist -> Album -> Titles
			self._albumArtistHandle = NavigationHandle(self.__getAlbumArtists, [eMediaDatabase.FIELD_ARTIST])
			self._albumArtistAlbumHandle = NavigationHandle(self.__getAlbumsByAlbumArtist, [eMediaDatabase.FIELD_ALBUM_ARTIST, eMediaDatabase.FIELD_ALBUM])
			self._albumArtistAllHandle = NavigationHandle(self.__filterByAlbumArtist, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM, eMediaDatabase.FIELD_TITLE])
			self._albumArtistAlbumTitleHandle = NavigationHandle(self.__filterByAlbumArtistAlbum, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_TITLE])

			self._albumArtistHandle.link(desc=self._albumArtistAlbumHandle, asc=self._rootHandle)
			self._albumArtistAlbumHandle.link(desc=self._albumArtistAlbumTitleHandle, asc=self._albumArtistHandle, all=self._albumArtistAllHandle)
			self._albumArtistAllHandle.link(asc=self._albumArtistAlbumHandle)
			self._albumArtistAlbumTitleHandle.link(asc=self._albumArtistAlbumHandle)

			#All
			self._allHandle = NavigationHandle(self.__getAll, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM, eMediaDatabase.FIELD_TITLE])
			self._allHandle.link(asc=self._rootHandle)

			#set navigation handle items
			self._navitems = [{
					ITEM_KEY_TITLE : _("Artists"),
					ITEM_KEY_HANDLE: self._artistHandle,
				},
				{
					ITEM_KEY_TITLE : _("Albums"),
					ITEM_KEY_HANDLE: self._albumHandle,
				},
				{
					ITEM_KEY_TITLE : _("Album Artists"),
					ITEM_KEY_HANDLE: self._albumArtistHandle,
				},
				{
					ITEM_KEY_TITLE : _("All"),
					ITEM_KEY_HANDLE: self._allHandle,
				}]
		elif type == MediaCore.TYPE_VIDEO:
			self._recordingHandle = NavigationHandle(self.__getAllRecordings, [eMediaDatabase.FIELD_TITLE])
			self._allVideoHandle = NavigationHandle(self.__getAllVideos, [eMediaDatabase.FIELD_TITLE])
			self._unseenVideoHandle = NavigationHandle(self.__getUnseenVideos, [eMediaDatabase.FIELD_TITLE])
			self._hdVideoHandle = NavigationHandle(self.__getHDVideos, [eMediaDatabase.FIELD_TITLE])
			self._sdVideoHandle = NavigationHandle(self.__getSDVideos, [eMediaDatabase.FIELD_TITLE])

			self._recordingHandle.link(asc=self._rootHandle)
			self._allVideoHandle.link(asc=self._rootHandle)
			self._unseenVideoHandle.link(asc=self._rootHandle)
			self._hdVideoHandle.link(asc=self._rootHandle)
			self._sdVideoHandle.link(asc=self._rootHandle)

			self._navitems = [{
					ITEM_KEY_TITLE : _("Unseen"),
					ITEM_KEY_HANDLE: self._unseenVideoHandle,
				},
				{
					ITEM_KEY_TITLE : _("Recordings"),
					ITEM_KEY_HANDLE: self._recordingHandle,
				},
				{
					ITEM_KEY_TITLE : _("All Videos"),
					ITEM_KEY_HANDLE: self._allVideoHandle,
				},
				{
					ITEM_KEY_TITLE : _("Only HD"),
					ITEM_KEY_HANDLE: self._hdVideoHandle,
				},
				{
					ITEM_KEY_TITLE : _("Only SD"),
					ITEM_KEY_HANDLE: self._sdVideoHandle,
				},]

		self.__currentNavHandle = self._rootHandle
		self.__prevNavHandle = None
		self._currentHandleItem = None
		self.__getFolderContent = None
Ejemplo n.º 23
0
	def __init__(self, type):
		MenuList.__init__(self, [], True, eListboxPythonMultiContent)
		MediaBrowserList.__init__(self, type)

		self.l.setFont(0, gFont("Regular", 18))
		self.l.setItemHeight(30)
		self.l.setBuildFunc(self._buildListEntry)

		self._db = eMediaDatabase.getInstance()
		self._rootHandle = RootNavigationHandle(self._navRoot)

		if type == MediaCore.TYPE_AUDIO:
			#Artist -> Album -> Titles
			self._artistHandle = NavigationHandle(self.__getArtists, [eMediaDatabase.FIELD_ARTIST])
			self._artistAlbumHandle = NavigationHandle(self.__getAlbumsByArtist, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM])
			self._artistAllHandle = NavigationHandle(self.__filterByArtist, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM, eMediaDatabase.FIELD_TITLE])
			self._artistAlbumTitleHandle = NavigationHandle(self.__filterByArtistAlbum, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_TITLE])

			self._artistHandle.link(desc=self._artistAlbumHandle, asc=self._rootHandle)
			self._artistAlbumHandle.link(desc=self._artistAlbumTitleHandle, asc=self._artistHandle, all=self._artistAllHandle)
			self._artistAllHandle.link(asc=self._artistAlbumHandle)
			self._artistAlbumTitleHandle.link(asc=self._artistAlbumHandle)

			#Album -> Titles
			self._albumHandle = NavigationHandle(self.__getAllAlbums, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM])
			self._albumTitleHandle = NavigationHandle(self.__filterByArtistAlbum, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_TITLE])
			self._albumHandle.link(desc=self._albumTitleHandle, asc=self._rootHandle)
			self._albumTitleHandle.link(asc=self._albumHandle)

			#All
			self._allHandle = NavigationHandle(self.__getAll, [eMediaDatabase.FIELD_ARTIST, eMediaDatabase.FIELD_ALBUM, eMediaDatabase.FIELD_TITLE])
			self._allHandle.link(asc=self._rootHandle)

			#set navigation handle items
			self._navitems = [{
					ITEM_KEY_TITLE : _("Artists"),
					ITEM_KEY_HANDLE: self._artistHandle,
				},
				{
					ITEM_KEY_TITLE : _("Albums"),
					ITEM_KEY_HANDLE: self._albumHandle,
				},
				{
					ITEM_KEY_TITLE : _("All"),
					ITEM_KEY_HANDLE: self._allHandle,
				}]
		elif type == MediaCore.TYPE_VIDEO:
			self._recordingHandle = NavigationHandle(self.__getAllRecordings, [eMediaDatabase.FIELD_TITLE])
			self._allVideoHandle = NavigationHandle(self.__getAllVideos, [eMediaDatabase.FIELD_TITLE])
			self._unseenVideoHandle = NavigationHandle(self.__getUnseenVideos, [eMediaDatabase.FIELD_TITLE])
			self._hdVideoHandle = NavigationHandle(self.__getHDVideos, [eMediaDatabase.FIELD_TITLE])
			self._sdVideoHandle = NavigationHandle(self.__getSDVideos, [eMediaDatabase.FIELD_TITLE])

			self._recordingHandle.link(asc=self._rootHandle)
			self._allVideoHandle.link(asc=self._rootHandle)
			self._unseenVideoHandle.link(asc=self._rootHandle)
			self._hdVideoHandle.link(asc=self._rootHandle)
			self._sdVideoHandle.link(asc=self._rootHandle)

			self._navitems = [{
					ITEM_KEY_TITLE : _("Unseen"),
					ITEM_KEY_HANDLE: self._unseenVideoHandle,
				},
				{
					ITEM_KEY_TITLE : _("Recordings"),
					ITEM_KEY_HANDLE: self._recordingHandle,
				},
				{
					ITEM_KEY_TITLE : _("All Videos"),
					ITEM_KEY_HANDLE: self._allVideoHandle,
				},
				{
					ITEM_KEY_TITLE : _("Only HD"),
					ITEM_KEY_HANDLE: self._hdVideoHandle,
				},
				{
					ITEM_KEY_TITLE : _("Only SD"),
					ITEM_KEY_HANDLE: self._sdVideoHandle,
				},]

		self.__currentNavHandle = self._rootHandle
		self.__prevNavHandle = None
		self._currentHandleItem = None
		self.__getFolderContent = None
Ejemplo n.º 24
0
	def __init__(self, path):
		resource.Resource.__init__(self)
		self.noResource = resource.NoResource(message=_("Nothing there!"))
		self._path = path
		self._db = eMediaDatabase.getInstance()
Ejemplo n.º 25
0
	def reload(self, root = None, filter_tags = None):
		root = root or self.root
		if root and config.media_database.readmeta.value:
			eMediaDatabase.getInstance().rescanPath(root.getPath(), True)
		self.load(root, filter_tags)
		self.l.setList(self.list)
Ejemplo n.º 26
0
 def __init__(self, path):
     resource.Resource.__init__(self)
     self.noResource = resource.NoResource(message=_("Nothing there!"))
     self._path = path
     self._db = eMediaDatabase.getInstance()