Merge branch 'master' of https://github.com/dazedcrazy/PlexKodiConnect into dazedcrazy-master

This commit is contained in:
Croneter 2018-05-18 16:00:28 +02:00
commit ba2098ac93
20 changed files with 11 additions and 1666 deletions

View file

@ -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'):
@ -115,7 +104,7 @@ class ContextMenu(object):
# Addon settings
options.append(OPTIONS['Addon'])
context_menu = context.ContextMenu(
"script-emby-context.xml",
"script-plex-context.xml",
Addon('plugin.video.plexkodiconnect').getAddonInfo('path'),
"default",
"1080i")
@ -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)')

View file

@ -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

View file

@ -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')

View file

@ -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')

View file

@ -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

View file

@ -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')

View file

@ -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)

View file

@ -1,145 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">200</defaultcontrol>
<zorder>0</zorder>
<include>dialogeffect</include>
<controls>
<control type="image">
<description>Background fade</description>
<width>100%</width>
<height>100%</height>
<texture>emby-bg-fade.png</texture>
</control>
<control type="group">
<width>600</width>
<left>35%</left>
<top>20%</top>
<control type="image">
<description>Background box</description>
<texture colordiffuse="ff111111">white.png</texture>
<width>600</width>
<height>480</height>
</control>
<control type="group" id="202">
<top>485</top>
<visible>False</visible>
<control type="image">
<description>Error box</description>
<texture colordiffuse="ff222222">white.png</texture>
<width>100%</width>
<height>50</height>
</control>
<control type="label" id="203">
<description>Error message</description>
<textcolor>white</textcolor>
<font>font10</font>
<aligny>center</aligny>
<align>center</align>
<height>50</height>
</control>
</control>
<control type="image">
<description>Emby logo</description>
<texture>logo-white.png</texture>
<aspectratio>keep</aspectratio>
<width>120</width>
<height>49</height>
<top>30</top>
<left>25</left>
</control>
<control type="group">
<width>500</width>
<left>50</left>
<control type="label">
<description>Please sign in</description>
<label>$ADDON[plugin.video.emby 30612]</label>
<textcolor>white</textcolor>
<font>font12</font>
<aligny>top</aligny>
<align>center</align>
<width>100%</width>
<top>100</top>
</control>
<control type="group">
<top>150</top>
<control type="label">
<description>Username</description>
<label>$ADDON[plugin.video.emby 30024]</label>
<textcolor>ffa6a6a6</textcolor>
<font>font10</font>
<aligny>top</aligny>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>66</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
</control>
<control type="group">
<description>Password</description>
<top>225</top>
<control type="label">
<description>Password label</description>
<label>$ADDON[plugin.video.emby 30602]</label>
<textcolor>ffa6a6a6</textcolor>
<font>font10</font>
<aligny>top</aligny>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>66</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
</control>
<control type="group">
<description>Buttons</description>
<top>335</top>
<control type="button" id="200">
<description>Sign in</description>
<texturenofocus border="5" colordiffuse="ff0b8628">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff13a134">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30605][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<ondown>201</ondown>
</control>
<control type="button" id="201">
<description>Cancel</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff525252">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30606][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<top>55</top>
<onup>200</onup>
</control>
</control>
</control>
</control>
</controls>
</window>

View file

