From b1ed2838c8b838e7f1d0b3cbf1aa9ca6ee547932 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Wed, 20 Mar 2019 16:58:32 +0100 Subject: [PATCH] [UX] Add Device:openLink() stub for Linux SDL (#4822) References #4821. --- frontend/apps/reader/modules/readerlink.lua | 5 +++++ frontend/device/generic/device.lua | 2 ++ frontend/device/sdl/device.lua | 4 ++++ frontend/ui/otamanager.lua | 2 +- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readerlink.lua b/frontend/apps/reader/modules/readerlink.lua index bcbcd48a9..b74a8bc27 100644 --- a/frontend/apps/reader/modules/readerlink.lua +++ b/frontend/apps/reader/modules/readerlink.lua @@ -614,6 +614,11 @@ function ReaderLink:onGotoLink(link, neglect_current_location, allow_footnote_po return true end + -- try opening link in native browser + if Device:openLink(link_url) then + return true + end + -- Not supported UIManager:show(InfoMessage:new{ text = T(_("Invalid or external link:\n%1"), link_url), diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index d126b5e44..c659121eb 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -64,6 +64,8 @@ local Device = { -- set to yes on devices that support over-the-air incremental updates. hasOTAUpdates = no, + + openLink = no, } function Device:new(o) diff --git a/frontend/device/sdl/device.lua b/frontend/device/sdl/device.lua index 9e0b036a5..81ef0ec53 100644 --- a/frontend/device/sdl/device.lua +++ b/frontend/device/sdl/device.lua @@ -17,6 +17,10 @@ local Device = Generic:new{ needsScreenRefreshAfterResume = no, hasColorScreen = yes, hasEinkScreen = no, + openLink = function(self, link) + if not link or type(link) ~= "string" then return end + return os.execute("xdg-open '"..link.."'") == 0 + end, } local AppImage = Device:new{ diff --git a/frontend/ui/otamanager.lua b/frontend/ui/otamanager.lua index 9482b4401..364a1c3c8 100644 --- a/frontend/ui/otamanager.lua +++ b/frontend/ui/otamanager.lua @@ -236,7 +236,7 @@ function OTAManager:fetchAndProcessUpdate() android.notification(T(_("Downloading %1"), ota_package)) end elseif Device:isSDL() then - os.execute("xdg-open '"..link.."'") + Device:openLink(link) end end })