From 0fa1b44782e76f79a12f04eeb3650e4c2ef4225c Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Sun, 6 Oct 2019 23:47:53 +0200 Subject: [PATCH] =?UTF-8?q?[UX]=20Add=20=E2=80=A6=20button=20to=20highligh?= =?UTF-8?q?t=20edit=20(#5456)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shows regular highlight dialog. Fixes #5455. --- .../apps/reader/modules/readerhighlight.lua | 198 ++++++++++-------- 1 file changed, 106 insertions(+), 92 deletions(-) diff --git a/frontend/apps/reader/modules/readerhighlight.lua b/frontend/apps/reader/modules/readerhighlight.lua index e7a848fa5..cb22b37e3 100644 --- a/frontend/apps/reader/modules/readerhighlight.lua +++ b/frontend/apps/reader/modules/readerhighlight.lua @@ -167,7 +167,7 @@ function ReaderHighlight:onClearHighlight() end function ReaderHighlight:onTap(_, ges) - if not self:clear() then + if not self:clear() and ges then if self.ui.document.info.has_pages then return self:onTapPageSavedHighlight(ges) else @@ -338,6 +338,14 @@ function ReaderHighlight:onShowHighlightDialog(page, index) UIManager:close(self.edit_highlight_dialog) end, }, + { + text = _("…"), + callback = function() + self.selected_text = self.view.highlight.saved[page][index] + self:onShowHighlightMenu() + UIManager:close(self.edit_highlight_dialog) + end, + }, } } @@ -390,6 +398,102 @@ function ReaderHighlight:onShowHighlightDialog(page, index) return true end +function ReaderHighlight:onShowHighlightMenu() + local highlight_buttons = { + { + { + text = _("Highlight"), + callback = function() + self:saveHighlight() + self:onClose() + end, + enabled = self.hold_pos ~= nil, + }, + { + text = _("Add Note"), + callback = function() + self:addNote() + self:onClose() + end, + enabled = self.hold_pos ~= nil, + }, + }, + { + { + text = C_("Text", "Copy"), + enabled = Device:hasClipboard(), + callback = function() + Device.input.setClipboardText(self.selected_text.text) + end, + }, + { + text = _("View HTML"), + enabled = not self.ui.document.info.has_pages, + callback = function() + self:viewSelectionHTML() + end, + }, + }, + { + { + text = _("Wikipedia"), + callback = function() + UIManager:scheduleIn(0.1, function() + self:lookupWikipedia() + -- We don't call self:onClose(), we need the highlight + -- to still be there, as we may Highlight it from the + -- dict lookup widget + end) + end, + }, + { + text = _("Dictionary"), + callback = function() + self:onHighlightDictLookup() + -- We don't call self:onClose(), same reason as above + end, + }, + }, + { + { + text = _("Translate"), + callback = function() + self:translate(self.selected_text) + -- We don't call self:onClose(), so one can still see + -- the highlighted text when moving the translated + -- text window, and also if NetworkMgr:promptWifiOn() + -- is needed, so the user can just tap again on this + -- button and does not need to select the text again. + end, + }, + { + text = _("Search"), + callback = function() + self:onHighlightSearch() + UIManager:close(self.highlight_dialog) + end, + }, + }, + } + if self.selected_link ~= nil then + table.insert(highlight_buttons, { -- for now, a single button in an added row + { + text = _("Follow Link"), + callback = function() + local link = self.selected_link.link or self.selected_link + self.ui.link:onGotoLink(link) + self:onClose() + end, + }, + }) + end + self.highlight_dialog = ButtonDialog:new{ + buttons = highlight_buttons, + tap_close_callback = function() self:handleEvent(Event:new("Tap")) end, + } + UIManager:show(self.highlight_dialog) +end + function ReaderHighlight:onHold(arg, ges) -- disable hold gesture if highlighting is disabled if self.view.highlight.disabled then return true end @@ -782,97 +886,7 @@ function ReaderHighlight:onHoldRelease() if self.selected_text then local default_highlight_action = G_reader_settings:readSetting("default_highlight_action") if not default_highlight_action then - local highlight_buttons = { - { - { - text = _("Highlight"), - callback = function() - self:saveHighlight() - self:onClose() - end, - }, - { - text = _("Add Note"), - callback = function() - self:addNote() - self:onClose() - end, - }, - }, - { - { - text = C_("Text", "Copy"), - enabled = Device:hasClipboard(), - callback = function() - Device.input.setClipboardText(self.selected_text.text) - end, - }, - { - text = _("View HTML"), - enabled = not self.ui.document.info.has_pages, - callback = function() - self:viewSelectionHTML() - end, - }, - }, - { - { - text = _("Wikipedia"), - callback = function() - UIManager:scheduleIn(0.1, function() - self:lookupWikipedia() - -- We don't call self:onClose(), we need the highlight - -- to still be there, as we may Highlight it from the - -- dict lookup widget - end) - end, - }, - { - text = _("Dictionary"), - callback = function() - self:onHighlightDictLookup() - -- We don't call self:onClose(), same reason as above - end, - }, - }, - { - { - text = _("Translate"), - callback = function() - self:translate(self.selected_text) - -- We don't call self:onClose(), so one can still see - -- the highlighted text when moving the translated - -- text window, and also if NetworkMgr:promptWifiOn() - -- is needed, so the user can just tap again on this - -- button and does not need to select the text again. - end, - }, - { - text = _("Search"), - callback = function() - self:onHighlightSearch() - UIManager:close(self.highlight_dialog) - end, - }, - }, - } - if self.selected_link ~= nil then - table.insert(highlight_buttons, { -- for now, a single button in an added row - { - text = _("Follow Link"), - callback = function() - local link = self.selected_link.link or self.selected_link - self.ui.link:onGotoLink(link) - self:onClose() - end, - }, - }) - end - self.highlight_dialog = ButtonDialog:new{ - buttons = highlight_buttons, - tap_close_callback = function() self:handleEvent(Event:new("Tap")) end, - } - UIManager:show(self.highlight_dialog) + self:onShowHighlightMenu() elseif default_highlight_action == "highlight" then self:saveHighlight() self:onClose()