register font menu to main reader menu for touch device

pull/2/merge
Qingping Hou 12 years ago
parent 1675d8667b
commit 476733dc87

@ -1,31 +1,50 @@
ReaderFont = InputContainer:new{ ReaderFont = InputContainer:new{
key_events = {
ShowFontMenu = { {"F"}, doc = "show font menu"},
IncreaseSize = {
{ "Shift", Input.group.PgFwd },
doc = "increase font size",
event = "ChangeSize", args = "increase" },
DecreaseSize = {
{ "Shift", Input.group.PgBack },
doc = "decrease font size",
event = "ChangeSize", args = "decrease" },
IncreaseLineSpace = {
{ "Alt", Input.group.PgFwd },
doc = "increase line space",
event = "ChangeLineSpace", args = "increase" },
DecreaseLineSpace = {
{ "Alt", Input.group.PgBack },
doc = "decrease line space",
event = "ChangeLineSpace", args = "decrease" },
},
dimen = Geom:new{ w = Screen:getWidth()-20, h = Screen:getHeight()-20},
font_face = nil, font_face = nil,
font_size = nil, font_size = nil,
face_table = {},
line_space_percent = 100, line_space_percent = 100,
font_menu_title = "Font Menu",
} }
function ReaderFont:init() function ReaderFont:init()
if not Device:hasNoKeyboard() then
-- add shortcut for keyboard
self.key_events = {
ShowFontMenu = { {"F"}, doc = "show font menu" },
IncreaseSize = {
{ "Shift", Input.group.PgFwd },
doc = "increase font size",
event = "ChangeSize", args = "increase" },
DecreaseSize = {
{ "Shift", Input.group.PgBack },
doc = "decrease font size",
event = "ChangeSize", args = "decrease" },
IncreaseLineSpace = {
{ "Alt", Input.group.PgFwd },
doc = "increase line space",
event = "ChangeLineSpace", args = "increase" },
DecreaseLineSpace = {
{ "Alt", Input.group.PgBack },
doc = "decrease line space",
event = "ChangeLineSpace", args = "decrease" },
}
end
-- build menu item_table
local face_list = cre.getFontFaces()
for k,v in ipairs(face_list) do
table.insert(self.face_table, {
text = v,
callback = function()
self:setFont(v)
end
})
face_list[k] = {text = v}
end
-- insert table to main reader menu
table.insert(self.ui.menu.item_table, {
text = self.font_menu_title,
sub_item_table = self.face_table,
})
end end
function ReaderFont:onSetDimensions(dimen) function ReaderFont:onSetDimensions(dimen)
@ -45,44 +64,27 @@ function ReaderFont:onReadSettings(config)
end end
function ReaderFont:onShowFontMenu() function ReaderFont:onShowFontMenu()
-- build menu item_table -- build menu widget
local face_list = cre.getFontFaces() local main_menu = Menu:new{
for k,v in ipairs(face_list) do title = self.font_menu_title,
face_list[k] = {text = v} item_table = self.face_table,
end width = Screen:getWidth() - 100,
-- NuPogodi, 18.05.12: define the number of the current font in face_list
--local item_no = 0
--while face_list[item_no] ~= self.font_face and item_no < #face_list do
--item_no = item_no + 1
--end
--local fonts_menu = Menu:new{
--menu_title = "Fonts Menu",
--item_array = face_list,
--current_entry = item_no - 1,
--}
local font_menu = Menu:new{
title = "Font Menu",
item_table = face_list,
dimen = self.dimen,
caller = self,
ui = self.ui
} }
function main_menu:onMenuChoice(item)
function font_menu:onMenuChoice(item) if item.callback then
if item.text and self.font_face ~= item.text then item.callback()
self.caller.font_face = item.text
msg = InfoMessage:new{ text = "Redrawing with "..item.text}
UIManager:show(msg)
self.ui.document:setFontFace(item.text)
-- signal readerrolling to update pos in new height
self.ui:handleEvent(Event:new("UpdatePos"))
UIManager:close(msg)
end end
end end
-- build container
UIManager:show(font_menu) local menu_container = CenterContainer:new{
main_menu,
dimen = Screen:getSize(),
}
main_menu.close_callback = function ()
UIManager:close(menu_container)
end
-- show menu
UIManager:show(menu_container)
return true return true
end end
@ -121,3 +123,19 @@ function ReaderFont:onCloseDocument()
self.ui.doc_settings:saveSetting("font_face", self.font_face) self.ui.doc_settings:saveSetting("font_face", self.font_face)
self.ui.doc_settings:saveSetting("font_size", self.font_size) self.ui.doc_settings:saveSetting("font_size", self.font_size)
end end
function ReaderFont:setFont(face)
if face and self.font_face ~= face then
self.font_face = face
msg = InfoMessage:new{ text = "Redrawing with "..face }
UIManager:show(msg)
self.ui.document:setFontFace(face)
-- signal readerrolling to update pos in new height
self.ui:handleEvent(Event:new("UpdatePos"))
UIManager:close(msg)
end
end

Loading…
Cancel
Save