mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[feat] SkimToWidget chapter markers & next/prev chapter/bookmark (#3389)
https://github.com/koreader/koreader/issues/2819#issuecomment-332261968 + refactoring code in skimtowidget + add chapter markers + add next/prev chapter buttons + add next/prev bookmark buttons
This commit is contained in:
@@ -93,6 +93,22 @@ function ReaderBookmark:isBookmarkInReversePageOrder(a, b)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBookmark:isBookmarkPageInPageOrder(a, b)
|
||||
if self.ui.document.info.has_pages then
|
||||
return a > b.page
|
||||
else
|
||||
return a > self.ui.document:getPageFromXPointer(b.page)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBookmark:isBookmarkPageInReversePageOrder(a, b)
|
||||
if self.ui.document.info.has_pages then
|
||||
return a < b.page
|
||||
else
|
||||
return a < self.ui.document:getPageFromXPointer(b.page)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBookmark:fixBookmarkSort(config)
|
||||
-- for backward compatibility, since previously bookmarks for credocuments
|
||||
-- are not well sorted. We need to do a whole sorting for at least once.
|
||||
@@ -502,6 +518,24 @@ function ReaderBookmark:getNextBookmarkedPage(pn_or_xp)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBookmark:getPreviousBookmarkedPageFromPage(pn_or_xp)
|
||||
logger.dbg("go to next bookmark from", pn_or_xp)
|
||||
for i = 1, #self.bookmarks do
|
||||
if self:isBookmarkPageInPageOrder(pn_or_xp, self.bookmarks[i]) then
|
||||
return self.bookmarks[i].page
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBookmark:getNextBookmarkedPageFromPage(pn_or_xp)
|
||||
logger.dbg("go to next bookmark from", pn_or_xp)
|
||||
for i = #self.bookmarks, 1, -1 do
|
||||
if self:isBookmarkPageInReversePageOrder(pn_or_xp, self.bookmarks[i]) then
|
||||
return self.bookmarks[i].page
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBookmark:onGotoPreviousBookmark(pn_or_xp)
|
||||
self:gotoBookmark(self:getPreviousBookmarkedPage(pn_or_xp))
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user