diff --git a/frontend/ui/menu.lua b/frontend/ui/menu.lua index 3f0a807c5..2d42b5bfd 100644 --- a/frontend/ui/menu.lua +++ b/frontend/ui/menu.lua @@ -173,7 +173,7 @@ end function MenuItem:onUnfocus() self._underline_container.color = 0 - self.key_events = { } + self.key_events = {} return true end @@ -327,14 +327,16 @@ function Menu:init() self.key_events.PrevPage = { {Input.group.PgBack}, doc = "goto previous page of the menu" } - -- we won't catch presses to "Right" + -- we won't catch presses to "Right", leave that to MenuItem. self.key_events.FocusRight = nil -- shortcut icon is not needed for touch device if self.is_enable_shortcut then self.key_events.SelectByShortCut = { {self.item_shortcuts} } end + self.key_events.Select = { + {"Press"}, doc = "select current menu item" + } end - self.key_events.Select = { {"Press"}, doc = "select current menu item"} if #self.item_table > 0 then diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index d19c55f83..939395f5a 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -1,6 +1,12 @@ -ReaderMenu = InputContainer:new{} +ReaderMenu = InputContainer:new{ + item_table = {}, + registered_widgets = {}, +} function ReaderMenu:init() + self.item_table = {} + self.registered_widgets = {} + if Device:isTouchDevice() then self.ges_events = { TapShowMenu = { @@ -27,10 +33,8 @@ function ReaderMenu:genSetZoomModeCallBack(mode) end end -function ReaderMenu:onShowMenu() - local item_table = {} - - table.insert(item_table, { +function ReaderMenu:setUpdateItemTable() + table.insert(self.item_table, { text = "Screen rotate", sub_item_table = { { @@ -53,7 +57,7 @@ function ReaderMenu:onShowMenu() }) if self.ui.document.info.has_pages then - table.insert(item_table, { + table.insert(self.item_table, { text = "Switch zoom mode", sub_item_table = { { @@ -82,26 +86,29 @@ function ReaderMenu:onShowMenu() }, } }) - else - table.insert(item_table, { - text = "Font menu", - callback = function() - self.ui:handleEvent(Event:new("ShowFontMenu")) - end - }) end - table.insert(item_table, { + for _, widget in pairs(self.registered_widgets) do + widget:addToMainMenu(self.item_table) + end + + table.insert(self.item_table, { text = "Return to file browser", callback = function() UIManager:close(self.menu_container) self.ui:onClose() end }) +end + +function ReaderMenu:onShowMenu() + if #self.item_table == 0 then + self:setUpdateItemTable() + end local main_menu = Menu:new{ title = "Document menu", - item_table = item_table, + item_table = self.item_table, width = Screen:getWidth() - 100, } function main_menu:onMenuChoice(item) @@ -131,7 +138,14 @@ function ReaderMenu:onTapShowMenu() end function ReaderMenu:onSetDimensions(dimen) - -- update gesture listenning range according to new screen orientation - self:init() + -- @TODO update gesture listenning range according to new screen + -- orientation 15.12 2012 (houqp) +end + +function ReaderMenu:onCloseDocument() +end + +function ReaderMenu:addToMainMenuCallback(widget) + table.insert(self.registered_widgets, widget) end