from utils import guisettingsXML, settings, logMsg
import clientinfo


def getGUI(name):
    xml = guisettingsXML()
    try:
        ans = list(xml.iter(name))[0].text
        if ans is None:
            ans = ''
    except:
        ans = ''
    return ans


def getSettings():
    client = clientinfo.ClientInfo()
    options = {}
    title = 'PlexCompanion Settings'

    options['gdm_debug'] = settings('companionGDMDebugging')
    options['gdm_debug'] = True if options['gdm_debug'] == 'true' else False

    options['client_name'] = settings('deviceName')

    # XBMC web server options
    options['webserver_enabled'] = (getGUI('webserver') == "true")
    logMsg(title, 'Webserver is set to %s' % options['webserver_enabled'], 0)
    webserverport = getGUI('webserverport')
    try:
        webserverport = int(webserverport)
        logMsg(title, 'Using webserver port %s' % str(webserverport), 0)
    except:
        logMsg(title, 'No setting for webserver port found in guisettings.xml.'
               'Using default fallback port 8080', 0)
        webserverport = 8080
    options['port'] = webserverport

    options['user'] = getGUI('webserverusername')
    options['passwd'] = getGUI('webserverpassword')
    logMsg(title, 'Webserver username: %s, password: %s'
           % (options['user'], options['passwd']), 1)

    options['addonName'] = client.getAddonName()
    options['uuid'] = settings('plex_client_Id')
    options['platform'] = client.getPlatform()
    options['version'] = client.getVersion()
    options['plexbmc_version'] = options['version']
    options['myplex_user'] = settings('username')
    try:
        options['myport'] = int(settings('companionPort'))
        logMsg(title, 'Using Plex Companion Port %s'
               % str(options['myport']), 0)
    except:
        logMsg(title, 'Error getting Plex Companion Port from file settings. '
               'Using fallback port 39005', -1)
        options['myport'] = 39005
    return options