mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
disable highlight in dict window if it's highlighted already
This should fix #1418.
This commit is contained in:
@@ -297,6 +297,23 @@ function ReaderBookmark:addBookmark(item)
|
||||
table.insert(self.bookmarks, _middle + direction, item)
|
||||
end
|
||||
|
||||
-- binary search of sorted bookmarks
|
||||
function ReaderBookmark:isBookmarkAdded(item)
|
||||
local _start, _middle, _end, direction = 1, 1, #self.bookmarks, 0
|
||||
while _start <= _end do
|
||||
local v = self.bookmarks[_middle]
|
||||
_middle = math.floor((_start + _end)/2)
|
||||
if self:isBookmarkSame(item, self.bookmarks[_middle]) then
|
||||
return true
|
||||
end
|
||||
if self:isBookmarkInPageOrder(item, self.bookmarks[_middle]) then
|
||||
_end, direction = _middle - 1, 0
|
||||
else
|
||||
_start, direction = _middle + 1, 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- binary search to remove bookmark
|
||||
function ReaderBookmark:removeBookmark(item)
|
||||
local _start, _middle, _end = 1, 1, #self.bookmarks
|
||||
|
||||
@@ -385,10 +385,28 @@ function ReaderHighlight:highlightFromHoldPos()
|
||||
end
|
||||
|
||||
function ReaderHighlight:onHighlight()
|
||||
self:highlightFromHoldPos()
|
||||
self:saveHighlight()
|
||||
end
|
||||
|
||||
function ReaderHighlight:getHighlightBookmarkItem()
|
||||
if self.hold_pos and not self.selected_text then
|
||||
self:highlightFromHoldPos()
|
||||
end
|
||||
if self.selected_text and self.selected_text.pos0 and self.selected_text.pos1 then
|
||||
local datetime = os.date("%Y-%m-%d %H:%M:%S")
|
||||
local page = self.ui.document.info.has_pages and
|
||||
self.hold_pos.page or self.selected_text.pos0
|
||||
return {
|
||||
page = page,
|
||||
pos0 = self.selected_text.pos0,
|
||||
pos1 = self.selected_text.pos1,
|
||||
datetime = datetime,
|
||||
notes = self.selected_text.text,
|
||||
highlighted = true,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderHighlight:saveHighlight()
|
||||
DEBUG("save highlight")
|
||||
local page = self.hold_pos.page
|
||||
@@ -407,14 +425,10 @@ function ReaderHighlight:saveHighlight()
|
||||
drawer = self.view.highlight.saved_drawer,
|
||||
}
|
||||
table.insert(self.view.highlight.saved[page], hl_item)
|
||||
self.ui.bookmark:addBookmark({
|
||||
page = self.ui.document.info.has_pages and page or self.selected_text.pos0,
|
||||
pos0 = self.selected_text.pos0,
|
||||
pos1 = self.selected_text.pos1,
|
||||
datetime = datetime,
|
||||
notes = self.selected_text.text,
|
||||
highlighted = true,
|
||||
})
|
||||
local bookmark_item = self:getHighlightBookmarkItem()
|
||||
if bookmark_item then
|
||||
self.ui.bookmark:addBookmark(bookmark_item)
|
||||
end
|
||||
--[[
|
||||
-- disable exporting hightlights to My Clippings
|
||||
-- since it's not portable and there is a better Evernote plugin
|
||||
|
||||
@@ -158,9 +158,11 @@ function DictQuickLookup:update()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Highlight"),
|
||||
text = self:getHighlightText(),
|
||||
enabled = select(2, self:getHighlightText()),
|
||||
callback = function()
|
||||
self.ui:handleEvent(Event:new("Highlight"))
|
||||
self:update()
|
||||
end,
|
||||
},
|
||||
{
|
||||
@@ -279,6 +281,21 @@ function DictQuickLookup:onShow()
|
||||
return true
|
||||
end
|
||||
|
||||
function DictQuickLookup:getHighlightedItem()
|
||||
return self.ui.highlight:getHighlightBookmarkItem()
|
||||
end
|
||||
|
||||
function DictQuickLookup:getHighlightText()
|
||||
local item = self:getHighlightedItem()
|
||||
if not item then
|
||||
return _("Highlight"), false
|
||||
elseif self.ui.bookmark:isBookmarkAdded(item) then
|
||||
return _("Unhighlight"), false
|
||||
else
|
||||
return _("Highlight"), true
|
||||
end
|
||||
end
|
||||
|
||||
function DictQuickLookup:isPrevDictAvaiable()
|
||||
return self.dict_index > 1
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user