@ -1,179 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">200</defaultcontrol>
<zorder>0</zorder>
<include>dialogeffect</include>
<controls>
<control type="image">
<description>Background fade</description>
<width>100%</width>
<height>100%</height>
<texture>emby-bg-fade.png</texture>
</control>
<control type="group">
<width>600</width>
<left>35%</left>
<top>15%</top>
<control type="image">
<description>Background box</description>
<texture colordiffuse="ff111111">white.png</texture>
<width>600</width>
<height>700</height>
</control>
<control type="group" id="202">
<top>705</top>
<visible>False</visible>
<control type="image">
<description>Error box</description>
<texture colordiffuse="ff222222">white.png</texture>
<width>100%</width>
<height>50</height>
</control>
<control type="label" id="203">
<description>Error message</description>
<textcolor>white</textcolor>
<font>font10</font>
<aligny>center</aligny>
<align>center</align>
<height>50</height>
</control>
</control>
<control type="image">
<description>Emby logo</description>
<texture>logo-white.png</texture>
<width>160</width>
<height>49</height>
<top>30</top>
<left>25</left>
</control>
<control type="group">
<width>500</width>
<left>50</left>
<control type="label">
<description>Sign in emby connect</description>
<label>$ADDON[plugin.video.emby 30600]</label>
<textcolor>white</textcolor>
<font>font12</font>
<aligny>top</aligny>
<top>115</top>
</control>
<control type="group">
<top>190</top>
<control type="label">
<description>Username email</description>
<label>$ADDON[plugin.video.emby 30543]</label>
<textcolor>ffa6a6a6</textcolor>
<font>font10</font>
<aligny>top</aligny>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>66</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
</control>
<control type="group">
<description>Password</description>
<top>275</top>
<control type="label">
<description>Password label</description>
<label>$ADDON[plugin.video.emby 30602]</label>
<textcolor>ffa6a6a6</textcolor>
<font>font10</font>
<aligny>top</aligny>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>66</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
</control>
<control type="group">
<description>Buttons</description>
<top>385</top>
<control type="button" id="200">
<description>Sign in</description>
<texturenofocus border="5" colordiffuse="ff0b8628">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff13a134">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30605][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<ondown>201</ondown>
</control>
<control type="button" id="201">
<description>Cancel</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff525252">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30606][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<top>55</top>
<onup>200</onup>
</control>
</control>
<control type="group">
<description>Disclaimer</description>
<top>510</top>
<control type="label">
<description>Disclaimer label</description>
<label>$ADDON[plugin.video.emby 30603]</label>
<font>font10</font>
<textcolor>ff464646</textcolor>
<wrapmultiline>true</wrapmultiline>
<aligny>top</aligny>
<width>340</width>
<height>100%</height>
</control>
<control type="group">
<control type="label">
<description>Scan me</description>
<label>[UPPERCASE]$ADDON[plugin.video.emby 30604][/UPPERCASE]</label>
<font>font12</font>
<textcolor>ff0b8628</textcolor>
<aligny>top</aligny>
<width>200</width>
<top>120</top>
<left>230</left>
</control>
<control type="image">
<description>qrcode</description>
<texture>qrcode_disclaimer.png</texture>
<width>140</width>
<height>140</height>
<top>10</top>
<left>360</left>
</control>
</control>
</control>
</control>
</control>
</controls>
</window>

View file

@ -1,154 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">200</defaultcontrol>
<zorder>0</zorder>
<include>dialogeffect</include>
<controls>
<control type="image">
<description>Background fade</description>
<width>100%</width>
<height>100%</height>
<texture>emby-bg-fade.png</texture>
</control>
<control type="group">
<width>600</width>
<left>35%</left>
<top>20%</top>
<control type="image">
<description>Background box</description>
<texture colordiffuse="ff111111">white.png</texture>
<width>600</width>
<height>525</height>
</control>
<control type="group" id="202">
<top>530</top>
<visible>False</visible>
<control type="image">
<description>Error box</description>
<texture colordiffuse="ff222222">white.png</texture>
<width>100%</width>
<height>50</height>
</control>
<control type="label" id="203">
<description>Error message</description>
<textcolor>white</textcolor>
<font>font10</font>
<aligny>center</aligny>
<align>center</align>
<height>50</height>
</control>
</control>
<control type="image">
<description>Emby logo</description>
<texture>logo-white.png</texture>
<aspectratio>keep</aspectratio>
<width>120</width>
<height>49</height>
<top>30</top>
<left>25</left>
</control>
<control type="group">
<width>500</width>
<left>50</left>
<control type="label">
<description>Connect to server</description>
<label>$ADDON[plugin.video.emby 30614]</label>
<textcolor>white</textcolor>
<font>font12</font>
<aligny>top</aligny>
<align>center</align>
<width>100%</width>
<top>100</top>
</control>
<control type="group">
<top>150</top>
<control type="label">
<description>Host</description>
<label>$ADDON[plugin.video.emby 30615]</label>
<textcolor>ffa6a6a6</textcolor>
<font>font10</font>
<aligny>top</aligny>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>66</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
<control type="label">
<description>Host example</description>
<label>192.168.1.100 or https://myserver.com</label>
<textcolor>ff464646</textcolor>
<font>font10</font>
<aligny>top</aligny>
<top>70</top>
</control>
</control>
<control type="group">
<description>Port</description>
<top>275</top>
<control type="label">
<description>Port label</description>
<label>$ADDON[plugin.video.emby 30030]</label>
<textcolor>ffa6a6a6</textcolor>
<font>font10</font>
<aligny>top</aligny>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>66</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
</control>
<control type="group">
<description>Buttons</description>
<top>380</top>
<control type="button" id="200">
<description>Connect</description>
<texturenofocus border="5" colordiffuse="ff0b8628">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff13a134">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30616][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<ondown>201</ondown>
</control>
<control type="button" id="201">
<description>Cancel</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff525252">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30606][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<top>55</top>
<onup>200</onup>
</control>
</control>
</control>
</control>
</controls>
</window>

