diff --git a/resources/lib/dialogs/context.py b/resources/lib/context.py similarity index 100% rename from resources/lib/dialogs/context.py rename to resources/lib/context.py diff --git a/resources/lib/context_entry.py b/resources/lib/context_entry.py index b38b27ae..994913fc 100644 --- a/resources/lib/context_entry.py +++ b/resources/lib/context_entry.py @@ -6,10 +6,10 @@ from xbmcaddon import Addon import xbmc import xbmcplugin import xbmcgui +import context import plexdb_functions as plexdb from utils import window, settings, dialog, language as lang -from dialogs import context import PlexFunctions as PF from PlexAPI import API import playqueue as PQ @@ -96,18 +96,7 @@ class ContextMenu(object): options.append(OPTIONS['PMS_Play']) if self.kodi_type in v.KODI_VIDEOTYPES: options.append(OPTIONS['Transcode']) - # userdata = self.api.userdata() - # if userdata['Favorite']: - # # Remove from emby favourites - # options.append(OPTIONS['RemoveFav']) - # else: - # # Add to emby favourites - # options.append(OPTIONS['AddFav']) - # if self.kodi_type == "song": - # # Set custom song rating - # options.append(OPTIONS['RateSong']) - # Refresh item - # options.append(OPTIONS['Refresh']) + # Delete item, only if the Plex Home main user is logged in if (window('plex_restricteduser') != 'true' and window('plex_allows_mediaDeletion') == 'true'): @@ -137,14 +126,7 @@ class ContextMenu(object): self._PMS_play() elif selected == OPTIONS['Extras']: self._extras() - # elif selected == OPTIONS['Refresh']: - # self.emby.refreshItem(self.item_id) - # elif selected == OPTIONS['AddFav']: - # self.emby.updateUserRating(self.item_id, favourite=True) - # elif selected == OPTIONS['RemoveFav']: - # self.emby.updateUserRating(self.item_id, favourite=False) - # elif selected == OPTIONS['RateSong']: - # self._rate_song() + elif selected == OPTIONS['Addon']: xbmc.executebuiltin( 'Addon.OpenSettings(plugin.video.plexkodiconnect)') diff --git a/resources/lib/dialogs/__init__.py b/resources/lib/dialogs/__init__.py deleted file mode 100644 index 92c6f42a..00000000 --- a/resources/lib/dialogs/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Dummy file to make this directory a package. -# from serverconnect import ServerConnect -# from usersconnect import UsersConnect -# from loginconnect import LoginConnect -# from loginmanual import LoginManual -# from servermanual import ServerManual diff --git a/resources/lib/dialogs/loginconnect.py b/resources/lib/dialogs/loginconnect.py deleted file mode 100644 index db7c39cc..00000000 --- a/resources/lib/dialogs/loginconnect.py +++ /dev/null @@ -1,136 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging -import os - -import xbmcgui -import xbmcaddon - -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) -addon = xbmcaddon.Addon('plugin.video.emby') - -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -SIGN_IN = 200 -CANCEL = 201 -ERROR_TOGGLE = 202 -ERROR_MSG = 203 -ERROR = { - 'Invalid': 1, - 'Empty': 2 -} - -################################################################################################## - - -class LoginConnect(xbmcgui.WindowXMLDialog): - - _user = None - error = None - - - def __init__(self, *args, **kwargs): - - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_connect_manager(self, connect_manager): - self.connect_manager = connect_manager - - def is_logged_in(self): - return True if self._user else False - - def get_user(self): - return self._user - - - def onInit(self): - - self.user_field = self._add_editcontrol(725, 385, 40, 500) - self.setFocus(self.user_field) - self.password_field = self._add_editcontrol(725, 470, 40, 500, password=1) - self.signin_button = self.getControl(SIGN_IN) - self.remind_button = self.getControl(CANCEL) - self.error_toggle = self.getControl(ERROR_TOGGLE) - self.error_msg = self.getControl(ERROR_MSG) - - self.user_field.controlUp(self.remind_button) - self.user_field.controlDown(self.password_field) - self.password_field.controlUp(self.user_field) - self.password_field.controlDown(self.signin_button) - self.signin_button.controlUp(self.password_field) - self.remind_button.controlDown(self.user_field) - - def onClick(self, control): - - if control == SIGN_IN: - # Sign in to emby connect - self._disable_error() - - user = self.user_field.getText() - password = self.password_field.getText() - - if not user or not password: - # Display error - self._error(ERROR['Empty'], lang(30608)) - log.error("Username or password cannot be null") - - elif self._login(user, password): - self.close() - - elif control == CANCEL: - # Remind me later - self.close() - - def onAction(self, action): - - if (self.error == ERROR['Empty'] - and self.user_field.getText() and self.password_field.getText()): - self._disable_error() - - if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU): - self.close() - - def _add_editcontrol(self, x, y, height, width, password=0): - - media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media') - control = xbmcgui.ControlEdit(0, 0, 0, 0, - label="User", - font="font10", - textColor="ff525252", - focusTexture=os.path.join(media, "button-focus.png"), - noFocusTexture=os.path.join(media, "button-focus.png"), - isPassword=password) - control.setPosition(x, y) - control.setHeight(height) - control.setWidth(width) - - self.addControl(control) - return control - - def _login(self, username, password): - - result = self.connect_manager.loginToConnect(username, password) - if result is False: - self._error(ERROR['Invalid'], lang(33009)) - return False - else: - self._user = result - return True - - def _error(self, state, message): - - self.error = state - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _disable_error(self): - - self.error = None - self.error_toggle.setVisibleCondition('False') diff --git a/resources/lib/dialogs/loginmanual.py b/resources/lib/dialogs/loginmanual.py deleted file mode 100644 index 7db1adcf..00000000 --- a/resources/lib/dialogs/loginmanual.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging -import os - -import xbmcgui -import xbmcaddon - -import read_embyserver as embyserver -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) -addon = xbmcaddon.Addon('plugin.video.emby') - -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -SIGN_IN = 200 -CANCEL = 201 -ERROR_TOGGLE = 202 -ERROR_MSG = 203 -ERROR = { - 'Invalid': 1, - 'Empty': 2 -} - -################################################################################################## - - -class LoginManual(xbmcgui.WindowXMLDialog): - - _user = None - error = None - username = None - - - def __init__(self, *args, **kwargs): - - self.emby = embyserver.Read_EmbyServer() - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def is_logged_in(self): - return True if self._user else False - - def set_server(self, server): - self.server = server - - def set_user(self, user): - self.username = user or {} - - def get_user(self): - return self._user - - def onInit(self): - - self.signin_button = self.getControl(SIGN_IN) - self.cancel_button = self.getControl(CANCEL) - self.error_toggle = self.getControl(ERROR_TOGGLE) - self.error_msg = self.getControl(ERROR_MSG) - self.user_field = self._add_editcontrol(725, 400, 40, 500) - self.password_field = self._add_editcontrol(725, 475, 40, 500, password=1) - - if self.username: - self.user_field.setText(self.username) - self.setFocus(self.password_field) - else: - self.setFocus(self.user_field) - - self.user_field.controlUp(self.cancel_button) - self.user_field.controlDown(self.password_field) - self.password_field.controlUp(self.user_field) - self.password_field.controlDown(self.signin_button) - self.signin_button.controlUp(self.password_field) - self.cancel_button.controlDown(self.user_field) - - def onClick(self, control): - - if control == SIGN_IN: - # Sign in to emby connect - self._disable_error() - - user = self.user_field.getText() - password = self.password_field.getText() - - if not user: - # Display error - self._error(ERROR['Empty'], lang(30613)) - log.error("Username cannot be null") - - elif self._login(user, password): - self.close() - - elif control == CANCEL: - # Remind me later - self.close() - - def onAction(self, action): - - if self.error == ERROR['Empty'] and self.user_field.getText(): - self._disable_error() - - if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU): - self.close() - - def _add_editcontrol(self, x, y, height, width, password=0): - - media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media') - control = xbmcgui.ControlEdit(0, 0, 0, 0, - label="User", - font="font10", - textColor="ff525252", - focusTexture=os.path.join(media, "button-focus.png"), - noFocusTexture=os.path.join(media, "button-focus.png"), - isPassword=password) - control.setPosition(x, y) - control.setHeight(height) - control.setWidth(width) - - self.addControl(control) - return control - - def _login(self, username, password): - - result = self.emby.loginUser(self.server, username, password) - if not result: - self._error(ERROR['Invalid'], lang(33009)) - return False - else: - self._user = result - return True - - def _error(self, state, message): - - self.error = state - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _disable_error(self): - - self.error = None - self.error_toggle.setVisibleCondition('False') diff --git a/resources/lib/dialogs/serverconnect.py b/resources/lib/dialogs/serverconnect.py deleted file mode 100644 index 541ca6f9..00000000 --- a/resources/lib/dialogs/serverconnect.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging - -import xbmc -import xbmcgui - -import connect.connectionmanager as connectionmanager -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) - -CONN_STATE = connectionmanager.ConnectionState -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -ACTION_SELECT_ITEM = 7 -ACTION_MOUSE_LEFT_CLICK = 100 -USER_IMAGE = 150 -USER_NAME = 151 -LIST = 155 -CANCEL = 201 -MESSAGE_BOX = 202 -MESSAGE = 203 -BUSY = 204 -EMBY_CONNECT = 205 -MANUAL_SERVER = 206 - -################################################################################################## - - -class ServerConnect(xbmcgui.WindowXMLDialog): - - username = "" - user_image = None - servers = [] - - _selected_server = None - _connect_login = False - _manual_server = False - - - def __init__(self, *args, **kwargs): - - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_args(self, **kwargs): - # connect_manager, username, user_image, servers, emby_connect - for key, value in kwargs.iteritems(): - setattr(self, key, value) - - def is_server_selected(self): - return True if self._selected_server else False - - def get_server(self): - return self._selected_server - - def is_connect_login(self): - return self._connect_login - - def is_manual_server(self): - return self._manual_server - - - def onInit(self): - - self.message = self.getControl(MESSAGE) - self.message_box = self.getControl(MESSAGE_BOX) - self.busy = self.getControl(BUSY) - self.list_ = self.getControl(LIST) - - for server in self.servers: - server_type = "wifi" if server.get('ExchangeToken') else "network" - self.list_.addItem(self._add_listitem(server['Name'], server['Id'], server_type)) - - self.getControl(USER_NAME).setLabel("%s %s" % (lang(33000), self.username.decode('utf-8'))) - - if self.user_image is not None: - self.getControl(USER_IMAGE).setImage(self.user_image) - - if not self.emby_connect: # Change connect user - self.getControl(EMBY_CONNECT).setLabel("[UPPERCASE][B]"+lang(30618)+"[/B][/UPPERCASE]") - - if self.servers: - self.setFocus(self.list_) - - @classmethod - def _add_listitem(cls, label, server_id, server_type): - - item = xbmcgui.ListItem(label) - item.setProperty('id', server_id) - item.setProperty('server_type', server_type) - - return item - - def onAction(self, action): - - if action in (ACTION_BACK, ACTION_PREVIOUS_MENU, ACTION_PARENT_DIR): - self.close() - - if action in (ACTION_SELECT_ITEM, ACTION_MOUSE_LEFT_CLICK): - - if self.getFocusId() == LIST: - server = self.list_.getSelectedItem() - selected_id = server.getProperty('id') - log.info('Server Id selected: %s', selected_id) - - if self._connect_server(selected_id): - self.message_box.setVisibleCondition('False') - self.close() - - def onClick(self, control): - - if control == EMBY_CONNECT: - self.connect_manager.clearData() - self._connect_login = True - self.close() - - elif control == MANUAL_SERVER: - self._manual_server = True - self.close() - - elif control == CANCEL: - self.close() - - def _connect_server(self, server_id): - - server = self.connect_manager.getServerInfo(server_id) - self.message.setLabel("%s %s..." % (lang(30610), server['Name'])) - self.message_box.setVisibleCondition('True') - self.busy.setVisibleCondition('True') - result = self.connect_manager.connectToServer(server) - - if result['State'] == CONN_STATE['Unavailable']: - self.busy.setVisibleCondition('False') - self.message.setLabel(lang(30609)) - return False - else: - xbmc.sleep(1000) - self._selected_server = result['Servers'][0] - return True diff --git a/resources/lib/dialogs/servermanual.py b/resources/lib/dialogs/servermanual.py deleted file mode 100644 index d54199eb..00000000 --- a/resources/lib/dialogs/servermanual.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging -import os - -import xbmcgui -import xbmcaddon - -import connect.connectionmanager as connectionmanager -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) -addon = xbmcaddon.Addon('plugin.video.emby') - -CONN_STATE = connectionmanager.ConnectionState -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -CONNECT = 200 -CANCEL = 201 -ERROR_TOGGLE = 202 -ERROR_MSG = 203 -ERROR = { - 'Invalid': 1, - 'Empty': 2 -} - -################################################################################################## - - -class ServerManual(xbmcgui.WindowXMLDialog): - - _server = None - error = None - - - def __init__(self, *args, **kwargs): - - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_connect_manager(self, connect_manager): - self.connect_manager = connect_manager - - def is_connected(self): - return True if self._server else False - - def get_server(self): - return self._server - - def onInit(self): - - self.connect_button = self.getControl(CONNECT) - self.cancel_button = self.getControl(CANCEL) - self.error_toggle = self.getControl(ERROR_TOGGLE) - self.error_msg = self.getControl(ERROR_MSG) - self.host_field = self._add_editcontrol(725, 400, 40, 500) - self.port_field = self._add_editcontrol(725, 525, 40, 500) - - self.port_field.setText('8096') - self.setFocus(self.host_field) - - self.host_field.controlUp(self.cancel_button) - self.host_field.controlDown(self.port_field) - self.port_field.controlUp(self.host_field) - self.port_field.controlDown(self.connect_button) - self.connect_button.controlUp(self.port_field) - self.cancel_button.controlDown(self.host_field) - - def onClick(self, control): - - if control == CONNECT: - # Sign in to emby connect - self._disable_error() - - server = self.host_field.getText() - port = self.port_field.getText() - - if not server or not port: - # Display error - self._error(ERROR['Empty'], lang(30617)) - log.error("Server or port cannot be null") - - elif self._connect_to_server(server, port): - self.close() - - elif control == CANCEL: - # Remind me later - self.close() - - def onAction(self, action): - - if self.error == ERROR['Empty'] and self.host_field.getText() and self.port_field.getText(): - self._disable_error() - - if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU): - self.close() - - def _add_editcontrol(self, x, y, height, width): - - media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media') - control = xbmcgui.ControlEdit(0, 0, 0, 0, - label="User", - font="font10", - textColor="ffc2c2c2", - focusTexture=os.path.join(media, "button-focus.png"), - noFocusTexture=os.path.join(media, "button-focus.png")) - control.setPosition(x, y) - control.setHeight(height) - control.setWidth(width) - - self.addControl(control) - return control - - def _connect_to_server(self, server, port): - - server_address = "%s:%s" % (server, port) - self._message("%s %s..." % (lang(30610), server_address)) - result = self.connect_manager.connectToAddress(server_address) - - if result['State'] == CONN_STATE['Unavailable']: - self._message(lang(30609)) - return False - else: - self._server = result['Servers'][0] - return True - - def _message(self, message): - - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _error(self, state, message): - - self.error = state - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _disable_error(self): - - self.error = None - self.error_toggle.setVisibleCondition('False') diff --git a/resources/lib/dialogs/usersconnect.py b/resources/lib/dialogs/usersconnect.py deleted file mode 100644 index ed535c98..00000000 --- a/resources/lib/dialogs/usersconnect.py +++ /dev/null @@ -1,104 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging - -import xbmc -import xbmcgui - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) - -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -ACTION_SELECT_ITEM = 7 -ACTION_MOUSE_LEFT_CLICK = 100 -LIST = 155 -MANUAL = 200 -CANCEL = 201 - -################################################################################################## - - -class UsersConnect(xbmcgui.WindowXMLDialog): - - _user = None - _manual_login = False - - - def __init__(self, *args, **kwargs): - - self.kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2]) - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_server(self, server): - self.server = server - - def set_users(self, users): - self.users = users - - def is_user_selected(self): - return True if self._user else False - - def get_user(self): - return self._user - - def is_manual_login(self): - return self._manual_login - - - def onInit(self): - - self.list_ = self.getControl(LIST) - for user in self.users: - user_image = ("userflyoutdefault2.png" if 'PrimaryImageTag' not in user - else self._get_user_artwork(user['Id'], 'Primary')) - self.list_.addItem(self._add_listitem(user['Name'], user['Id'], user_image)) - - self.setFocus(self.list_) - - def _add_listitem(self, label, user_id, user_image): - - item = xbmcgui.ListItem(label) - item.setProperty('id', user_id) - if self.kodi_version > 15: - item.setArt({'Icon': user_image}) - else: - item.setArt({'icon': user_image}) - - return item - - def onAction(self, action): - - if action in (ACTION_BACK, ACTION_PREVIOUS_MENU, ACTION_PARENT_DIR): - self.close() - - if action in (ACTION_SELECT_ITEM, ACTION_MOUSE_LEFT_CLICK): - - if self.getFocusId() == LIST: - user = self.list_.getSelectedItem() - selected_id = user.getProperty('id') - log.info('User Id selected: %s', selected_id) - - for user in self.users: - if user['Id'] == selected_id: - self._user = user - break - - self.close() - - def onClick(self, control): - - if control == MANUAL: - self._manual_login = True - self.close() - - elif control == CANCEL: - self.close() - - def _get_user_artwork(self, user_id, item_type): - # Load user information set by UserClient - return "%s/emby/Users/%s/Images/%s?Format=original" % (self.server, user_id, item_type) diff --git a/resources/skins/default/1080i/script-plex-context.xml b/resources/skins/default/1080i/script-plex-context.xml index 380f2a9a..1b94802e 100644 --- a/resources/skins/default/1080i/script-plex-context.xml +++ b/resources/skins/default/1080i/script-plex-context.xml @@ -8,7 +8,7 @@ Background fade 100% 100% - plex-bg-fade.png + bg-fade.png @@ -45,7 +45,7 @@ 0.5 70 -5 - plex-separator.png + separator.png diff --git a/resources/skins/default/media/plex-bg-fade.png b/resources/skins/default/media/bg-fade.png similarity index 100% rename from resources/skins/default/media/plex-bg-fade.png rename to resources/skins/default/media/bg-fade.png diff --git a/resources/skins/default/media/plex-separator.png b/resources/skins/default/media/separator.png similarity index 100% rename from resources/skins/default/media/plex-separator.png rename to resources/skins/default/media/separator.png