use touchmenu widget in readermenu

pull/2/merge
Qingping Hou 11 years ago
parent 38a6ea96d7
commit 1fcb5281a0

@ -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()

@ -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,
})

@ -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

@ -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()

@ -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(),
})

@ -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 = {
{

Loading…
Cancel
Save