View file

@ -1,280 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">205</defaultcontrol>
<zorder>0</zorder>
<include>dialogeffect</include>
<controls>
<control type="image">
<description>Background fade</description>
<width>100%</width>
<height>100%</height>
<texture>emby-bg-fade.png</texture>
</control>
<control type="group">
<width>450</width>
<left>38%</left>
<top>15%</top>
<control type="image">
<description>Background box</description>
<texture colordiffuse="ff111111">white.png</texture>
<width>450</width>
<height>710</height>
</control>
<control type="image">
<description>Emby logo</description>
<texture>logo-white.png</texture>
<aspectratio>keep</aspectratio>
<width>120</width>
<height>49</height>
<top>30</top>
<left>25</left>
</control>
<control type="group">
<description>User info</description>
<top>70</top>
<width>350</width>
<left>50</left>
<control type="image" id="150">
<description>User image</description>
<texture diffuse="user_image.png">userflyoutdefault.png</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
<width>100%</width>
<height>70</height>
<top>40</top>
</control>
<control type="image" id="204">
<description>Busy animation</description>
<align>center</align>
<top>23</top>
<width>100%</width>
<height>105</height>
<visible>False</visible>
<texture colordiffuse="ff13a134">fading_circle.png</texture>
<aspectratio>keep</aspectratio>
<animation effect="rotate" start="360" end="0" center="auto" time="2000" loop="true" condition="true">conditional</animation>
</control>
<control type="label" id="151">
<description>Welcome user</description>
<textcolor>white</textcolor>
<font>font12</font>
<align>center</align>
<aligny>top</aligny>
<top>120</top>
<width>100%</width>
<height>50</height>
</control>
<control type="image">
<description>separator</description>
<width>102%</width>
<height>0.5</height>
<top>165</top>
<left>-10</left>
<texture colordiffuse="ff525252" border="90,3,90,3">emby-separator.png</texture>
</control>
<control type="label">
<description>Select server</description>
<textcolor>ffa6a6a6</textcolor>
<label>$ADDON[plugin.video.emby 30607]</label>
<font>font10</font>
<align>center</align>
<aligny>top</aligny>
<top>170</top>
<width>100%</width>
<height>50</height>
</control>
</control>
<control type="group">
<top>290</top>
<width>100%</width>
<height>184</height>
<control type="list" id="155">
<description>Connect servers</description>
<focusposition>0</focusposition>
<width>100%</width>
<height>100%</height>
<top>10</top>
<left>55</left>
<onup>155</onup>
<ondown condition="Control.IsVisible(205)">205</ondown>
<ondown condition="!Control.IsVisible(205)">206</ondown>
<onleft condition="Control.IsVisible(205)">205</onleft>
<onleft condition="!Control.IsVisible(205)">206</onleft>
<onright>155</onright>
<pagecontrol>60</pagecontrol>
<scrolltime tween="sine" easing="out">250</scrolltime>
<itemlayout height="46">
<control type="group">
<width>45</width>
<height>45</height>
<control type="image">
<description>Network</description>
<aspectratio>keep</aspectratio>
<texture>network.png</texture>
<visible>StringCompare(ListItem.Property(server_type),network)</visible>
</control>
<control type="image">
<description>Wifi</description>
<aspectratio>keep</aspectratio>
<texture>wifi.png</texture>
<visible>StringCompare(ListItem.Property(server_type),wifi)</visible>
</control>
</control>
<control type="label">
<width>300</width>
<height>40</height>
<left>55</left>
<font>font10</font>
<aligny>center</aligny>
<textcolor>ff838383</textcolor>
<info>ListItem.Label</info>
</control>
</itemlayout>
<focusedlayout height="46">
<control type="group">
<width>45</width>
<height>45</height>
<control type="image">
<description>Network</description>
<aspectratio>keep</aspectratio>
<texture>network.png</texture>
<visible>StringCompare(ListItem.Property(server_type),network)</visible>
</control>
<control type="image">
<description>Wifi</description>
<aspectratio>keep</aspectratio>
<texture>wifi.png</texture>
<visible>StringCompare(ListItem.Property(server_type),wifi)</visible>
</control>
</control>
<control type="label">
<width>300</width>
<height>40</height>
<left>55</left>
<font>font10</font>
<aligny>center</aligny>
<textcolor>white</textcolor>
<info>ListItem.Label</info>
<visible>Control.HasFocus(155)</visible>
</control>
<control type="label">
<width>300</width>
<height>40</height>
<left>55</left>
<font>font10</font>
<aligny>center</aligny>
<textcolor>ff838383</textcolor>
<info>ListItem.Label</info>
<visible>!Control.HasFocus(155)</visible>
</control>
</focusedlayout>
</control>
<control type="scrollbar" id="60">
<left>395</left>
<top>10</top>
<width>5</width>
<height>100%</height>
<onleft>155</onleft>
<onup>60</onup>
<ondown>60</ondown>
<texturesliderbackground colordiffuse="ff000000" border="4">box.png</texturesliderbackground>
<texturesliderbar colordiffuse="ff222222" border="4">box.png</texturesliderbar>
<texturesliderbarfocus colordiffuse="ff222222" border="4">box.png</texturesliderbarfocus>
<showonepage>false</showonepage>
</control>
<control type="group">
<top>100%</top>
<height>220</height>
<control type="group">
<top>45</top>
<height>150</height>
<control type="button" id="205">
<visible>True</visible>
<description>Sign in Connect</description>
<texturenofocus border="5" colordiffuse="ff0b8628">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff13a134">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30600][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>350</width>
<height>50</height>
<left>50</left>
<onup>155</onup>
<ondown>206</ondown>
</control>
<control type="button" id="206">
<description>Manually add server</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff525252">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30611][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<top>55</top>
<width>350</width>
<height>50</height>
<left>50</left>
<onup condition="Control.IsVisible(205)">205</onup>
<onup condition="!Control.IsVisible(205)">155</onup>
<ondown>201</ondown>
</control>
<control type="button" id="201">
<description>Cancel</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff525252">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30606][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<top>110</top>
<width>350</width>
<height>50</height>
<left>50</left>
<onup>206</onup>
</control>
</control>
<control type="group" id="202">
<top>100%</top>
<visible>False</visible>
<control type="image">
<description>Message box</description>
<texture colordiffuse="ff222222">white.png</texture>
<width>100%</width>
<height>50</height>
<top>20</top>
</control>
<control type="label" id="203">
<description>Message</description>
<textcolor>white</textcolor>
<font>font10</font>
<aligny>center</aligny>
<align>center</align>
<height>50</height>
<top>20</top>
</control>
</control>
</control>
</control>
</control>
</controls>
</window>

