diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index cad6c584d..d75f72ca7 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -280,66 +280,7 @@ function FileManagerMenu:setUpdateItemTable() end, } - local order = { - ["KOMenu:menu_buttons"] = { - "setting", - "tools", - "search", - "main", - }, - ["setting"] = { - "show_hidden_files", - "----------------------------", - "sort_by", - "reverse_sorting", - "----------------------------", - "start_with_last_opened_file", - "screensaver", - "----------------------------", - -- common settings - -- those that don't exist will simply be skipped during menu gen - "frontlight", -- if Device:hasFrontlight() - "night_mode", - "----------------------------", - "network", - "screen", - "save_document", - "----------------------------", - "language", - "----------------------------", - "show_advanced_options", - -- end common settings - }, - ["tools"] = { - "calibre_wireless_connection", - "evernote", - "goodreads", - "keep_alive", - "statistics", - "storage_stat", - "cloud_storage", - "----------------------------", - "advanced_settings", - "developer_options", - }, - ["search"] = { - "dictionary_lookup", - "find_book_in_calibre_catalog", - "find_file", - "----------------------------", - "opds_catalog", - }, - ["main"] = { - "history", - "open_last_document", - "----------------------------", - "ota_update", -- if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() - "version", - "help", - "----------------------------", - "exit", - }, - } + local order = require("ui/elements/filemanager_menu_order") local MenuSorter = require("frontend/ui/menusorter") self.tab_item_table = MenuSorter:sort(self.menu_items, order, "filemanager") @@ -347,7 +288,7 @@ end function FileManagerMenu:onShowMenu() local tab_index = G_reader_settings:readSetting("filemanagermenu_tab_index") or 1 - if #self.menu_items.setting == 0 then + if self.tab_item_table == nil then self:setUpdateItemTable() end diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 00b9f054a..1f20f7c6c 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -165,86 +165,14 @@ function ReaderMenu:setUpdateItemTable() end, } - local order = { - ["KOMenu:menu_buttons"] = { - "navi", - "typeset", - "setting", - "tools", - "search", - "filemanager", - "main", - }, - ["navi"] = { - "table_of_contents", - "bookmarks", - "go_to", - "skim_to", - "follow_links", - }, - ["typeset"] = { - "page_overlap", - "switch_zoom_mode", - "set_render_style", - "floating_punctuation", - "highlight_options", - "change_font", - "hyphenation", - }, - ["setting"] = { - "read_from_right_to_left", - -- common settings - -- those that don't exist will simply be skipped during menu gen - "frontlight", -- if Device:hasFrontlight() - "night_mode", - "----------------------------", - "network", - "screen", - "screensaver", - "save_document", - "----------------------------", - "language", - "----------------------------", - "djvu_render_mode", - "status_bar", - "show_advanced_options", - }, - ["tools"] = { - "calibre_wireless_connection", - "evernote", - "goodreads", - "keep_alive", - "statistics", - "storage_stat", - "speed_reading_module_perception_expander", - "synchronize_time", - "progress_sync", - "zsync", - }, - ["search"] = { - "dictionary_lookup", - "wikipedia_lookup", - "fulltext_search", - }, - ["filemanager"] = {}, - ["main"] = { - "history", - "book_status", - "----------------------------", - "ota_update", -- if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() - "version", - "help", - "----------------------------", - "exit", - }, - } + local order = require("frontend/ui/elements/reader_menu_order") local MenuSorter = require("frontend/ui/menusorter") self.tab_item_table = MenuSorter:sort(self.menu_items, order, "reader") end function ReaderMenu:onShowReaderMenu() - if #self.menu_items.setting == 0 then + if self.tab_item_table == nil then self:setUpdateItemTable() end diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua new file mode 100644 index 000000000..39d9959e5 --- /dev/null +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -0,0 +1,62 @@ +local order = { + ["KOMenu:menu_buttons"] = { + "setting", + "tools", + "search", + "main", + }, + setting = { + "show_hidden_files", + "----------------------------", + "sort_by", + "reverse_sorting", + "----------------------------", + "start_with_last_opened_file", + "screensaver", + "----------------------------", + -- common settings + -- those that don't exist will simply be skipped during menu gen + "frontlight", -- if Device:hasFrontlight() + "night_mode", + "----------------------------", + "network", + "screen", + "save_document", + "----------------------------", + "language", + "----------------------------", + "show_advanced_options", + -- end common settings + }, + tools = { + "calibre_wireless_connection", + "evernote", + "goodreads", + "keep_alive", + "statistics", + "storage_stat", + "cloud_storage", + "----------------------------", + "advanced_settings", + "developer_options", + }, + search = { + "dictionary_lookup", + "find_book_in_calibre_catalog", + "find_file", + "----------------------------", + "opds_catalog", + }, + main = { + "history", + "open_last_document", + "----------------------------", + "ota_update", -- if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() + "version", + "help", + "----------------------------", + "exit", + }, +} + +return order diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua new file mode 100644 index 000000000..8a2d9fad0 --- /dev/null +++ b/frontend/ui/elements/reader_menu_order.lua @@ -0,0 +1,75 @@ +local order = { + ["KOMenu:menu_buttons"] = { + "navi", + "typeset", + "setting", + "tools", + "search", + "filemanager", + "main", + }, + navi = { + "table_of_contents", + "bookmarks", + "go_to", + "skim_to", + "follow_links", + }, + typeset = { + "page_overlap", + "switch_zoom_mode", + "set_render_style", + "floating_punctuation", + "highlight_options", + "change_font", + "hyphenation", + }, + setting = { + "read_from_right_to_left", + -- common settings + -- those that don't exist will simply be skipped during menu gen + "frontlight", -- if Device:hasFrontlight() + "night_mode", + "----------------------------", + "network", + "screen", + "screensaver", + "save_document", + "----------------------------", + "language", + "----------------------------", + "djvu_render_mode", + "status_bar", + "show_advanced_options", + }, + tools = { + "calibre_wireless_connection", + "evernote", + "goodreads", + "keep_alive", + "statistics", + "storage_stat", + "speed_reading_module_perception_expander", + "synchronize_time", + "progress_sync", + "zsync", + }, + search = { + "dictionary_lookup", + "wikipedia_lookup", + "fulltext_search", + }, + filemanager = {}, + main = { + "history", + "book_status", + "----------------------------", + "ota_update", -- if Device:isKindle() or Device:isKobo() or Device:isPocketBook() or Device:isAndroid() + "version", + "help", + "----------------------------", + "exit", + }, +} + +return order diff --git a/spec/unit/menusorter_spec.lua b/spec/unit/menusorter_spec.lua index faf2469f0..4357a8384 100644 --- a/spec/unit/menusorter_spec.lua +++ b/spec/unit/menusorter_spec.lua @@ -85,5 +85,8 @@ describe("MenuSorter module", function() end) it("should compress menus when items from order are missing", function() + end) + it("should allow for attaching menu items multiple times", function() + end) end)