From da00b4b8a93a1e86e421417b6fdd9ea2af993044 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Fri, 21 Nov 2014 15:41:14 +0100 Subject: [PATCH] Refactored menu While looking into #1219 I accidentally ended up refactoring some stuff. Tested in emulator and on H2O, but be wary because I might have overlooked something. --- frontend/apps/filemanager/filemanagermenu.lua | 59 +++------------- .../apps/reader/modules/readerfrontlight.lua | 13 +--- frontend/apps/reader/modules/readermenu.lua | 70 ++++--------------- .../ui/elements/common_info_menu_table.lua | 29 ++++++++ .../elements/common_settings_menu_table.lua | 53 ++++++++++++++ 5 files changed, 106 insertions(+), 118 deletions(-) create mode 100644 frontend/ui/elements/common_info_menu_table.lua create mode 100644 frontend/ui/elements/common_settings_menu_table.lua diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 7721c30e5..7cad27ee7 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -1,18 +1,13 @@ local CenterContainer = require("ui/widget/container/centercontainer") local InputContainer = require("ui/widget/container/inputcontainer") local ConfirmBox = require("ui/widget/confirmbox") -local InfoMessage = require("ui/widget/infomessage") -local NetworkMgr = require("ui/networkmgr") -local OTAManager = require("ui/otamanager") local UIManager = require("ui/uimanager") local Device = require("device") local GestureRange = require("ui/gesturerange") local Geom = require("ui/geometry") local Screen = require("device").screen -local Language = require("ui/language") local DEBUG = require("dbg") local _ = require("gettext") -local ReaderFrontLight = require("apps/reader/modules/readerfrontlight") local FileSearcher = require("apps/filemanager/filemanagerfilesearcher") local Search = require("apps/filemanager/filemanagersearch") local SetDefaults = require("apps/filemanager/filemanagersetdefaults") @@ -116,56 +111,20 @@ function FileManagerMenu:setUpdateItemTable() G_reader_settings:saveSetting("open_last", not open_last) end }) - if Device:hasFrontlight() then - ReaderFrontLight:addToMainMenu(self.tab_item_table) + -- insert common settings + for i, common_setting in ipairs(require("ui/elements/common_settings_menu_table")) do + table.insert(self.tab_item_table.setting, common_setting) end - table.insert(self.tab_item_table.setting, { - text = _("Screen settings"), - sub_item_table = { - require("ui/elements/screen_dpi_menu_table"), - UIManager:getRefreshMenuTable(), - }, - }) - table.insert(self.tab_item_table.setting, { - text = _("Network settings"), - sub_item_table = { - NetworkMgr:getWifiMenuTable(), - NetworkMgr:getProxyMenuTable(), - } - }) - table.insert(self.tab_item_table.setting, { - text = _("Night mode"), - checked_func = function() return G_reader_settings:readSetting("night_mode") end, - callback = function() - local night_mode = G_reader_settings:readSetting("night_mode") or false - Screen:toggleNightMode() - G_reader_settings:saveSetting("night_mode", not night_mode) - end - }) - table.insert(self.tab_item_table.setting, Language:getLangMenuTable()) + -- info tab - if Device:isKindle() or Device:isKobo() then - table.insert(self.tab_item_table.info, OTAManager:getOTAMenuTable()) + -- 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 - table.insert(self.tab_item_table.info, { - text = _("Version"), - callback = function() - UIManager:show(InfoMessage:new{ - text = io.open("git-rev", "r"):read(), - }) - end - }) - table.insert(self.tab_item_table.info, { - text = _("Help"), - callback = function() - UIManager:show(InfoMessage:new{ - text = _("Please report bugs to \nhttps://github.com/koreader/koreader/issues"), - }) - end - }) + -- tools tab table.insert(self.tab_item_table.tools, { - text = _("Set defaults"), + text = _("Change defaults file"), callback = function() SetDefaults:ConfirmEdit() end, diff --git a/frontend/apps/reader/modules/readerfrontlight.lua b/frontend/apps/reader/modules/readerfrontlight.lua index b6bfe347b..3a3370c67 100644 --- a/frontend/apps/reader/modules/readerfrontlight.lua +++ b/frontend/apps/reader/modules/readerfrontlight.lua @@ -34,7 +34,6 @@ function ReaderFrontLight:init() } }, } - self.ui.menu:registerToMainMenu(self) end end @@ -79,20 +78,10 @@ function ReaderFrontLight:onPanRelease(arg, ges) return self:onShowIntensity() end -function ReaderFrontLight:addToMainMenu(tab_item_table) - -- insert fldial command to setting tab of reader menu - table.insert(tab_item_table.setting, { - text = _("Frontlight settings"), - callback = function() - self:onShowFlDialog() - end, - }) -end - function ReaderFrontLight:onShowFlDialog() local powerd = Device:getPowerDevice() self.fl_dialog = InputDialog:new{ - title = _("Frontlight Level"), + title = _("Frontlight level"), input_hint = ("(%d - %d)"):format(powerd.fl_min, powerd.fl_max), buttons = { { diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 91f266cde..c19b75174 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -4,14 +4,11 @@ local InfoMessage = require("ui/widget/infomessage") local InputDialog = require("ui/widget/inputdialog") local ConfirmBox = require("ui/widget/confirmbox") local GestureRange = require("ui/gesturerange") -local NetworkMgr = require("ui/networkmgr") -local OTAManager = require("ui/otamanager") local UIManager = require("ui/uimanager") local Device = require("device") local Geom = require("ui/geometry") local Event = require("ui/event") local Screen = require("device").screen -local Language = require("ui/language") local DEBUG = require("dbg") local _ = require("gettext") @@ -93,64 +90,25 @@ function ReaderMenu:setUpdateItemTable() widget:addToMainMenu(self.tab_item_table) end - -- setting tab - table.insert(self.tab_item_table.setting, { - text = _("Screen settings"), - sub_item_table = { - require("ui/elements/screen_dpi_menu_table"), - require("ui/elements/screen_eink_opt_menu_table"), - UIManager:getRefreshMenuTable(), - }, - }) - table.insert(self.tab_item_table.setting, { - text = _("Network settings"), - sub_item_table = { - NetworkMgr:getWifiMenuTable(), - NetworkMgr:getProxyMenuTable(), - } - }) - table.insert(self.tab_item_table.setting, { - text = _("Night mode"), - checked_func = function() return G_reader_settings:readSetting("night_mode") end, - callback = function() - local night_mode = G_reader_settings:readSetting("night_mode") or false - Screen:toggleNightMode() - G_reader_settings:saveSetting("night_mode", not night_mode) - end - }) - table.insert(self.tab_item_table.setting, Language:getLangMenuTable()) + -- settings tab + -- insert common settings + for i, common_setting in ipairs(require("ui/elements/common_settings_menu_table")) do + table.insert(self.tab_item_table.setting, common_setting) + end + -- insert DjVu render mode submenu just before the last entry (show advanced) + -- this is a bit of a hack if self.ui.document.is_djvu then - table.insert(self.tab_item_table.setting, self.view:getRenderModeMenuTable()) + table.insert( + self.tab_item_table.setting, + #self.tab_item_table.setting, + self.view:getRenderModeMenuTable()) end - table.insert(self.tab_item_table.setting, { - text = _("Show advanced options"), - checked_func = function() return G_reader_settings:readSetting("show_advanced") end, - callback = function() - local show_advanced = G_reader_settings:readSetting("show_advanced") or false - G_reader_settings:saveSetting("show_advanced", not show_advanced) - end - }) -- info tab - if Device:isKindle() or Device:isKobo() then - table.insert(self.tab_item_table.info, OTAManager:getOTAMenuTable()) + -- 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 - table.insert(self.tab_item_table.info, { - text = _("Version"), - callback = function() - UIManager:show(InfoMessage:new{ - text = io.open("git-rev", "r"):read(), - }) - end - }) - table.insert(self.tab_item_table.info, { - text = _("Help"), - callback = function() - UIManager:show(InfoMessage:new{ - text = _("Please report bugs to \nhttps://github.com/koreader/koreader/issues"), - }) - end - }) if Device:isKobo() and KOBO_SCREEN_SAVER_LAST_BOOK then local excluded = function() diff --git a/frontend/ui/elements/common_info_menu_table.lua b/frontend/ui/elements/common_info_menu_table.lua new file mode 100644 index 000000000..987abf4b0 --- /dev/null +++ b/frontend/ui/elements/common_info_menu_table.lua @@ -0,0 +1,29 @@ +local Device = require("device") +local InfoMessage = require("ui/widget/infomessage") +local UIManager = require("ui/uimanager") +local _ = require("gettext") + +local common_info = {} + +if Device:isKindle() or Device:isKobo() then + local OTAManager = require("ui/otamanager") + table.insert(common_info, OTAManager:getOTAMenuTable()) +end +table.insert(common_info, { + text = _("Version"), + callback = function() + UIManager:show(InfoMessage:new{ + text = io.open("git-rev", "r"):read(), + }) + end +}) +table.insert(common_info, { + text = _("Help"), + callback = function() + UIManager:show(InfoMessage:new{ + text = _("Please report bugs to \nhttps://github.com/koreader/koreader/issues"), + }) + end +}) + +return common_info diff --git a/frontend/ui/elements/common_settings_menu_table.lua b/frontend/ui/elements/common_settings_menu_table.lua new file mode 100644 index 000000000..f47859400 --- /dev/null +++ b/frontend/ui/elements/common_settings_menu_table.lua @@ -0,0 +1,53 @@ +local Device = require("device") +local Language = require("ui/language") +local NetworkMgr = require("ui/networkmgr") +local UIManager = require("ui/uimanager") +local Screen = require("device").screen +local _ = require("gettext") + +local common_settings = {} + +if Device:hasFrontlight() then + local ReaderFrontLight = require("apps/reader/modules/readerfrontlight") + table.insert(common_settings, { + text = _("Frontlight"), + callback = function() + ReaderFrontLight:onShowFlDialog() + end, + }) +end +table.insert(common_settings, { + text = _("Night mode"), + checked_func = function() return G_reader_settings:readSetting("night_mode") end, + callback = function() + local night_mode = G_reader_settings:readSetting("night_mode") or false + Screen:toggleNightMode() + G_reader_settings:saveSetting("night_mode", not night_mode) + end +}) +table.insert(common_settings, { + text = _("Network"), + sub_item_table = { + NetworkMgr:getWifiMenuTable(), + NetworkMgr:getProxyMenuTable(), + } +}) +table.insert(common_settings, { + text = _("Screen"), + sub_item_table = { + require("ui/elements/screen_dpi_menu_table"), + require("ui/elements/screen_eink_opt_menu_table"), + UIManager:getRefreshMenuTable(), + }, +}) +table.insert(common_settings, Language:getLangMenuTable()) +table.insert(common_settings, { + text = _("Show advanced options"), + checked_func = function() return G_reader_settings:readSetting("show_advanced") end, + callback = function() + local show_advanced = G_reader_settings:readSetting("show_advanced") or false + G_reader_settings:saveSetting("show_advanced", not show_advanced) + end +}) + +return common_settings