Use koreader_xpointer for GotoXPointer, fallback to percentage
This commit is contained in:
@@ -792,8 +792,11 @@ function Bookhoard:syncToProgress(progress, percentage)
|
|||||||
logger.dbg("Bookhoard: sync to progress", progress, percentage)
|
logger.dbg("Bookhoard: sync to progress", progress, percentage)
|
||||||
if self.ui.document.info.has_pages then
|
if self.ui.document.info.has_pages then
|
||||||
self.ui:handleEvent(Event:new("GotoPage", tonumber(progress)))
|
self.ui:handleEvent(Event:new("GotoPage", tonumber(progress)))
|
||||||
else
|
elseif progress and progress:match("^/body/") then
|
||||||
self.ui:handleEvent(Event:new("GotoXPointer", progress))
|
self.ui:handleEvent(Event:new("GotoXPointer", progress))
|
||||||
|
elseif percentage then
|
||||||
|
self.ui.document:gotoPercent(percentage * 100)
|
||||||
|
self.ui:handleEvent(Event:new("UpdatePos"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -960,29 +963,31 @@ function Bookhoard:_doGetProgress(interactive)
|
|||||||
|
|
||||||
local self_older = server_percentage > percentage
|
local self_older = server_percentage > percentage
|
||||||
|
|
||||||
|
local nav_target = progress.koreader_xpointer or progress.epubcfi or progress.page
|
||||||
|
|
||||||
if self_older then
|
if self_older then
|
||||||
if self.settings.sync_forward == SYNC_STRATEGY.SILENT then
|
if self.settings.sync_forward == SYNC_STRATEGY.SILENT then
|
||||||
self:syncToProgress(progress.epubcfi or progress.page, server_percentage)
|
self:syncToProgress(nav_target, server_percentage)
|
||||||
self:_showSyncedMessage()
|
self:_showSyncedMessage()
|
||||||
elseif self.settings.sync_forward == SYNC_STRATEGY.PROMPT then
|
elseif self.settings.sync_forward == SYNC_STRATEGY.PROMPT then
|
||||||
UIManager:show(ConfirmBox:new{
|
UIManager:show(ConfirmBox:new{
|
||||||
text = T(_("Sync to newer location %1%% from server?"),
|
text = T(_("Sync to newer location %1%% from server?"),
|
||||||
Math.round(server_percentage * 100)),
|
Math.round(server_percentage * 100)),
|
||||||
ok_callback = function()
|
ok_callback = function()
|
||||||
self:syncToProgress(progress.epubcfi or progress.page, server_percentage)
|
self:syncToProgress(nav_target, server_percentage)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if self.settings.sync_backward == SYNC_STRATEGY.SILENT then
|
if self.settings.sync_backward == SYNC_STRATEGY.SILENT then
|
||||||
self:syncToProgress(progress.epubcfi or progress.page, server_percentage)
|
self:syncToProgress(nav_target, server_percentage)
|
||||||
self:_showSyncedMessage()
|
self:_showSyncedMessage()
|
||||||
elseif self.settings.sync_backward == SYNC_STRATEGY.PROMPT then
|
elseif self.settings.sync_backward == SYNC_STRATEGY.PROMPT then
|
||||||
UIManager:show(ConfirmBox:new{
|
UIManager:show(ConfirmBox:new{
|
||||||
text = T(_("Sync to previous location %1%% from server?"),
|
text = T(_("Sync to previous location %1%% from server?"),
|
||||||
Math.round(server_percentage * 100)),
|
Math.round(server_percentage * 100)),
|
||||||
ok_callback = function()
|
ok_callback = function()
|
||||||
self:syncToProgress(progress.epubcfi or progress.page, server_percentage)
|
self:syncToProgress(nav_target, server_percentage)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user