From d1785e186389c629aa22528e2529203cedb2db3a Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Sat, 25 Feb 2017 11:58:39 +0100 Subject: [PATCH] Reorganize menus * Replace "home" (exit) menu with hamburger * Discard pokeball and put items in hamburger * Introduce search menu in reader Cf. #2562 --- .../apps/filemanager/filemanagerhistory.lua | 4 +- frontend/apps/filemanager/filemanagermenu.lua | 86 +++++------ .../apps/reader/modules/readerdictionary.lua | 2 +- frontend/apps/reader/modules/readermenu.lua | 48 ++++--- frontend/apps/reader/modules/readersearch.lua | 2 +- frontend/apps/reader/modules/readerstatus.lua | 2 +- .../apps/reader/modules/readerwikipedia.lua | 2 +- frontend/ui/widget/touchmenu.lua | 5 + resources/icons/menu-icon.png | Bin 0 -> 772 bytes resources/icons/src/menu-icon-license.txt | 3 + resources/icons/src/menu-icon.svg | 136 ++++++++++++++++++ 11 files changed, 214 insertions(+), 76 deletions(-) create mode 100644 resources/icons/menu-icon.png create mode 100644 resources/icons/src/menu-icon-license.txt create mode 100644 resources/icons/src/menu-icon.svg diff --git a/frontend/apps/filemanager/filemanagerhistory.lua b/frontend/apps/filemanager/filemanagerhistory.lua index eba8869a0..9b2dca339 100644 --- a/frontend/apps/filemanager/filemanagerhistory.lua +++ b/frontend/apps/filemanager/filemanagerhistory.lua @@ -20,8 +20,8 @@ function FileManagerHistory:init() end function FileManagerHistory:addToMainMenu(tab_item_table) - -- insert table to info tab of filemanager menu - table.insert(tab_item_table.info, { + -- insert table to main tab of filemanager menu + table.insert(tab_item_table.main, { text = self.hist_menu_title, callback = function() self:onShowHist() diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 620cda508..9c0283f6a 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -24,31 +24,14 @@ function FileManagerMenu:init() setting = { icon = "resources/icons/appbar.settings.png", }, - info = { - icon = "resources/icons/appbar.pokeball.png", - }, tools = { icon = "resources/icons/appbar.tools.png", }, search = { icon = "resources/icons/appbar.magnify.browse.png", }, - home = { - icon = "resources/icons/appbar.home.png", - callback = function() - if SetDefaults.settings_changed then - SetDefaults.settings_changed = false - UIManager:show(ConfirmBox:new{ - text = _("You have unsaved default settings. Save them now?"), - ok_callback = function() - SetDefaults:saveSettings() - end, - }) - else - UIManager:close(self.menu_container) - self.ui:onClose() - end - end, + main = { + icon = "resources/icons/menu-icon.png", }, } -- For backward compatibility, plugins look for plugins tab, which should be tools tab in file @@ -172,28 +155,6 @@ function FileManagerMenu:setUpdateItemTable() table.insert(self.tab_item_table.setting, common_setting) end - -- info tab - -- insert common info - table.insert(self.tab_item_table.info, { - text = _("Open last document"), - callback = function() - local last_file = G_reader_settings:readSetting("lastfile") - if not last_file or lfs.attributes(last_file, "mode") ~= "file" then - local InfoMessage = require("ui/widget/infomessage") - UIManager:show(InfoMessage:new{ - text = _("Cannot open last document"), - }) - return - end - local ReaderUI = require("apps/reader/readerui") - ReaderUI:showReader(last_file) - self:onCloseFileManagerMenu() - end - }) - for i, common_setting in ipairs(require("ui/elements/common_info_menu_table")) do - table.insert(self.tab_item_table.info, common_setting) - end - -- tools tab table.insert(self.tab_item_table.tools, { text = _("Advanced settings"), @@ -274,14 +235,44 @@ function FileManagerMenu:setUpdateItemTable() end }) - -- home tab - table.insert(self.tab_item_table.home, { - text = _("Exit"), + -- main menu tab + -- insert common info + table.insert(self.tab_item_table.main, { + text = _("Open last document"), callback = function() - UIManager:close(self.menu_container) - self.ui:onClose() + local last_file = G_reader_settings:readSetting("lastfile") + if not last_file or lfs.attributes(last_file, "mode") ~= "file" then + local InfoMessage = require("ui/widget/infomessage") + UIManager:show(InfoMessage:new{ + text = _("Cannot open last document"), + }) + return + end + local ReaderUI = require("apps/reader/readerui") + ReaderUI:showReader(last_file) + self:onCloseFileManagerMenu() end }) + for i, common_setting in ipairs(require("ui/elements/common_info_menu_table")) do + table.insert(self.tab_item_table.main, common_setting) + end + table.insert(self.tab_item_table.main, { + text = _("Exit"), + callback = function() + if SetDefaults.settings_changed then + SetDefaults.settings_changed = false + UIManager:show(ConfirmBox:new{ + text = _("You have unsaved default settings. Save them now?"), + ok_callback = function() + SetDefaults:saveSettings() + end, + }) + else + UIManager:close(self.menu_container) + self.ui:onClose() + end + end, + }) end function FileManagerMenu:onShowMenu() @@ -303,10 +294,9 @@ function FileManagerMenu:onShowMenu() last_index = tab_index, tab_item_table = { self.tab_item_table.setting, - self.tab_item_table.info, self.tab_item_table.tools, self.tab_item_table.search, - self.tab_item_table.home, + self.tab_item_table.main, }, show_parent = menu_container, } diff --git a/frontend/apps/reader/modules/readerdictionary.lua b/frontend/apps/reader/modules/readerdictionary.lua index cc6f5bafe..f5f3256b8 100644 --- a/frontend/apps/reader/modules/readerdictionary.lua +++ b/frontend/apps/reader/modules/readerdictionary.lua @@ -24,7 +24,7 @@ function ReaderDictionary:init() end function ReaderDictionary:addToMainMenu(tab_item_table) - table.insert(tab_item_table.plugins, { + table.insert(tab_item_table.search, { text = _("Dictionary lookup"), tap_input = { title = _("Enter a word to look up"), diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 1cc161794..7142047d8 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -23,12 +23,12 @@ function ReaderMenu:init() setting = { icon = "resources/icons/appbar.settings.png", }, - info = { - icon = "resources/icons/appbar.pokeball.png", - }, plugins = { icon = "resources/icons/appbar.tools.png", }, + search = { + icon = "resources/icons/appbar.magnify.browse.png", + }, filemanager = { icon = "resources/icons/appbar.cabinet.files.png", remember = false, @@ -48,17 +48,8 @@ function ReaderMenu:init() end end, }, - home = { - icon = "resources/icons/appbar.home.png", - remember = false, - callback = function() - self:onTapCloseMenu() - UIManager:scheduleIn(0.1, function() self.ui:onClose() end) - local FileManager = require("apps/filemanager/filemanager") - if FileManager.instance then - FileManager.instance:onClose() - end - end, + main = { + icon = "resources/icons/menu-icon.png", }, } self.registered_widgets = {} @@ -114,12 +105,6 @@ function ReaderMenu:setUpdateItemTable() self.view:getRenderModeMenuTable()) end - -- info tab - -- insert common info - for i, common_setting in ipairs(require("ui/elements/common_info_menu_table")) do - table.insert(self.tab_item_table.info, common_setting) - end - if Device:isKobo() and Screensaver:isUsingBookCover() then local excluded = function() return self.ui.doc_settings:readSetting("exclude_screensaver") or false @@ -158,6 +143,25 @@ function ReaderMenu:setUpdateItemTable() } }) end + + -- main menu tab + -- insert common info + for i, common_setting in ipairs(require("ui/elements/common_info_menu_table")) do + table.insert(self.tab_item_table.main, common_setting) + end + + table.insert(self.tab_item_table.main, { + text = _("Exit"), + callback = function() + self:onTapCloseMenu() + UIManager:scheduleIn(0.1, function() self.ui:onClose() end) + local FileManager = require("apps/filemanager/filemanager") + if FileManager.instance then + FileManager.instance:onClose() + end + end, + }) + end function ReaderMenu:onShowReaderMenu() @@ -180,10 +184,10 @@ function ReaderMenu:onShowReaderMenu() self.tab_item_table.navi, self.tab_item_table.typeset, self.tab_item_table.setting, - self.tab_item_table.info, self.tab_item_table.plugins, + self.tab_item_table.search, self.tab_item_table.filemanager, - self.tab_item_table.home, + self.tab_item_table.main, }, show_parent = menu_container, } diff --git a/frontend/apps/reader/modules/readersearch.lua b/frontend/apps/reader/modules/readersearch.lua index 6bc12486e..44b84ba9d 100644 --- a/frontend/apps/reader/modules/readersearch.lua +++ b/frontend/apps/reader/modules/readersearch.lua @@ -14,7 +14,7 @@ function ReaderSearch:init() end function ReaderSearch:addToMainMenu(tab_item_table) - table.insert(tab_item_table.plugins, { + table.insert(tab_item_table.search, { text = _("Fulltext search"), tap_input = { title = _("Input text to search for"), diff --git a/frontend/apps/reader/modules/readerstatus.lua b/frontend/apps/reader/modules/readerstatus.lua index 6f9d2cfd7..8ec09b2db 100644 --- a/frontend/apps/reader/modules/readerstatus.lua +++ b/frontend/apps/reader/modules/readerstatus.lua @@ -33,7 +33,7 @@ function ReaderStatus:init() end function ReaderStatus:addToMainMenu(tab_item_table) - table.insert(tab_item_table.info, { + table.insert(tab_item_table.main, { text = _("Book status"), callback = function() self:showStatus() diff --git a/frontend/apps/reader/modules/readerwikipedia.lua b/frontend/apps/reader/modules/readerwikipedia.lua index 8b97473e7..3962040f9 100644 --- a/frontend/apps/reader/modules/readerwikipedia.lua +++ b/frontend/apps/reader/modules/readerwikipedia.lua @@ -49,7 +49,7 @@ function ReaderWikipedia:lookupInput() end function ReaderWikipedia:addToMainMenu(tab_item_table) - table.insert(tab_item_table.plugins, { + table.insert(tab_item_table.search, { text = _("Wikipedia lookup"), callback = function() if NetworkMgr:isOnline() then diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index 75954749a..c5888c344 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -244,6 +244,11 @@ function TouchMenuBar:init() end function TouchMenuBar:switchToTab(index) + -- a little safety check + -- don't auto-activate a non-existent index + if index > #self.icon_buttons then + index = 1 + end self.icon_buttons[index].callback() end diff --git a/resources/icons/menu-icon.png b/resources/icons/menu-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ba416c2b9caae64909cb56b54c705cc1ba02729c GIT binary patch literal 772 zcma)2T}TvB6u!19YW|c|=qhrP$VA-PwG0izRaf0L6ww7&F=}@9>Rfhb?sVslqZPD7 z4`vEIR7hC}QBk20_0Y?fLRf?k(Vs@qi$wWQ3Jd)pLU*=@>a7ds9?m)6`ObIF>Grnf ztPFbw03gff^>lFWwk$1`|F`gw58Nf|^*(>N~Jf&7?75b%mh(4hT@!dOwxmb`t_%(v+cw4>#% zLykV&Y|K}J7b(X`Z0>@0c+}>Oj|@M^jbBfZGu<1X=S8`LVlV89@k0P#W1DBX{_x3PS@#r@ literal 0 HcmV?d00001 diff --git a/resources/icons/src/menu-icon-license.txt b/resources/icons/src/menu-icon-license.txt new file mode 100644 index 000000000..42657e5e0 --- /dev/null +++ b/resources/icons/src/menu-icon-license.txt @@ -0,0 +1,3 @@ +Creative Commons Zero 1.0 Public Domain License + +Based on: https://openclipart.org/detail/221605/hamburger-menu-icon diff --git a/resources/icons/src/menu-icon.svg b/resources/icons/src/menu-icon.svg new file mode 100644 index 000000000..a935a7ada --- /dev/null +++ b/resources/icons/src/menu-icon.svg @@ -0,0 +1,136 @@ + + + + + Hamburger (Menu) Icon + + + + + + image/svg+xml + + Hamburger (Menu) Icon + 2015-06-29 + + + Daniel Fowler + + + + + Public Domain + + + + + openclipart.org + + + en-GB + + + icon + menu + hamburger + basic + simple + black + white + lines + rounded + open + close + norm + cox + star + xerox + + + + A simple and basic hamburger (menu) icon. It originates from Xerox "Star" workstations of the 1980's but is now popular to hide/show menus on mobile devices. + + + Norm Cox + + + + + + + + + + + + + + + +