View file

@ -1,198 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">155</defaultcontrol>
<zorder>0</zorder>
<include>dialogeffect</include>
<controls>
<control type="image">
<description>Background fade</description>
<width>100%</width>
<height>100%</height>
<texture>emby-bg-fade.png</texture>
</control>
<control type="group">
<width>715</width>
<left>32%</left>
<top>20%</top>
<control type="image">
<description>Background box</description>
<texture border="6" colordiffuse="ff111111">white.png</texture>
<width>100%</width>
<height>525</height>
</control>
<control type="image">
<description>Emby logo</description>
<texture>logo-white.png</texture>
<aspectratio>keep</aspectratio>
<width>120</width>
<height>49</height>
<top>30</top>
<left>25</left>
</control>
<control type="label">
<description>Please sign in</description>
<label>$ADDON[plugin.video.emby 30612]</label>
<textcolor>white</textcolor>
<font>font12</font>
<aligny>top</aligny>
<align>center</align>
<top>80</top>
<width>100%</width>
</control>
<control type="group">
<top>100</top>
<width>620</width>
<height>245</height>
<left>50</left>
<control type="list" id="155">
<description>Select User</description>
<focusposition>0</focusposition>
<width>100%</width>
<top>40</top>
<onleft>155</onleft>
<onright>155</onright>
<ondown>200</ondown>
<pagecontrol>60</pagecontrol>
<orientation>horizontal</orientation>
<scrolltime tween="sine" easing="out">250</scrolltime>
<itemlayout width="155">
<control type="group">
<width>150</width>
<control type="image">
<description>User image</description>
<colordiffuse>ff888888</colordiffuse>
<info>ListItem.Icon</info>
<aspectratio>keep</aspectratio>
<width>100%</width>
<height>150</height>
</control>
<control type="image">
<description>Background label</description>
<texture colordiffuse="ff222222">white.png</texture>
<width>100%</width>
<height>50</height>
<top>150</top>
</control>
<control type="label">
<width>100%</width>
<align>center</align>
<height>50</height>
<top>150</top>
<font>font10</font>
<textcolor>white</textcolor>
<info>ListItem.Label</info>
</control>
</control>
</itemlayout>
<focusedlayout width="155">
<control type="group">
<width>150</width>
<control type="image">
<description>User image</description>
<info>ListItem.Icon</info>
<aspectratio>keep</aspectratio>
<width>100%</width>
<height>150</height>
<visible>Control.HasFocus(155)</visible>
</control>
<control type="image">
<description>User image</description>
<colordiffuse>ff888888</colordiffuse>
<info>ListItem.Icon</info>
<aspectratio>keep</aspectratio>
<width>100%</width>
<height>150</height>
<visible>!Control.HasFocus(155)</visible>
</control>
<control type="image">
<description>Background label</description>
<texture colordiffuse="ff333333">white.png</texture>
<width>100%</width>
<height>50</height>
<top>150</top>
<visible>Control.HasFocus(155)</visible>
</control>
<control type="image">
<description>Background label</description>
<texture colordiffuse="ff222222">white.png</texture>
<width>100%</width>
<height>50</height>
<top>150</top>
<visible>!Control.HasFocus(155)</visible>
</control>
<control type="label">
<width>100%</width>
<align>center</align>
<height>50</height>
<top>150</top>
<font>font10</font>
<textcolor>white</textcolor>
<info>ListItem.Label</info>
</control>
</control>
</focusedlayout>
</control>
<control type="scrollbar" id="60">
<top>100%</top>
<width>615</width>
<height>5</height>
<onleft>155</onleft>
<onleft>60</onleft>
<onright>60</onright>
<texturesliderbackground colordiffuse="ff000000" border="4">box.png</texturesliderbackground>
<texturesliderbar colordiffuse="ff222222" border="4">box.png</texturesliderbar>
<texturesliderbarfocus colordiffuse="ff222222" border="4">box.png</texturesliderbarfocus>
<showonepage>false</showonepage>
<orientation>horizontal</orientation>
</control>
<control type="group">
<width>615</width>
<height>325</height>
<top>100%</top>
<control type="group">
<control type="button" id="200">
<description>Manual Login button</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff585858">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30540][/B][/UPPERCASE]</label>
<align>center</align>
<width>100%</width>
<height>50</height>
<top>35</top>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<ondown>201</ondown>
<onup>155</onup>
</control>
<control type="button" id="201">
<description>Cancel</description>
<texturenofocus border="5" colordiffuse="ff464646">box.png</texturenofocus>
<texturefocus border="5" colordiffuse="ff585858">box.png</texturefocus>
<label>[UPPERCASE][B]$ADDON[plugin.video.emby 30606][/B][/UPPERCASE]</label>
<font>font10</font>
<textcolor>ffa6a6a6</textcolor>
<focusedcolor>white</focusedcolor>
<align>center</align>
<width>100%</width>
<height>50</height>
<top>90</top>
<onup>200</onup>
</control>
</control>
</control>
</control>
</control>
</controls>
</window>

View file

@ -8,7 +8,7 @@
<description>Background fade</description>
<width>100%</width>
<height>100%</height>
<texture>emby-bg-fade.png</texture>
<texture>bg-fade.png</texture>
</control>
<control type="group">
@ -22,12 +22,12 @@
</control>
<control type="image">
<description>Emby logo</description>
<texture>emby-icon.png</texture>
<description>Plex logo</description>
<texture>plex-logo.png</texture>
<aspectratio>keep</aspectratio>
<height>30</height>
<height>34</height>
<top>20</top>
<left>370</left>
<left>-285</left>
</control>
<control type="image" id="150">
@ -36,7 +36,7 @@
<aspectratio>keep</aspectratio>
<height>34</height>
<top>20</top>
<left>285</left>
<left>370</left>
</control>
<control type="image">
@ -45,7 +45,7 @@
<height>0.5</height>
<top>70</top>
<left>-5</left>
<texture colordiffuse="ff484848" border="90,3,90,3">emby-separator.png</texture>
<texture colordiffuse="ff484848" border="90,3,90,3">separator.png</texture>
</control>
<control type="group">

View file

Before

Width:  |  Height:  |  Size: 194 B

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB