mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[feat, UX] Ignore hold corners (#5404)
Closes <https://github.com/koreader/koreader/issues/5401>.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -83,6 +83,7 @@ local order = {
|
||||
"gesture_intervals",
|
||||
"----------------------------",
|
||||
"menu_activate",
|
||||
"ignore_hold_corners",
|
||||
"screen_disable_double_tab",
|
||||
},
|
||||
tools = {
|
||||
|
||||
@@ -105,6 +105,7 @@ local order = {
|
||||
"follow_links",
|
||||
"----------------------------",
|
||||
"menu_activate",
|
||||
"ignore_hold_corners",
|
||||
"screen_disable_double_tab",
|
||||
},
|
||||
tools = {
|
||||
|
||||
Reference in New Issue
Block a user