Ich experimentiere gerade mit der Möglichkeit, Listen um Einträge zu erweitern. Dadurch sinkt die Notwendigkeit, sich manuell zurück ins Hauptmenü zu hangeln (5x "Nächste Seite" -> 5x "Zurück"). Bilder erklären bekanntlich mehr als 1000 Worte:
In einer Videoliste wird die "Nächste Seite" gewählt:
Ein Klick auf Backspace/Zurück:
Hier der Code:
def addEntries(l,page=-1):
if page == 1:
_saveJson(listCacheFile,l)
elif page > 1:
j = _retrieveJson(listCacheFile)[:-1]
l = j + l
_saveJson(listCacheFile,l)
for dict in l:
addEntry(dict)
cacheInfo = {}
cacheInfo['path'] = sys.argv[2]
cacheInfo['page'] = page
_saveJson(cacheInfosFile,cacheInfo)
if page == 1:
xbmcplugin.endOfDirectory(int(sys.argv[1]))
wnd = xbmcgui.Window(xbmcgui.getCurrentWindowId())
#xbmc.sleep(2000)
wnd.getControl(wnd.getFocusId()).selectItem(0)
if page > 1:
xbmcplugin.endOfDirectory(int(sys.argv[1]), updateListing = True, cacheToDisc = False)
wnd = xbmcgui.Window(xbmcgui.getCurrentWindowId())
wnd.getControl(wnd.getFocusId()).selectItem(0)
wnd.getControl(wnd.getFocusId()).selectItem(len(j)+1)
else:
xbmcplugin.endOfDirectory(int(sys.argv[1]))
Alles anzeigen
"l" ist eine Liste mit Einträgen, die aus dicts bestehen. "page" ist die Seitenzahl. Die JSON Funktionen speichern/laden einfach nur die aktuelle list/dict.
Wenn Kodi ein refresh der aktuellen Liste macht (z.B. nach beenden eines Videos), wird in einer weiteren Funktion einfach die gespeicherte Liste genommen. Ansonsten würde sie aktuelle Auswahl per "wnd.getControl(wnd.getFocusId()).selectItem(0)" verspringen.