navi working?
parent
d840712e34
commit
2421b4d1db
111
searchwindow.py
111
searchwindow.py
|
@ -49,6 +49,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
last_top_button = None
|
||||
last_right_button = None
|
||||
last_listing_mode = None
|
||||
route = None
|
||||
count = 0
|
||||
navi_right_menu = []
|
||||
navi_top_menu = []
|
||||
|
@ -72,11 +73,6 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
self.navi_load()
|
||||
#self.history()
|
||||
|
||||
if self.listing.size():
|
||||
self.setFocus(self.listing)
|
||||
else:
|
||||
self.setFocus(self.input_search)
|
||||
|
||||
def set_navi(self):
|
||||
self.navi = {
|
||||
'last_top_button': 4,
|
||||
|
@ -193,22 +189,31 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
def navi_back(self):
|
||||
log('navi_back init')
|
||||
self.navi['route'].pop(-1)
|
||||
self.navi['route'][-1]['params']['back'] = True
|
||||
self.navi_restore()
|
||||
|
||||
def navi_route_reset(self):
|
||||
log('navi_route_reset init')
|
||||
self.navi['route'] = [self.navi['route'][0]]
|
||||
|
||||
def navi_route_pop(self):
|
||||
log('navi_route_pop init')
|
||||
self.navi['route'].pop(-1)
|
||||
|
||||
def navi_restore(self):
|
||||
log('navi_restore init')
|
||||
route = self.navi['route'][-1]
|
||||
action = getattr(self, route['mode'])
|
||||
self.route = self.navi['route'].pop(-1)
|
||||
action = getattr(self, self.route['mode'])
|
||||
try:
|
||||
if route['params']:
|
||||
action(route['params'])
|
||||
if self.route['params']:
|
||||
action(self.route['params'])
|
||||
else:
|
||||
action()
|
||||
self.setFocus(self.listing)
|
||||
log('route[last_listing_item]: ' + str(route['last_listing_item']))
|
||||
if route['last_listing_item'] > 0:
|
||||
self.listing.selectItem(route['last_listing_item'])
|
||||
|
||||
self.set_focus(self.route['mode'])
|
||||
|
||||
log('self.route[last_listing_item]: ' + str(self.route['last_listing_item']))
|
||||
if self.route['last_listing_item'] > 0:
|
||||
self.listing.selectItem(self.route['last_listing_item'])
|
||||
except:
|
||||
import traceback
|
||||
log('navi_restore ERROR '+traceback.format_exc())
|
||||
|
@ -231,8 +236,11 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
self.navi = json.loads(navi)
|
||||
self.navi_restore()
|
||||
|
||||
def navi_save(self):
|
||||
def navi_save(self, mode = None):
|
||||
log('navi_save init')
|
||||
|
||||
if mode: self.set_focus(mode)
|
||||
|
||||
navi = json.dumps(self.navi)
|
||||
|
||||
__tmppath__ = os.path.join(xbmc.translatePath('special://temp'), 'xbmcup', 'plugin.video.torrenter')
|
||||
|
@ -284,20 +292,9 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
|
||||
if focused_control in self.navi_top_menu:
|
||||
log('focused_control in self.navi[\'top_menu\']')
|
||||
self.navi['route'] = [self.navi['route'][0]]
|
||||
self.navi_route_reset()
|
||||
|
||||
if not params or not params.get('back'):
|
||||
log('***** self.navi[\'route\'].append *****' + str(mode) + str(params))
|
||||
if not params:
|
||||
params = {'back': True}
|
||||
else:
|
||||
params['back'] = True
|
||||
|
||||
if focused_control == self.listing:
|
||||
item_index = self.listing.getSelectedPosition()
|
||||
else:
|
||||
item_index = 0
|
||||
self.navi['route'][-1]['last_listing_item'] == item_index
|
||||
|
||||
self.navi['route'].append({'mode': mode,
|
||||
'params': params,
|
||||
|
@ -306,6 +303,12 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
self.right_menu(mode if not right_menu else right_menu)
|
||||
self.listing.reset()
|
||||
|
||||
def set_focus(self, mode):
|
||||
if mode and not self.listing.size() and hasattr(self, "button_" + mode):
|
||||
self.setFocus(getattr(self, "button_" + mode))
|
||||
else:
|
||||
self.setFocus(self.listing)
|
||||
|
||||
def search(self, params = {}):
|
||||
log('search init params: ' + str(params))
|
||||
self.navi_route('search', params)
|
||||
|
@ -351,6 +354,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
items = db.get_all()
|
||||
favlist = [(1, '[B]%s[/B]'), (0, '%s')]
|
||||
last_listing_item = 0
|
||||
last_addtime_fav = False
|
||||
if items:
|
||||
for favbool, bbstring in favlist:
|
||||
for addtime, string, fav in items:
|
||||
|
@ -359,6 +363,9 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
|
||||
if int(fav) == 1:
|
||||
img = __root__ + '/icons/fav.png'
|
||||
if str(self.navi['last_addtime']) == str(addtime):
|
||||
last_addtime_fav = True
|
||||
if not last_addtime_fav:
|
||||
last_listing_item += 1
|
||||
else:
|
||||
img = __root__ + '/icons/unfav.png'
|
||||
|
@ -366,7 +373,8 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
link = {'mode': 'history_item', 'query': title, 'addtime': str(addtime),
|
||||
'fav': str(fav)}
|
||||
self.drawItem(bbstring % title, link, img)
|
||||
self.navi['route'][-1]['last_listing_item'] = last_listing_item
|
||||
self.route['last_listing_item'] = last_listing_item
|
||||
self.navi_save('history')
|
||||
|
||||
def history_action(self, action, addtime, fav):
|
||||
db = HistoryDB()
|
||||
|
@ -382,7 +390,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
db.unfav(addtime)
|
||||
showMessage(self.localize('Favourites'), self.localize('Deleted!'))
|
||||
|
||||
self.history()
|
||||
self.navi_restore()
|
||||
|
||||
def watched(self, params = {}):
|
||||
self.navi_route('watched', params)
|
||||
|
@ -411,6 +419,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
|
||||
link = {'mode': 'watched_item', 'addtime': str(addtime)}
|
||||
self.drawItem(title, link, image=img)
|
||||
self.navi_save('watched')
|
||||
|
||||
def watched_action(self, action, addtime):
|
||||
db = WatchedHistoryDB()
|
||||
|
@ -418,7 +427,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
if action == 'delete':
|
||||
db.delete(addtime)
|
||||
showMessage(self.localize('Watched History'), self.localize('Deleted!'))
|
||||
self.watched()
|
||||
self.navi_restore()
|
||||
|
||||
if action == 'open':
|
||||
filename, foldername, path, url, seek, length, ind = db.get('filename, foldername, path, url, seek, length, ind', 'addtime', str(addtime))
|
||||
|
@ -445,7 +454,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
if action == 'clear':
|
||||
db.clear()
|
||||
showMessage(self.localize('Watched History'), self.localize('Clear!'))
|
||||
self.watched()
|
||||
self.navi_restore()
|
||||
|
||||
def browser(self, params = {}):
|
||||
from resources.utorrent.net import Download
|
||||
|
@ -481,7 +490,6 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
title = '[%s%%]%s%s [%s]' % (str(data['progress']), status, data['name'], str(data['ratio']))
|
||||
menu.append(
|
||||
{"title": title, "image": img, "argv": {'mode': 'browser_item', 'hash': str(data['id'])}})
|
||||
|
||||
elif not tdir:
|
||||
self.navi_route('browser', params, 'browser_subfolder')
|
||||
self.drawItem('..', {'mode': 'browser_moveup'}, image = 'DefaultFolderBack.png', isFolder = True)
|
||||
|
@ -525,12 +533,8 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
folder = False
|
||||
|
||||
self.drawItem(i['title'], params, image = img, isFolder = folder)
|
||||
# def drawItem(self, title, params, image = None, isFolder = False):
|
||||
if self.listing.size():
|
||||
self.setFocus(self.listing)
|
||||
else:
|
||||
self.setFocus(self.button_browser)
|
||||
return
|
||||
|
||||
self.navi_save('browser')
|
||||
|
||||
def browser_action(self, hash, action, tdir = None, ind = None):
|
||||
from resources.utorrent.net import Download
|
||||
|
@ -612,9 +616,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
return True
|
||||
|
||||
def downloadstatus(self, params = {}):
|
||||
self.listing.reset()
|
||||
self.right_menu('downloadstatus')
|
||||
#self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
|
||||
self.navi_route('downloadstatus', params)
|
||||
|
||||
db = DownloadDB()
|
||||
items = db.get_all()
|
||||
|
@ -656,11 +658,8 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
self.drawItem(title, params, image=img, isFolder=type == 'folder')
|
||||
|
||||
# def drawItem(self, title, params, image = None, isFolder = False):
|
||||
if self.listing.size():
|
||||
self.setFocus(self.listing)
|
||||
else:
|
||||
self.setFocus(self.button_downloadstatus)
|
||||
return
|
||||
|
||||
self.navi_save('downloadstatus')
|
||||
|
||||
def downloadstatus_action(self, action, addtime, path, type, progress, storage):
|
||||
|
||||
|
@ -735,8 +734,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
self.downloadstatus()
|
||||
|
||||
def file_browser(self, params):
|
||||
|
||||
self.navi_route('browser', params)
|
||||
self.navi_route('file_browser', params)
|
||||
|
||||
get = params.get
|
||||
mode = get('mode')
|
||||
|
@ -752,8 +750,6 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
xbmc.Player().play(localize_path(tdir))
|
||||
self.close()
|
||||
else:
|
||||
self.right_menu('file_browser')
|
||||
#self.reconnect(pyxbmct.ACTION_NAV_BACK, self.downloadstatus)
|
||||
|
||||
self.drawItem('..', {'mode': 'moveup', 'path': path,
|
||||
'tdir': os.path.dirname(tdir)}, image = 'DefaultFolderBack.png', isFolder=True)
|
||||
|
@ -768,10 +764,8 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
link = {'mode': 'file', 'path': path, 'type': 'file',
|
||||
'tdir': os.path.join(tdir, file)}
|
||||
self.drawItem(file, link, isFolder=False)
|
||||
if self.listing.size():
|
||||
self.setFocus(self.listing)
|
||||
else:
|
||||
self.setFocus(self.button_downloadstatus)
|
||||
|
||||
self.navi_save('file_browser')
|
||||
|
||||
def open_torrent(self, params):
|
||||
self.navi_route('open_torrent', params)
|
||||
|
@ -806,7 +800,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
|
|||
params = {'mode': 'torrent_play', 'url': identifier, 'url2': ids_video.rstrip(','), 'filename': link}
|
||||
self.drawItem(title, params)
|
||||
|
||||
self.navi_save()
|
||||
self.navi_save('open_torrent')
|
||||
|
||||
def get_menulist(self, mode):
|
||||
|
||||
|
@ -1181,11 +1175,11 @@ class InfoWindow(pyxbmct.AddonDialogWindow):
|
|||
|
||||
def log(msg):
|
||||
try:
|
||||
xbmc.log("### [%s]: %s" % (__plugin__, msg,), level=xbmc.LOGNOTICE)
|
||||
xbmc.log("#SW# [%s]: %s" % (__plugin__, msg,), level=xbmc.LOGNOTICE)
|
||||
except UnicodeEncodeError:
|
||||
xbmc.log("### [%s]: %s" % (__plugin__, msg.encode("utf-8", "ignore"),), level=xbmc.LOGNOTICE)
|
||||
xbmc.log("#SW# [%s]: %s" % (__plugin__, msg.encode("utf-8", "ignore"),), level=xbmc.LOGNOTICE)
|
||||
except:
|
||||
xbmc.log("### [%s]: %s" % (__plugin__, 'ERROR LOG',), level=xbmc.LOGNOTICE)
|
||||
xbmc.log("#SW# [%s]: %s" % (__plugin__, 'ERROR LOG',), level=xbmc.LOGNOTICE)
|
||||
|
||||
def titleMake(seeds, leechers, size, title):
|
||||
# AARRGGBB
|
||||
|
@ -1210,7 +1204,6 @@ def dlstat_titleMake(title, second):
|
|||
title += '\r\n' + clDimgray % second
|
||||
return title
|
||||
|
||||
|
||||
def main(params = None):
|
||||
dialog = SearchWindow(params)
|
||||
dialog.doModal()
|
||||
|
|
Loading…
Reference in New Issue