Adds choice of default action when highlighting (#4486)

New menu Document > Highlight action.
pull/4491/head
Galunid 5 years ago committed by poire-z
parent b15c2ed0c5
commit 0678d75438

@ -520,99 +520,111 @@ function ReaderHighlight:onHoldRelease()
self:onHoldPan(nil, {pos=self.hold_ges_pos}) self:onHoldPan(nil, {pos=self.hold_ges_pos})
end end
end end
if self.selected_text then if self.selected_text then
logger.dbg("show highlight dialog") local default_highlight_action = G_reader_settings:readSetting("default_highlight_action")
local highlight_buttons = { if not default_highlight_action then
{ local highlight_buttons = {
{
text = _("Highlight"),
callback = function()
self:saveHighlight()
self:onClose()
end,
},
{
text = _("Add Note"),
enabled = false,
callback = function()
self:addNote()
self:onClose()
end,
},
},
{
{
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, text = _("Highlight"),
callback = function() callback = function()
self:viewSelectionHTML() self:saveHighlight()
end, self:onClose()
}, end,
}, },
{ {
{ text = _("Add Note"),
text = _("Wikipedia"), enabled = false,
callback = function() callback = function()
UIManager:scheduleIn(0.1, function() self:addNote()
self:lookupWikipedia() self:onClose()
-- We don't call self:onClose(), we need the highlight end,
-- 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() text = "Copy",
self:translate(self.selected_text) enabled = Device:hasClipboard(),
-- We don't call self:onClose(), so one can still see callback = function()
-- the highlighted text when moving the translated Device.input.setClipboardText(self.selected_text.text)
-- text window, and also if NetworkMgr:promptWifiOn() end,
-- is needed, so the user can just tap again on this },
-- button and does not need to select the text again. {
end, text = _("View HTML"),
enabled = not self.ui.document.info.has_pages,
callback = function()
self:viewSelectionHTML()
end,
},
}, },
{ {
text = _("Search"), {
callback = function() text = _("Wikipedia"),
self:onHighlightSearch() callback = function()
UIManager:close(self.highlight_dialog) UIManager:scheduleIn(0.1, function()
end, 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,
},
}, },
},
}
if self.selected_link ~= nil then
table.insert(highlight_buttons, { -- for now, a single button in an added row
{ {
text = _("Follow Link"), {
callback = function() text = _("Translate"),
self.ui.link:onGotoLink(self.selected_link) callback = function()
self:onClose() self:translate(self.selected_text)
end, -- 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()
self.ui.link:onGotoLink(self.selected_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)
elseif default_highlight_action == "highlight" then
self:saveHighlight()
self:onClose()
elseif default_highlight_action == "translate" then
self:translate(self.selected_text)
self:onClose()
elseif default_highlight_action == "wikipedia" then
self:lookupWikipedia()
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)
elseif self.selected_word then elseif self.selected_word then
self:lookup(self.selected_word, self.selected_link) self:lookup(self.selected_word, self.selected_link)
self.selected_word = nil self.selected_word = nil

@ -337,6 +337,47 @@ common_settings.document = {
} }
}, },
{
text = _("Highlight action"),
sub_item_table = {
{
text = _("Ask with popup dialog"),
checked_func = function()
return G_reader_settings:nilOrFalse("default_highlight_action")
end,
callback = function()
G_reader_settings:saveSetting("default_highlight_action", nil)
end,
},
{
text = _("Highlight"),
checked_func = function()
return G_reader_settings:readSetting("default_highlight_action") == "highlight"
end,
callback = function()
G_reader_settings:saveSetting("default_highlight_action", "highlight")
end,
},
{
text = _("Translate"),
checked_func = function()
return G_reader_settings:readSetting("default_highlight_action") == "translate"
end,
callback = function()
G_reader_settings:saveSetting("default_highlight_action", "translate")
end,
},
{
text = _("Wikipedia"),
checked_func = function()
return G_reader_settings:readSetting("default_highlight_action") == "wikipedia"
end,
callback = function()
G_reader_settings:saveSetting("default_highlight_action", "wikipedia")
end,
},
}
},
}, },
} }
common_settings.language = Language:getLangMenuTable() common_settings.language = Language:getLangMenuTable()

Loading…
Cancel
Save