[feat] Dispatcher: Add 'Set page-turn button inversion' (#13836)
Some checks failed
macos / macOS 13 x86-64 🔨15.2 🎯10.15 (push) Has been cancelled
macos / macOS 14 ARM64 🔨15.4 🎯11.0 (push) Has been cancelled

Currently you can only toggle page turn buttons to inverted or not. This
commit adds the ability to also have an option in dispatcher to set the
value instead of just toggling.

This can be useful for profiles that want to set the value rather then
toggle.
This commit is contained in:
Kevin Hellemun
2025-05-25 18:52:11 +02:00
committed by GitHub
parent 4116c6d35b
commit 0bb14ad84b
2 changed files with 37 additions and 8 deletions

View File

@@ -5,6 +5,7 @@ local Notification = require("ui/widget/notification")
local Screen = Device.screen
local UIManager = require("ui/uimanager")
local bit = require("bit")
local logger = require("logger")
local _ = require("gettext")
local T = require("ffi/util").template
@@ -342,8 +343,7 @@ function DeviceListener:onSwapPageTurnButtons(side)
if side == "left" then
-- Revert any prior global inversions first, as we could end up with an all greyed out menu.
if G_reader_settings:isTrue("input_invert_page_turn_keys") then
G_reader_settings:makeFalse("input_invert_page_turn_keys")
Device:invertButtons()
self:setPageTurnButtonDirection(true)
end
G_reader_settings:flipNilOrFalse("input_invert_left_page_turn_keys")
Device:invertButtonsLeft()
@@ -355,8 +355,7 @@ function DeviceListener:onSwapPageTurnButtons(side)
elseif side == "right" then
-- Revert any prior global inversions first, as we could end up with an all greyed out menu.
if G_reader_settings:isTrue("input_invert_page_turn_keys") then
G_reader_settings:makeFalse("input_invert_page_turn_keys")
Device:invertButtons()
self:setPageTurnButtonDirection(true)
end
G_reader_settings:flipNilOrFalse("input_invert_right_page_turn_keys")
Device:invertButtonsRight()
@@ -370,8 +369,7 @@ function DeviceListener:onSwapPageTurnButtons(side)
if G_reader_settings:isTrue("input_invert_left_page_turn_keys") and G_reader_settings:isTrue("input_invert_right_page_turn_keys") then
G_reader_settings:makeFalse("input_invert_left_page_turn_keys")
G_reader_settings:makeFalse("input_invert_right_page_turn_keys")
G_reader_settings:makeFalse("input_invert_page_turn_keys")
Device:invertButtons()
self:setPageTurnButtonDirection(true)
new_text = _("Page-turn buttons no longer inverted.")
Notification:notify(new_text)
return true
@@ -394,6 +392,35 @@ function DeviceListener:onSwapPageTurnButtons(side)
return true
end
-- @param invert bool if the page turn buttons should be set to inverted or not
function DeviceListener:setPageTurnButtonDirection(invert)
local setting = G_reader_settings:readSetting("input_invert_page_turn_keys")
if invert == setting then
return
end
G_reader_settings:saveSetting("input_invert_page_turn_keys", invert)
Device:invertButtons()
end
-- @param invert bool if the page turn buttons should be set to inverted or not
function DeviceListener:onSetPageTurnButtonDirection(invert)
local setting = G_reader_settings:readSetting("input_invert_page_turn_keys")
logger.dbg("DeviceListener:onSetPageTurnButtonDirection", invert, setting)
if invert == setting then
logger.dbg("DeviceListener:onSetPageTurnButtonDirection", "not toggling page turn buttons")
return
end
logger.dbg("DeviceListener:onSetPageTurnButtonDirection", "toggling page turn buttons")
self:setPageTurnButtonDirection(invert)
local text
if invert then
text = _("Page-turn buttons inverted.")
else
text = _("Page-turn buttons no longer inverted.")
end
Notification:notify(text)
end
function DeviceListener:onToggleKeyRepeat(toggle)
if toggle == true then
G_reader_settings:makeFalse("input_no_key_repeat")

View File

@@ -86,7 +86,8 @@ local settingsList = {
----
swap_left_page_turn_buttons = {category="none", event="SwapPageTurnButtons", arg="left", title=_("Invert left-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},
swap_right_page_turn_buttons = {category="none", event="SwapPageTurnButtons", arg="right", title=_("Invert right-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},
swap_page_turn_buttons = {category="none", event="SwapPageTurnButtons", title=_("Invert page-turn buttons"), device=true, condition=Device:hasKeys(), separator=true},
swap_page_turn_buttons = {category="none", event="SwapPageTurnButtons", title=_("Invert page-turn buttons"), device=true, condition=Device:hasKeys()},
set_page_turn_buttons = {category="string", event="SetPageTurnButtonDirection", title=_("Set page-turn button inversion"), device=true, condition=Device:hasKeys(), args = {true, false}, toggle = { _("on"), _("off")}, separator=true},
----
toggle_key_repeat = {category="none", event="ToggleKeyRepeat", title=_("Toggle key repeat"), device=true, condition=Device:hasKeys() and Device:canKeyRepeat(), separator=true},
toggle_gsensor = {category="none", event="ToggleGSensor", title=_("Toggle accelerometer"), device=true, condition=Device:hasGSensor()},
@@ -323,9 +324,10 @@ local dispatcher_menu_order = {
"touch_input_off",
"toggle_touch_input",
----
"swap_page_turn_buttons",
"swap_left_page_turn_buttons",
"swap_right_page_turn_buttons",
"swap_page_turn_buttons",
"set_page_turn_buttons",
----
"toggle_key_repeat",
"toggle_gsensor",