mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
use touchmenu widget in readermenu
This commit is contained in:
@@ -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 = {
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user