import xbmcgui

from lib.libs.pykodi import localize as L

ACTION_SELECTSERIES = 32400

# TODO: Don't use 'imdbnumber'

class SeriesSelector(xbmcgui.WindowXMLDialog):
    def __init__(self, *args, **kwargs):
        super(SeriesSelector, self).__init__(args, kwargs)
        self.serieslist = kwargs.get('serieslist')
        self.originalselected = kwargs.get('selected', [])
        self.selected = []
        self.guilist = None

    def prompt(self):
        self.doModal()
        return self.selected

    def onInit(self):
        self.getControl(1).setLabel(L(ACTION_SELECTSERIES))
        self.getControl(3).setVisible(False)
        self.getControl(5).setVisible(True)
        self.getControl(5).setLabel('$LOCALIZE[186]')
        self.guilist = self.getControl(6)
        self.guilist.setVisible(True)

        for series in self.serieslist:
            listitem = xbmcgui.ListItem(series['label'])
            summary = str(series['year']) + ' - ' + series['plot']
            listitem.setLabel2(summary)
            # DEPRECATED: Above Krypton and higher (only), below Jarvis and lower (only)
            listitem.setProperty('Addon.Summary', summary)
            listitem.setProperty('imdbnumber', series['imdbnumber'])
            art = series['art']
            if 'poster' in series['art']:
                art['thumb'] = series['art']['poster']
            listitem.setArt(art)
            if series['imdbnumber'] in self.originalselected:
                listitem.select(True)
                self.selected.append(series['imdbnumber'])
            self.guilist.addItem(listitem)
        self.originalselected = list(self.selected)
        self.setFocus(self.guilist)

    def onClick(self, controlid):
        if controlid == 6:
            item = self.guilist.getSelectedItem()
            if item.isSelected():
                item.select(False)
                self.selected.remove(item.getProperty('imdbnumber'))
            else:
                item.select(True)
                self.selected.append(item.getProperty('imdbnumber'))
        elif controlid == 5:
            self.close()
        elif controlid == 7:
            self.selected = self.originalselected
            self.close()

    def onAction(self, action):
        if action.getId() in (xbmcgui.ACTION_NAV_BACK, xbmcgui.ACTION_PREVIOUS_MENU):
            self.selected = self.originalselected
            self.close()