|
|
|
@ -6,12 +6,14 @@ local Dispatcher = require("dispatcher")
|
|
|
|
|
local Event = require("ui/event")
|
|
|
|
|
local FFIUtil = require("ffi/util")
|
|
|
|
|
local Geom = require("ui/geometry")
|
|
|
|
|
local GestureDetector = require("device/gesturedetector")
|
|
|
|
|
local GestureRange = require("ui/gesturerange")
|
|
|
|
|
local InfoMessage = require("ui/widget/infomessage")
|
|
|
|
|
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
|
|
|
local InputDialog = require("ui/widget/inputdialog")
|
|
|
|
|
local LuaSettings = require("luasettings")
|
|
|
|
|
local Screen = require("device").screen
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local UIManager = require("ui/uimanager")
|
|
|
|
|
local util = require("util")
|
|
|
|
|
local T = FFIUtil.template
|
|
|
|
@ -441,18 +443,13 @@ function Gestures:addIntervals(menu_items)
|
|
|
|
|
text = _("Text selection rate"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local current_value = G_reader_settings:readSetting("hold_pan_rate")
|
|
|
|
|
if not current_value then
|
|
|
|
|
current_value = Screen.low_pan_rate and 5.0 or 30.0
|
|
|
|
|
end
|
|
|
|
|
local default_value = Screen.low_pan_rate and 5.0 or 30.0
|
|
|
|
|
local current_value = G_reader_settings:readSetting("hold_pan_rate", default_value)
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Text selection rate"),
|
|
|
|
|
info_text = T(_([[
|
|
|
|
|
info_text = _([[
|
|
|
|
|
The rate is how often screen will be refreshed per second while selecting text.
|
|
|
|
|
Higher values mean faster screen updates, but also use more CPU.
|
|
|
|
|
|
|
|
|
|
Default value: %1]]), Screen.low_pan_rate and 5.0 or 30.0),
|
|
|
|
|
Higher values mean faster screen updates, but also use more CPU.]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = current_value,
|
|
|
|
|
value_min = 1.0,
|
|
|
|
@ -460,7 +457,7 @@ Default value: %1]]), Screen.low_pan_rate and 5.0 or 30.0),
|
|
|
|
|
value_step = 1,
|
|
|
|
|
value_hold_step = 15,
|
|
|
|
|
ok_text = _("Set rate"),
|
|
|
|
|
default_value = Screen.low_pan_rate and 5.0 or 30.0,
|
|
|
|
|
default_value = default_value,
|
|
|
|
|
callback = function(spin)
|
|
|
|
|
G_reader_settings:saveSetting("hold_pan_rate", spin.value)
|
|
|
|
|
UIManager:broadcastEvent(Event:new("UpdateHoldPanRate"))
|
|
|
|
@ -474,15 +471,12 @@ Default value: %1]]), Screen.low_pan_rate and 5.0 or 30.0),
|
|
|
|
|
text = _("Tap interval"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local GestureDetector = require("device/gesturedetector")
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Tap interval"),
|
|
|
|
|
info_text = T(_([[
|
|
|
|
|
info_text = _([[
|
|
|
|
|
Any other taps made within this interval after a first tap will be considered accidental and ignored.
|
|
|
|
|
|
|
|
|
|
The interval value is in milliseconds and can range from 0 (0 seconds) to 2000 (2 seconds).
|
|
|
|
|
Default value: %1]]), GestureDetector.TAP_INTERVAL/1000),
|
|
|
|
|
The interval value is in milliseconds and can range from 0 (0 seconds) to 2000 (2 seconds).]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = GestureDetector:getInterval("ges_tap_interval")/1000,
|
|
|
|
|
value_min = 0,
|
|
|
|
@ -503,16 +497,14 @@ Default value: %1]]), GestureDetector.TAP_INTERVAL/1000),
|
|
|
|
|
text = _("Tap interval on keyboard"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Tap interval on keyboard"),
|
|
|
|
|
info_text = _([[
|
|
|
|
|
Any other taps made within this interval after a first tap will be considered accidental and ignored.
|
|
|
|
|
|
|
|
|
|
The interval value is in milliseconds and can range from 0 (0 seconds) to 2000 (2 seconds).
|
|
|
|
|
Default value: 0]]),
|
|
|
|
|
The interval value is in milliseconds and can range from 0 (0 seconds) to 2000 (2 seconds).]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = (G_reader_settings:readSetting("ges_tap_interval_on_keyboard") or 0)/1000,
|
|
|
|
|
value = G_reader_settings:readSetting("ges_tap_interval_on_keyboard", 0)/1000,
|
|
|
|
|
value_min = 0,
|
|
|
|
|
value_max = 2000,
|
|
|
|
|
value_step = 50,
|
|
|
|
@ -530,15 +522,12 @@ Default value: 0]]),
|
|
|
|
|
text = _("Double tap interval"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local GestureDetector = require("device/gesturedetector")
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Double tap interval"),
|
|
|
|
|
info_text = T(_([[
|
|
|
|
|
info_text = _([[
|
|
|
|
|
When double tap is enabled, this sets the time to wait for the second tap. A single tap will take at least this long to be detected.
|
|
|
|
|
|
|
|
|
|
The interval value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).
|
|
|
|
|
Default value: %1]]), GestureDetector.DOUBLE_TAP_INTERVAL/1000),
|
|
|
|
|
The interval value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = GestureDetector:getInterval("ges_double_tap_interval")/1000,
|
|
|
|
|
value_min = 100,
|
|
|
|
@ -559,15 +548,12 @@ Default value: %1]]), GestureDetector.DOUBLE_TAP_INTERVAL/1000),
|
|
|
|
|
text = _("Two finger tap duration"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local GestureDetector = require("device/gesturedetector")
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Two finger tap duration"),
|
|
|
|
|
info_text = T(_([[
|
|
|
|
|
info_text = _([[
|
|
|
|
|
This sets the allowed duration of any of the two fingers touch/release for the combined event to be considered a two finger tap.
|
|
|
|
|
|
|
|
|
|
The duration value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).
|
|
|
|
|
Default value: %1]]), GestureDetector.TWO_FINGER_TAP_DURATION/1000),
|
|
|
|
|
The duration value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = GestureDetector:getInterval("ges_two_finger_tap_duration")/1000,
|
|
|
|
|
value_min = 100,
|
|
|
|
@ -588,15 +574,12 @@ Default value: %1]]), GestureDetector.TWO_FINGER_TAP_DURATION/1000),
|
|
|
|
|
text = _("Long-press interval"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local GestureDetector = require("device/gesturedetector")
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Long-press interval"),
|
|
|
|
|
info_text = T(_([[
|
|
|
|
|
info_text = _([[
|
|
|
|
|
If a touch is not released in this interval, it is considered a long-press. On document text, single word selection will then be triggered.
|
|
|
|
|
|
|
|
|
|
The interval value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).
|
|
|
|
|
Default value: %1]]), GestureDetector.HOLD_INTERVAL/1000),
|
|
|
|
|
The interval value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = GestureDetector:getInterval("ges_hold_interval")/1000,
|
|
|
|
|
value_min = 100,
|
|
|
|
@ -617,15 +600,12 @@ Default value: %1]]), GestureDetector.HOLD_INTERVAL/1000),
|
|
|
|
|
text = _("Swipe interval"),
|
|
|
|
|
keep_menu_open = true,
|
|
|
|
|
callback = function()
|
|
|
|
|
local SpinWidget = require("ui/widget/spinwidget")
|
|
|
|
|
local GestureDetector = require("device/gesturedetector")
|
|
|
|
|
local items = SpinWidget:new{
|
|
|
|
|
title_text = _("Swipe interval"),
|
|
|
|
|
info_text = T(_([[
|
|
|
|
|
info_text = _([[
|
|
|
|
|
This sets the maximum delay between the start and the end of a swipe for it to be considered a swipe. Above this interval, it's considered panning.
|
|
|
|
|
|
|
|
|
|
The interval value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).
|
|
|
|
|
Default value: %1]]), GestureDetector.SWIPE_INTERVAL/1000),
|
|
|
|
|
The interval value is in milliseconds and can range from 100 (0.1 seconds) to 2000 (2 seconds).]]),
|
|
|
|
|
width = math.floor(Screen:getWidth() * 0.75),
|
|
|
|
|
value = GestureDetector:getInterval("ges_swipe_interval")/1000,
|
|
|
|
|
value_min = 100,
|
|
|
|
|