From 43c2c921941b61e9d29521e8a990425003e26362 Mon Sep 17 00:00:00 2001 From: onde2rock Date: Mon, 26 Mar 2018 19:41:50 +0200 Subject: [PATCH] [UX] FileManager: Tapplus access for non-touch devices (#3773) --- frontend/apps/filemanager/filemanagermenu.lua | 12 ++++++++++++ frontend/ui/elements/filemanager_menu_order.lua | 2 ++ frontend/ui/menusorter.lua | 11 ++++++++--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index eed7cc72e..d820c29d4 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -251,6 +251,18 @@ function FileManagerMenu:setUpdateItemTable() self:exitOrRestart(function() UIManager:restartKOReader() end) end, } + if not Device:isTouchDevice() then + --add a shortcut on non touch-device + --because this menu is not accessible otherwise + self.menu_items.plus_menu = { + icon = "resources/icons/appbar.plus.png", + remember = false, + callback = function() + self:onCloseFileManagerMenu() + self.ui:tapPlus() + end, + } + end local order = require("ui/elements/filemanager_menu_order") diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 263508e8e..d3b0d7ca6 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -3,6 +3,7 @@ local order = { "setting", "tools", "search", + "plus_menu", "main", }, setting = { @@ -88,6 +89,7 @@ local order = { "----------------------------", "about", }, + plus_menu = {}, exit_menu = { "restart_koreader", "----------------------------", diff --git a/frontend/ui/menusorter.lua b/frontend/ui/menusorter.lua index f975f271e..b2a4493c7 100644 --- a/frontend/ui/menusorter.lua +++ b/frontend/ui/menusorter.lua @@ -129,12 +129,17 @@ function MenuSorter:sort(item_table, order) end end end - -- @TODO avoid this extra mini-loop -- cleanup, top-level items shouldn't have sub_item_table + -- they should, however have one going in + local menu_buttons_offset = 0 for i,top_menu in ipairs(menu_table["KOMenu:menu_buttons"]) do - menu_table["KOMenu:menu_buttons"][i] = menu_table["KOMenu:menu_buttons"][i].sub_item_table + if menu_table["KOMenu:menu_buttons"][i].sub_item_table then + menu_table["KOMenu:menu_buttons"][i-menu_buttons_offset] = menu_table["KOMenu:menu_buttons"][i].sub_item_table + else + menu_table["KOMenu:menu_buttons"][i] = nil + menu_buttons_offset = menu_buttons_offset + 1 + end end - -- handle disabled if order["KOMenu:disabled"] then for _,item in ipairs(order["KOMenu:disabled"]) do