From 95ac27df5ceaf5fdab0e5de6fede7785c9c61865 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 11 Nov 2014 10:06:17 +0800 Subject: [PATCH] remember menu tab index when showing reader menu --- frontend/apps/reader/modules/readermenu.lua | 14 +++++++++++++- frontend/ui/widget/touchmenu.lua | 12 +++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 79233c02a..81717bd92 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -38,9 +38,10 @@ function ReaderMenu:init() }, filemanager = { icon = "resources/icons/appbar.cabinet.files.png", + remember = false, callback = function() - self.ui:onClose() self:onTapCloseMenu() + self.ui:onClose() -- screen orientation is independent for docview and filemanager -- so we need to restore the screen mode for the filemanager local FileManager = require("apps/filemanager/filemanager") @@ -52,7 +53,9 @@ function ReaderMenu:init() }, home = { icon = "resources/icons/appbar.home.png", + remember = false, callback = function() + self:onTapCloseMenu() self.ui:onClose() UIManager:quit() end, @@ -187,6 +190,7 @@ function ReaderMenu:onShowReaderMenu() local TouchMenu = require("ui/widget/touchmenu") main_menu = TouchMenu:new{ width = Screen:getWidth(), + last_index = self.last_tab_index, tab_item_table = { self.tab_item_table.navi, self.tab_item_table.typeset, @@ -225,6 +229,9 @@ function ReaderMenu:onShowReaderMenu() end function ReaderMenu:onCloseReaderMenu() + self.last_tab_index = self.menu_container[1].last_index + DEBUG("remember menu tab index", self.last_tab_index) + self:onSaveSettings() UIManager:close(self.menu_container) return true end @@ -247,7 +254,12 @@ function ReaderMenu:onSetDimensions(dimen) end end +function ReaderMenu:onReadSettings(config) + self.last_tab_index = config:readSetting("menu_tab_index") or 1 +end + function ReaderMenu:onSaveSettings() + self.ui.doc_settings:saveSetting("menu_tab_index", self.last_tab_index) end function ReaderMenu:registerToMainMenu(widget) diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index 501ccc557..10027b3bc 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -151,6 +151,8 @@ function TouchMenuBar:init() self.icon_widgets = {} -- hold icon seperators self.icon_seps = {} + -- hold all icon buttons + self.icon_buttons = {} -- the start_seg for first icon_widget should be 0 -- we asign negative here to offset it in the loop local start_seg = -icon_sep_width @@ -166,6 +168,8 @@ function TouchMenuBar:init() spacing, ib, spacing, }) + table.insert(self.icon_buttons, ib) + -- we have to use local variable here for closure callback local _start_seg = end_seg + icon_sep_width local _end_seg = _start_seg + self.icon_widgets[k]:getSize().w @@ -228,6 +232,9 @@ function TouchMenuBar:init() self.dimen = Geom:new{ w = self.width, h = self.height } end +function TouchMenuBar:switchToTab(index) + self.icon_buttons[index].callback() +end --[[ TouchMenu widget for hierarchical menus @@ -371,7 +378,7 @@ function TouchMenu:init() self.item_group, } - self:switchMenuTab(1) + self.bar:switchToTab(self.last_index or 1) self:updateItems() end @@ -465,6 +472,9 @@ function TouchMenu:netToggle() end function TouchMenu:switchMenuTab(tab_num) + if self.tab_item_table[tab_num].remember ~= false then + self.last_index = tab_num + end if self.touch_menu_callback then self.touch_menu_callback() end