# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------

import sys
import xbmc
import xbmcaddon
import xbmcplugin

addon = xbmcaddon.Addon()
get_setting = addon.getSetting

THUMBNAIL = "thumbnail"
LIST = "list"
MOVIES = "movies"
TV_SHOWS = "tvshows"
SEASONS = "seasons"
EPISODES = "episodes"
OTHER = "other"
SETS = "sets"

# Suggested view codes for each type from different skins (initial list thanks to xbmcswift2 library)
ALL_VIEW_CODES = {
    'list': {
        'skin.confluence': 50,  # List
        'skin.aeon.nox': 50,  # List
        'skin.droid': 50,  # List
        'skin.quartz': 50,  # List
        'skin.re-touched': 50,  # List
        'skin.estuary': 50,
        # 50 = List, 51 = Poster, 52 = Lists,53 = Shift, 54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
    'thumbnail': {
        'skin.confluence': 501,  # Thumbnail
        'skin.aeon.nox': 500,  # Wall
        'skin.droid': 51,  # Big icons
        'skin.quartz': 51,  # Big icons
        'skin.re-touched': 500,  # Thumbnail
        'skin.estuary': 500,
        # 50 = List, 51 = Poster, 52 = Lists, 53 = Shift, 54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
    'movies': {
        'skin.confluence': 500,  # Thumbnail 515, # Media Info 3
        'skin.aeon.nox': 500,  # Wall
        'skin.droid': 51,  # Big icons
        'skin.quartz': 52,  # Media info
        'skin.re-touched': 500,  # Thumbnail
        'skin.estuary': 52,
        # 50 = List, 51 = Poster,52 = Lists,53 = Shift, 54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
    'tvshows': {
        'skin.confluence': 500,  # Thumbnail 515, # Media Info 3
        'skin.aeon.nox': 500,  # Wall
        'skin.droid': 51,  # Big icons
        'skin.quartz': 52,  # Media info
        'skin.re-touched': 500,  # Thumbnail
        'skin.estuary': 54,
        # 50 = List, 51 = Poster,52 = Lists, 53 = Shift, 54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
    'seasons': {
        'skin.confluence': 50,  # List
        'skin.aeon.nox': 50,  # List
        'skin.droid': 50,  # List
        'skin.quartz': 52,  # Media info
        'skin.re-touched': 50,  # List
        'skin.estuary': 53,
        # 50 = List, 51 = Poster,52 = Lists, 53 = Shift, 54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
    'episodes': {
        'skin.confluence': 500,  # Media Info
        'skin.aeon.nox': 518,  # Infopanel
        'skin.droid': 50,  # List
        'skin.quartz': 52,  # Media info
        'skin.re-touched': 550,  # Wide
        'skin.estuary': 55.
        # 50 = List, 51 = Poster,52 = Lists,53 = Shift,54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
    'sets': {
        'skin.confluence': 500,  # List
        'skin.aeon.nox': 50,  # List
        'skin.droid': 50,  # List
        'skin.quartz': 50,  # List
        'skin.re-touched': 50,  # List
        'skin.estuary': 55,
        # 50 = List, 51 = Poster,52 = Lists,53 = Shift,54 = InfoWall  55 = Wide list, 500 = Wall,501= List, 502 = Fanart
    },
}


def set_view(view_mode, view_code=0):
    if get_setting('auto-view') == 'true':
        try:
            # Set the content for extended library views if needed
            xbmcplugin.setContent(int(sys.argv[1]), view_mode)
            if view_mode == MOVIES:
                xbmcplugin.setContent(int(sys.argv[1]), "movies")
            elif view_mode == TV_SHOWS:
                xbmcplugin.setContent(int(sys.argv[1]), "tvshows")
            elif view_mode == SEASONS:
                xbmcplugin.setContent(int(sys.argv[1]), "seasons")
            elif view_mode == EPISODES:
                xbmcplugin.setContent(int(sys.argv[1]), "episodes")
            elif view_mode == THUMBNAIL:
                xbmcplugin.setContent(int(sys.argv[1]), "thumbnail")
            elif view_mode == LIST:
                xbmcplugin.setContent(int(sys.argv[1]), "list")
            elif view_mode == SETS:
                xbmcplugin.setContent(int(sys.argv[1]), "sets")
        except:
            pass
        skin_name = xbmc.getSkinDir()  # Reads skin name
        try:
            if view_code == 0:
                view_codes = ALL_VIEW_CODES.get(view_mode)
                # kodi.log(view_codes)
                view_code = view_codes.get(skin_name)
                # kodi.log(view_code)
                xbmc.executebuiltin("Container.SetViewMode(" + str(view_code) + ")")
            # kodi.log("Setting First view code "+str(view_code)+" for view mode "+str(view_mode)+" and skin "+skin_name)
            else:
                xbmc.executebuiltin("Container.SetViewMode(" + str(view_code) + ")")
            # kodi.log("Setting Second view code for view mode "+str(view_mode)+" and skin "+skin_name)
        except:
            # kodi.log("Unable to find view code "+str(view_code)+" for view mode "+str(view_mode)+" and skin "+skin_name)
            pass
        # else:
        # 	xbmc.executebuiltin("Container.SetViewMode(sets)")