# -*- coding: utf-8 -*-
"""Direct edits use the same channel manager/history as MyTV and MyCinema."""
import xbmc
import xbmcaddon
import xbmcgui

from wcs.skin.context import builtin, text


def run(params):
    from wcs.ai.MediaChannelManager import MediaChannelManager
    kind = params.get('kind', 'tv')
    if kind not in ('tv', 'cinema'):
        return
    manager = MediaChannelManager(xbmcaddon.Addon(), channel_type=kind)
    channel = manager.get_channel_by_id(params.get('id'))
    if not channel:
        return
    op = params.get('op')
    if op == 'edit_channel':
        xbmc.executebuiltin(builtin({'action': 'my_cinema_dialog' if kind == 'cinema' else 'my_tv_dialog',
                                    'channel_id': channel.id, 'edit': '1', 'ctx': params.get('ctx', ''), 'ctxrow': params.get('ctxrow', '')}))
        return
    if op == 'rename_channel':
        name = xbmcgui.Dialog().input(text(32621), channel.name).strip()
        if name:
            manager.rename_channel(channel.id, name)
    elif op == 'move_channel':
        channels = manager.get_all_channels()
        index = xbmcgui.Dialog().select(text(32624), ['{}. {}'.format(i + 1, ch.name) for i, ch in enumerate(channels)],
                                        preselect=channels.index(channel))
        if index >= 0:
            manager.move_channel(channel.id, index)
    elif op == 'delete_channel' and xbmcgui.Dialog().yesno(text(32622), text(32627).format(channel.name)):
        from wcs.ai import ChannelHistory
        if manager.delete_channel(channel.id):
            ChannelHistory.delete_channel_history(channel.id, kind)
            if kind == 'tv':
                from wcs.caching import get_cache_manager
                cache = get_cache_manager()
                cache.delete('program_list_' + channel.id)
                cache.delete('program_reorder_' + channel.id)
    xbmc.executebuiltin('Container.Refresh')
