From eae257540953e92288028ae7c75716d9ac519166 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Thu, 15 May 2025 10:08:37 -0700 Subject: add ability to sort menus --- main.lua | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'main.lua') diff --git a/main.lua b/main.lua index a15c795..4b3e168 100644 --- a/main.lua +++ b/main.lua @@ -474,6 +474,52 @@ local function push_menu(t) menus[depth] = menu end +local function sort_options(options) + table.sort(options, function(a, b) + local a_name = a.name + local b_name = b.name + + if a.type == 'group' then + a_name = '\0' .. a_name + if a.id == 'favourites' then + a_name = '\0' .. a_name + end + end + + if b.type == 'group' then + b_name = '\0' .. b_name + if b.id == 'favourites' then + b_name = '\0' .. b_name + end + end + + return a_name < b_name + end) +end + +local function toggle_menu_sort() + local menu = menus[depth] + + if not menu.sorted_options then + menu.orig_options = menu.options + menu.sorted_options = copy_table(menu.options) + sort_options(menu.sorted_options) + + if menu.search_options then + menu.orig_search_options = menu.search_options + menu.sorted_search_options = copy_table( + menu.search_options) + sort_options(menu.sorted_search_options) + end + end + + menu.sorted = not menu.sorted + menu.options = menu.sorted and menu.sorted_options or menu.orig_options + menu.search_options = menu.sorted and menu.sorted_search_options or + menu.orig_search_options + update_osd() +end + local function epg_programme(channel, time) local progs = epg[channel] if not progs then @@ -958,6 +1004,7 @@ function bind_menu_keys() bind_key('BS', prev_menu) bind_key('/', start_search) + bind_key('Ctrl+s', toggle_menu_sort) bind_key('ENTER', select_option) bind_key('Ctrl+f', favourite_option) -- cgit v1.2.3-70-g09d2