From d456a076af1b4c7d411928aa0e6545a58abc96d7 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Thu, 19 Sep 2019 16:51:47 +0200 Subject: [PATCH] [feat, UX] Ignore hold corners (#5404) Closes . --- .../apps/reader/modules/readergesture.lua | 19 ++++++++++++++++++- .../elements/common_settings_menu_table.lua | 10 ++++++++++ .../ui/elements/filemanager_menu_order.lua | 1 + frontend/ui/elements/reader_menu_order.lua | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index dfebcb1cb..e9c5ad23e 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -69,6 +69,7 @@ local action_strings = { decrease_frontlight = _("Decrease frontlight brightness"), increase_frontlight_warmth = _("Increase frontlight warmth"), decrease_frontlight_warmth = _("Decrease frontlight warmth"), + toggle_hold_corners = _("Toggle hold corners"), toggle_gsensor = _("Toggle accelerometer"), toggle_rotation = _("Toggle rotation"), @@ -156,6 +157,7 @@ These advanced gestures consist of either straight swipes or diagonal swipes. To function ReaderGesture:init() if not Device:isTouchDevice() then return end + self.ignore_hold_corners = G_reader_settings:readSetting("ignore_hold_corners") self.multiswipes_enabled = G_reader_settings:readSetting("multiswipes_enabled") self.is_docless = self.ui == nil or self.ui.document == nil self.ges_mode = self.is_docless and "gesture_fm" or "gesture_reader" @@ -707,6 +709,7 @@ function ReaderGesture:buildMenu(ges, default) {"increase_frontlight_warmth", Device:hasNaturalLight()}, {"decrease_frontlight_warmth", Device:hasNaturalLight(), true}, + {"toggle_hold_corners", true}, {"toggle_gsensor", Device:canToggleGSensor()}, {"toggle_rotation", not self.is_docless, true}, @@ -1185,6 +1188,7 @@ function ReaderGesture:registerGesture(ges, action, ges_type, zone, overrides, d self.multiswipes_enabled = false end, }) + return else return self:multiswipeAction(gest.multiswipe_directions, gest) end @@ -1202,7 +1206,8 @@ local function lightFrontlight() end function ReaderGesture:gestureAction(action, ges) - if action == "ignore" then + if action == "ignore" + or (ges.ges == "hold" and self.ignore_hold_corners) then return elseif action == "reading_progress" and ReaderGesture.getReaderProgress then UIManager:show(ReaderGesture.getReaderProgress()) @@ -1363,6 +1368,8 @@ function ReaderGesture:gestureAction(action, ges) end Device:getPowerDevice():toggleFrontlight() self:onShowFLOnOff() + elseif action == "toggle_hold_corners" then + self:onIgnoreHoldCorners() elseif action == "toggle_gsensor" then G_reader_settings:flipNilOrFalse("input_ignore_gsensor") Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor")) @@ -1518,6 +1525,16 @@ function ReaderGesture:pageUpdate(page) end +function ReaderGesture:onIgnoreHoldCorners(ignore_hold_corners) + if ignore_hold_corners == nil then + G_reader_settings:flipNilOrFalse("ignore_hold_corners") + else + G_reader_settings:saveSetting("ignore_hold_corners", ignore_hold_corners) + end + self.ignore_hold_corners = G_reader_settings:isTrue("ignore_hold_corners") + return true +end + function ReaderGesture:onShowFLOnOff() local powerd = Device:getPowerDevice() local new_text diff --git a/frontend/ui/elements/common_settings_menu_table.lua b/frontend/ui/elements/common_settings_menu_table.lua index bab5ded58..47ca4160c 100644 --- a/frontend/ui/elements/common_settings_menu_table.lua +++ b/frontend/ui/elements/common_settings_menu_table.lua @@ -1,5 +1,6 @@ local DateWidget = require("ui/widget/datewidget") local Device = require("device") +local Event = require("ui/event") local InfoMessage = require("ui/widget/infomessage") local Language = require("ui/language") local NetworkMgr = require("ui/network/manager") @@ -171,6 +172,15 @@ common_settings.screen_dpi = require("ui/elements/screen_dpi_menu_table") common_settings.screen_eink_opt = require("ui/elements/screen_eink_opt_menu_table") common_settings.menu_activate = require("ui/elements/menu_activate") common_settings.screen_disable_double_tab = require("ui/elements/screen_disable_double_tap_table") +common_settings.ignore_hold_corners = { + text = _("Ignore hold on corners"), + checked_func = function() + return G_reader_settings:isTrue("ignore_hold_corners") + end, + callback = function() + UIManager:broadcastEvent(Event:new("IgnoreHoldCorners")) + end, +} if Device:canToggleGSensor() then common_settings.screen_toggle_gsensor = require("ui/elements/screen_toggle_gsensor") diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 0c4ef8c6d..ab169ae31 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -83,6 +83,7 @@ local order = { "gesture_intervals", "----------------------------", "menu_activate", + "ignore_hold_corners", "screen_disable_double_tab", }, tools = { diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index 78f1ad34c..75dd17853 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -105,6 +105,7 @@ local order = { "follow_links", "----------------------------", "menu_activate", + "ignore_hold_corners", "screen_disable_double_tab", }, tools = {