Merge pull request #744 from chrox/master

add floating punctuation toggler for EPUBs
pull/749/head v2014.07.24-nightly
Qingping Hou 10 years ago
commit 6b011fb190

@ -34,23 +34,26 @@ function ReaderFooter:init()
DMINIBAR_NEXT_CHAPTER = false
end
progress_text_default = ""
self.pageno = self.view.state.page
self.pages = self.view.document:getPageCount()
local progress_text_default = ""
if DMINIBAR_ALL_AT_ONCE then
if DMINIBAR_TIME then
progress_text_default = progress_text_default .. " | WW:WW"
end
if DMINIBAR_PAGES then
progress_text_default = progress_text_default .. " | 0000 / 0000"
end
if DMINIBAR_NEXT_CHAPTER then
progress_text_default = progress_text_default .. " | => 000"
end
if DMINIBAR_BATTERY then
progress_text_default = progress_text_default .. " | B:100%"
end
progress_text_default = string.sub(progress_text_default,4)
if DMINIBAR_TIME then
progress_text_default = progress_text_default .. " | WW:WW"
end
if DMINIBAR_PAGES then
progress_text_default = progress_text_default .. " | 0000 / 0000"
end
if DMINIBAR_NEXT_CHAPTER then
progress_text_default = progress_text_default .. " | => 000"
end
if DMINIBAR_BATTERY then
progress_text_default = progress_text_default .. " | B:100%"
end
progress_text_default = string.sub(progress_text_default, 4)
else
progress_text_default = "0000 / 0000"
progress_text_default = string.format(" %d / %d ", self.pages, self.pages)
end
self.progress_text = TextWidget:new{
@ -87,8 +90,6 @@ function ReaderFooter:init()
}
}
self.dimen = self[1]:getSize()
self.pageno = self.view.state.page
self.pages = self.view.document.info.number_of_pages
self:updateFooterPage()
local range = Geom:new{
x = Screen:getWidth()*DTAP_ZONE_MINIBAR.x,
@ -121,16 +122,13 @@ function ReaderFooter:fillToc()
end
function ReaderFooter:updateFooterPage()
local powerd
local state
if type(self.pageno) ~= "number" then return end
self.progress_bar.percentage = self.pageno / self.pages
if DMINIBAR_ALL_AT_ONCE then
self.progress_text.text = ""
if DMINIBAR_NEXT_CHAPTER then
powerd = Device:getPowerDevice()
state = powerd:isCharging() and -1 or powerd:getCapacity()
local powerd = Device:getPowerDevice()
local state = powerd:isCharging() and -1 or powerd:getCapacity()
self.progress_text.text = self.progress_text.text .. " | B:" .. powerd:getCapacity() .. "%"
end
if DMINIBAR_TIME then
@ -142,7 +140,7 @@ function ReaderFooter:updateFooterPage()
if DMINIBAR_NEXT_CHAPTER then
self.progress_text.text = self.progress_text.text .. " | => " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages)
end
self.progress_text.text = string.sub(self.progress_text.text,4)
self.progress_text.text = string.sub(self.progress_text.text, 4)
else
if self.mode == 1 then
self.progress_text.text = string.format("%d / %d", self.pageno, self.pages)
@ -151,8 +149,8 @@ function ReaderFooter:updateFooterPage()
elseif self.mode == 3 then
self.progress_text.text = "=> " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages)
elseif self.mode == 4 then
powerd = Device:getPowerDevice()
state = powerd:isCharging() and -1 or powerd:getCapacity()
local powerd = Device:getPowerDevice()
local state = powerd:isCharging() and -1 or powerd:getCapacity()
self.progress_text.text = "B:" .. powerd:getCapacity() .. "%"
end
end
@ -170,7 +168,6 @@ function ReaderFooter:updateFooterPos()
end
end
function ReaderFooter:onPageUpdate(pageno)
self.pageno = pageno
self.pages = self.view.document.info.number_of_pages
@ -183,6 +180,11 @@ function ReaderFooter:onPosUpdate(pos)
self:updateFooterPos()
end
-- recalculate footer sizes when document page count is updated
function ReaderFooter:onUpdatePos()
UIManager:scheduleIn(0.1, function() self:init() end)
end
function ReaderFooter:applyFooterMode(mode)
-- three modes switcher for reader footer
-- 0 for footer off

@ -175,6 +175,7 @@ function ReaderRolling:onReadSettings(config)
if self.view.view_mode == "page" then
self.ui:handleEvent(Event:new("PageUpdate", self.ui.document:getCurrentPage()))
end
self.ui:handleEvent(Event:new("UpdatePos"))
end
function ReaderRolling:onSaveSettings()

@ -31,11 +31,17 @@ function ReaderTypeset:onReadSettings(config)
-- set page margins
self:onSetPageMargins(config:readSetting("copt_page_margins") or DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM)
-- default to enable floating punctuation
self.floating_punctuation = config:readSetting("floating_punctuation") or
G_reader_settings:readSetting("floating_punctuation") or true
self:toggleFloatingPunctuation(self.floating_punctuation and 1 or 0)
end
function ReaderTypeset:onSaveSettings()
self.ui.doc_settings:saveSetting("css", self.css)
self.ui.doc_settings:saveSetting("embedded_css", self.embedded_css)
self.ui.doc_settings:saveSetting("floating_punctuation", self.floating_punctuation)
end
function ReaderTypeset:onToggleEmbeddedStyleSheet(toggle)
@ -106,12 +112,25 @@ function ReaderTypeset:toggleEmbeddedStyleSheet(toggle)
self.ui:handleEvent(Event:new("UpdatePos"))
end
function ReaderTypeset:toggleFloatingPunctuation(toggle)
self.ui.document:setFloatingPunctuation(toggle)
self.ui:handleEvent(Event:new("UpdatePos"))
end
function ReaderTypeset:addToMainMenu(tab_item_table)
-- insert table to main reader menu
table.insert(tab_item_table.typeset, {
text = self.css_menu_title,
sub_item_table = self:genStyleSheetMenu(),
})
table.insert(tab_item_table.typeset, {
text = _("Floating punctuation"),
checked_func = function() return self.floating_punctuation == true end,
callback = function()
self.floating_punctuation = not self.floating_punctuation
self:toggleFloatingPunctuation(self.floating_punctuation and 1 or 0)
end
})
end
function ReaderTypeset:onSetPageMargins(margins)

@ -357,6 +357,7 @@ function CreDocument:setPageMargins(left, top, right, bottom)
end
function CreDocument:setFloatingPunctuation(enabled)
-- FIXME: occasional segmentation fault when toggling floating punctuation
DEBUG("CreDocument: set floating punctuation", enabled)
self._document:setIntProperty("crengine.style.floating.punctuation.enabled", enabled)
end

@ -1 +1 @@
Subproject commit 43defcb8e00db8f78fed747a697e77983ba33819
Subproject commit efa6ab08a52857e20e34c0b0f51dfee77d3d8c13
Loading…
Cancel
Save