always show progress bar in flipping mode

tap on progress bar in flipping mode will goto corresponding page
pull/399/head
chrox 11 years ago
parent da317ed14a
commit 93866822d0

@ -41,17 +41,4 @@ function ReaderFlipping:onTap()
return true
end
function ReaderFlipping:onSetFlippingMode(flipping_mode)
if flipping_mode then
self.orig_reflow_mode = self.view.document.configurable.text_wrap
self.orig_scroll_mode = self.view.page_scroll
self.view.document.configurable.text_wrap = 0
self.view.page_scroll = false
else
self.view.document.configurable.text_wrap = self.orig_reflow_mode
self.view.page_scroll = self.orig_scroll_mode
end
return true
end
return ReaderFlipping

@ -11,6 +11,7 @@ local UIManager = require("ui/uimanager")
local Device = require("ui/device")
local Screen = require("ui/screen")
local Geom = require("ui/geometry")
local Event = require("ui/event")
local Font = require("ui/font")
local DEBUG = require("dbg")
@ -21,8 +22,8 @@ local ReaderFooter = InputContainer:new{
progress_percentage = 0.0,
progress_text = "0 / 0",
show_time = false,
bar_width = 0.88,
text_width = 0.12,
bar_width = 0.85,
text_width = 0.15,
text_font_face = "ffont",
text_font_size = 14,
height = 19,
@ -90,8 +91,15 @@ function ReaderFooter:onPageUpdate(pageno)
self:updateFooter()
end
function ReaderFooter:onTapFooter(arg, gev)
self.show_time = not self.show_time
function ReaderFooter:onTapFooter(arg, ges)
if self.view.flipping_visible then
local pos = ges.pos
local dimen = self.progress_bar.dimen
local percentage = (pos.x - dimen.x)/dimen.w
self.ui:handleEvent(Event:new("GotoPercentage", percentage))
else
self.show_time = not self.show_time
end
self:updateFooter()
UIManager:setDirty(self.view.dialog, "partial")
-- consume this tap when footer is visible

@ -176,17 +176,37 @@ function ReaderPaging:onToggleFlipping()
self.view.flipping_visible = not self.view.flipping_visible
self.flipping_mode = self.view.flipping_visible
self.flipping_page = self.current_page
if self.flipping_mode then
self:updateOriginalPage(self.current_page)
self:enterFlippingMode()
else
self:updateOriginalPage(nil)
self:exitFlippingMode()
end
self.view:resetLayout()
self.ui:handleEvent(Event:new("SetFlippingMode", self.flipping_mode))
self.ui:handleEvent(Event:new("SetHinting", not self.flipping_mode))
self.ui:handleEvent(Event:new("ReZoom"))
UIManager:setDirty(self.view.dialog, "partial")
end
function ReaderPaging:enterFlippingMode()
self.orig_reflow_mode = self.view.document.configurable.text_wrap
self.orig_footer_mode = self.view.footer_visible
self.orig_scroll_mode = self.view.page_scroll
self.view.document.configurable.text_wrap = 0
self.view.page_scroll = false
self.view.footer_visible = true
end
function ReaderPaging:exitFlippingMode()
self.view.document.configurable.text_wrap = self.orig_reflow_mode
self.view.page_scroll = self.orig_scroll_mode
self.view.footer_visible = self.orig_footer_mode
end
function ReaderPaging:updateOriginalPage(page)
self.original_page = page
end
@ -675,4 +695,11 @@ function ReaderPaging:onGotoPage(number)
return true
end
function ReaderPaging:onGotoPercentage(percentage)
if percentage < 0 then percentage = 0 end
if percentage > 1 then percentage = 1 end
self:gotoPage(math.floor(percentage*self.number_of_pages))
return true
end
return ReaderPaging

@ -72,6 +72,7 @@ function ReaderView:resetLayout()
}
self.footer = ReaderFooter:new{
view = self,
ui = self.ui,
visible = self.footer_visible,
}
self.flipping = ReaderFlipping:new{

@ -1,4 +1,5 @@
local Widget = require("ui/widget/widget")
local Geom = require("ui/geometry")
--[[
ProgressWidget shows a progress bar
@ -22,6 +23,11 @@ end
function ProgressWidget:paintTo(bb, x, y)
local my_size = self:getSize()
self.dimen = Geom:new{
x = x, y = y,
w = my_size.w,
h = my_size.h
}
bb:paintRoundedRect(x, y, my_size.w, my_size.h, self.bgcolor, self.radius)
bb:paintBorder(x, y, my_size.w, my_size.h,
self.bordersize, self.bordercolor, self.radius)

Loading…
Cancel
Save