diff options
Diffstat (limited to 'main.lua')
-rw-r--r-- | main.lua | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -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) |