81 lines
2.1 KiB
Python
81 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import, division, unicode_literals
|
|
from datetime import timedelta
|
|
|
|
import xbmc
|
|
import xbmcgui
|
|
import xbmcaddon
|
|
|
|
from logging import getLogger
|
|
|
|
|
|
LOG = getLogger('PLEX.resume')
|
|
|
|
XML_PATH = (xbmcaddon.Addon('plugin.video.plexkodiconnect').getAddonInfo('path'),
|
|
"default",
|
|
"1080i")
|
|
|
|
ACTION_PARENT_DIR = 9
|
|
ACTION_PREVIOUS_MENU = 10
|
|
ACTION_BACK = 92
|
|
RESUME = 3010
|
|
START_BEGINNING = 3011
|
|
|
|
|
|
class ResumeDialog(xbmcgui.WindowXMLDialog):
|
|
|
|
_resume_point = None
|
|
selected_option = None
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs)
|
|
|
|
def set_resume_point(self, time):
|
|
self._resume_point = time
|
|
|
|
def is_selected(self):
|
|
return True if self.selected_option is not None else False
|
|
|
|
def get_selected(self):
|
|
return self.selected_option
|
|
|
|
def onInit(self):
|
|
|
|
self.getControl(RESUME).setLabel(self._resume_point)
|
|
self.getControl(START_BEGINNING).setLabel(xbmc.getLocalizedString(12021))
|
|
|
|
def onAction(self, action):
|
|
if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU):
|
|
self.close()
|
|
|
|
def onClick(self, controlID):
|
|
if controlID == RESUME:
|
|
self.selected_option = 1
|
|
self.close()
|
|
if controlID == START_BEGINNING:
|
|
self.selected_option = 0
|
|
self.close()
|
|
|
|
|
|
def resume_dialog(seconds):
|
|
'''
|
|
Base resume dialog based on Kodi settings
|
|
Returns True if PKC should resume, False if not, None if user backed out
|
|
of the dialog
|
|
'''
|
|
LOG.info("Resume dialog called")
|
|
dialog = ResumeDialog("script-plex-resume.xml", *XML_PATH)
|
|
dialog.set_resume_point("Resume from %s"
|
|
% unicode(timedelta(seconds=seconds)).split(".")[0])
|
|
dialog.doModal()
|
|
|
|
if dialog.is_selected():
|
|
if not dialog.get_selected():
|
|
# Start from beginning selected
|
|
return False
|
|
else:
|
|
# User backed out
|
|
LOG.info("User exited without a selection")
|
|
return
|
|
return True
|