diff --git a/frontend/ui/reader/readerbookmark.lua b/frontend/ui/reader/readerbookmark.lua index 0942fcd65..8dc05530e 100644 --- a/frontend/ui/reader/readerbookmark.lua +++ b/frontend/ui/reader/readerbookmark.lua @@ -119,9 +119,9 @@ function ReaderBookmark:onShowBookmark() return true end -function ReaderBookmark:addToMainMenu(item_table) +function ReaderBookmark:addToMainMenu(tab_item_table) -- insert table to main reader menu - table.insert(item_table, { + table.insert(tab_item_table.navi, { text = self.bm_menu_title, callback = function() self:onShowBookmark() diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 7443a2bcb..cc869c2aa 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -211,9 +211,9 @@ function ReaderFont:setFont(face) end end -function ReaderFont:addToMainMenu(item_table) +function ReaderFont:addToMainMenu(tab_item_table) -- insert table to main reader menu - table.insert(item_table, { + table.insert(tab_item_table.typeset, { text = self.font_menu_title, sub_item_table = self.face_table, }) diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 09e900680..da981a50b 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -1,11 +1,24 @@ +require "ui/widget/menu" +require "ui/widget/touchmenu" + ReaderMenu = InputContainer:new{ _name = "ReaderMenu", - item_table = {}, + tab_item_table = nil, registered_widgets = {}, } function ReaderMenu:init() - self.item_table = {} + self.tab_item_table = { + main = { + icon = "resources/icons/appbar.pokeball.png", + }, + navi = { + icon = "resources/icons/appbar.page.corner.bookmark.png", + }, + typeset = { + icon = "resources/icons/appbar.page.text.png", + }, + } self.registered_widgets = {} if Device:hasKeyboard() then @@ -33,10 +46,10 @@ end function ReaderMenu:setUpdateItemTable() for _, widget in pairs(self.registered_widgets) do - widget:addToMainMenu(self.item_table) + widget:addToMainMenu(self.tab_item_table) end - table.insert(self.item_table, { + table.insert(self.tab_item_table.main, { text = "Return to file manager", callback = function() self.ui:handleEvent(Event:new("RestoreScreenMode", @@ -48,21 +61,40 @@ function ReaderMenu:setUpdateItemTable() end function ReaderMenu:onShowMenu() - if #self.item_table == 0 then + if #self.tab_item_table.main == 0 then self:setUpdateItemTable() end - local main_menu = Menu:new{ - title = "Document menu", - item_table = self.item_table, - width = Screen:getWidth() - 100, - } + local main_menu = nil + if Device:isTouchDevice() then + main_menu = TouchMenu:new{ + item_table = { + self.tab_item_table.navi, + self.tab_item_table.typeset, + self.tab_item_table.main, + }, + } + else + main_menu = Menu:new{ + title = "Document menu", + item_table = {}, + width = Screen:getWidth() - 100, + } + + for _,item_table in pairs(self.tab_item_table) do + for k,v in ipairs(item_table) do + table.insert(main_menu.item_table, v) + end + end + end local menu_container = CenterContainer:new{ ignore = "height", dimen = Screen:getSize(), main_menu, } + + main_menu.parent = menu_container main_menu.close_callback = function () UIManager:close(menu_container) end diff --git a/frontend/ui/reader/readertoc.lua b/frontend/ui/reader/readertoc.lua index 8e66dc342..8460e5ab3 100644 --- a/frontend/ui/reader/readertoc.lua +++ b/frontend/ui/reader/readertoc.lua @@ -81,7 +81,7 @@ function ReaderToc:onShowToc() title = "Table of Contents", item_table = self.toc, ui = self.ui, - width = Screen:getWidth()-20, + width = Screen:getWidth()-20, height = Screen:getHeight(), } function toc_menu:onMenuChoice(item) @@ -92,7 +92,7 @@ function ReaderToc:onShowToc() dimen = Screen:getSize(), toc_menu, } - toc_menu.close_callback = function() + toc_menu.close_callback = function() UIManager:close(menu_container) end @@ -100,9 +100,9 @@ function ReaderToc:onShowToc() return true end -function ReaderToc:addToMainMenu(item_table) +function ReaderToc:addToMainMenu(tab_item_table) -- insert table to main reader menu - table.insert(item_table, { + table.insert(tab_item_table.navi, { text = self.toc_menu_title, callback = function() self:onShowToc() diff --git a/frontend/ui/reader/readertypeset.lua b/frontend/ui/reader/readertypeset.lua index 7720ede53..7607e98af 100644 --- a/frontend/ui/reader/readertypeset.lua +++ b/frontend/ui/reader/readertypeset.lua @@ -10,7 +10,7 @@ end function ReaderTypeset:onReadSettings(config) self.css = config:readSetting("css") - if self.css and self.css ~= "" then + if self.css and self.css ~= "" then self.ui.document:setStyleSheet(self.css) else self.ui.document:setStyleSheet("") @@ -56,7 +56,7 @@ function ReaderTypeset:genStyleSheetMenu() if lfs.attributes("./data/"..f, "mode") == "file" and string.match(f, "%.css$") then table.insert(file_list, { text = f, - callback = function() + callback = function() self:setStyleSheet("./data/"..f) end }) @@ -98,9 +98,9 @@ function ReaderTypeset:toggleEmbeddedStyleSheet() self.ui:handleEvent(Event:new("UpdatePos")) end -function ReaderTypeset:addToMainMenu(item_table) +function ReaderTypeset:addToMainMenu(tab_item_table) -- insert table to main reader menu - table.insert(item_table, { + table.insert(tab_item_table.typeset, { text = self.css_menu_title, sub_item_table = self:genStyleSheetMenu(), }) diff --git a/frontend/ui/reader/readerzooming.lua b/frontend/ui/reader/readerzooming.lua index df31cf29a..55be19ddb 100644 --- a/frontend/ui/reader/readerzooming.lua +++ b/frontend/ui/reader/readerzooming.lua @@ -11,29 +11,29 @@ function ReaderZooming:init() if Device:hasKeyboard() then self.key_events = { ZoomIn = { - { "Shift", Input.group.PgFwd }, + { "Shift", Input.group.PgFwd }, doc = "zoom in", - event = "Zoom", args = "in" + event = "Zoom", args = "in" }, ZoomOut = { - { "Shift", Input.group.PgBack }, + { "Shift", Input.group.PgBack }, doc = "zoom out", - event = "Zoom", args = "out" + event = "Zoom", args = "out" }, ZoomToFitPage = { - { "A" }, + { "A" }, doc = "zoom to fit page", - event = "SetZoomMode", args = "page" + event = "SetZoomMode", args = "page" }, ZoomToFitContent = { - { "Shift", "A" }, + { "Shift", "A" }, doc = "zoom to fit content", - event = "SetZoomMode", args = "content" + event = "SetZoomMode", args = "content" }, ZoomToFitPageWidth = { - { "S" }, + { "S" }, doc = "zoom to fit page width", - event = "SetZoomMode", args = "pagewidth" + event = "SetZoomMode", args = "pagewidth" }, ZoomToFitContentWidth = { { "Shift", "S" }, @@ -41,9 +41,9 @@ function ReaderZooming:init() event = "SetZoomMode", args = "contentwidth" }, ZoomToFitPageHeight = { - { "D" }, + { "D" }, doc = "zoom to fit page height", - event = "SetZoomMode", args = "pageheight" + event = "SetZoomMode", args = "pageheight" }, ZoomToFitContentHeight = { { "Shift", "D" }, @@ -57,7 +57,7 @@ end function ReaderZooming:onReadSettings(config) -- @TODO config file from old code base uses globalzoom_mode - -- instead of zoom_mode, we need to handle this imcompatibility + -- instead of zoom_mode, we need to handle this imcompatibility -- 04.12 2012 (houqp) local zoom_mode = config:readSetting("zoom_mode") if not zoom_mode then @@ -113,10 +113,10 @@ function ReaderZooming:onHintPage() if not self.view.hinting then return true end if self.current_page < self.ui.document.info.number_of_pages then self.ui.document:hintPage( - self.view.state.page + 1, + self.view.state.page + 1, self:getZoom(self.view.state.page + 1), - self.view.state.rotation, - self.view.state.gamma, + self.view.state.rotation, + self.view.state.gamma, self.view.render_mode) end return true @@ -126,7 +126,7 @@ function ReaderZooming:getZoom(pageno) -- check if we're in bbox mode and work on bbox if that's the case local zoom = nil local page_size = {} - if self.zoom_mode == "content" + if self.zoom_mode == "content" or self.zoom_mode == "contentwidth" or self.zoom_mode == "contentheight" then local ubbox_dimen = self.ui.document:getUsedBBoxDimensions(pageno, 1) @@ -179,9 +179,9 @@ function ReaderZooming:genSetZoomModeCallBack(mode) end end -function ReaderZooming:addToMainMenu(item_table) +function ReaderZooming:addToMainMenu(tab_item_table) if self.ui.document.info.has_pages then - table.insert(item_table, { + table.insert(tab_item_table.typeset, { text = "Switch zoom mode", sub_item_table = { {