def get_sorted_menu(plugin, menu_id): # The current menu to build contains # all the items present in the 'menu_id' # skeleton file current_menu = importlib.import_module('resources.lib.skeletons.' + menu_id).menu # Notify user for the new M3U Live TV feature if menu_id == "live_tv" and \ cqu.get_kodi_version() >= 18 and \ plugin.setting.get_boolean('show_live_tv_m3u_info'): r = xbmcgui.Dialog().yesno(plugin.localize(LABELS['Information']), plugin.localize(30605), plugin.localize(30606)) if not r: plugin.setting['show_live_tv_m3u_info'] = False # Keep in memory the first menu taken # in order to provide a prefix when the user # add a favourite fav.guess_fav_prefix(menu_id) # First, we have to sort the current menu items # according to each item order and we have # to hide each disabled item menu = [] for item_id, item_infos in current_menu.items(): add_item = True # If the item is enable if not Script.setting.get_boolean(item_id): add_item = False # If the desired language is not avaible if 'available_languages' in item_infos: desired_language = utils.ensure_unicode( Script.setting[item_id + '.language']) if desired_language not in item_infos['available_languages']: add_item = False if add_item: # Get order value in settings file item_order = Script.setting.get_int(item_id + '.order') item = (item_order, item_id, item_infos) menu.append(item) # We sort the menu according to the item_order values return sorted(menu, key=lambda x: x[0])
def get_sorted_menu(plugin, menu_id): """Get ordered 'menu_id' menu without disabled and hidden items Args: plugin (codequick.script.Script) menu_id (str): Menu to get (e.g. root) Returns: list<tuple> List of items (item_order, item_id, item_infos) """ # The current menu to build contains # all the items present in the 'menu_id' # skeleton file current_menu = importlib.import_module('resources.lib.skeletons.' + menu_id).menu # Notify user for the new M3U Live TV feature if menu_id == "live_tv" and \ get_kodi_version() >= 18 and \ plugin.setting.get_boolean('show_live_tv_m3u_info'): r = xbmcgui.Dialog().yesno(plugin.localize(30600), plugin.localize(30605), plugin.localize(30606)) if not r: plugin.setting['show_live_tv_m3u_info'] = False # Keep in memory the first menu taken # in order to provide a prefix when the user # add a favourite fav.guess_fav_prefix(menu_id) # First, we have to sort the current menu items # according to each item order and we have # to hide each disabled item menu = [] for item_id, item_infos in list(current_menu.items()): add_item = True # If the item is disabled in skeleton file # (e.g. if a channel is not available anymore) if item_infos['enabled'] is False: add_item = False # If the item is hidden by the user setting if is_item_hidden(item_id, menu_id): add_item = False # If the desired language is not available if 'available_languages' in item_infos: desired_language = utils.ensure_unicode(Script.setting[item_id + '.language']) if desired_language not in item_infos['available_languages']: add_item = False if add_item: item_order = get_item_order(item_id, menu_id, item_infos) item = (item_order, item_id, item_infos) menu.append(item) # We sort the menu according to the item_order values return sorted(menu, key=lambda x: x[0])