mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Style tweaks: add 'Set on/off' action to Dispatcher (#13242)
This commit is contained in:
@@ -248,7 +248,8 @@ local ReaderStyleTweak = WidgetContainer:extend{
|
||||
nb_enabled_tweaks = 0, -- for use by main menu item
|
||||
css_text = nil, -- aggregated css text from tweaks individual css snippets
|
||||
enabled = true, -- allows for toggling between selected tweaks / none
|
||||
dispatcher_prefix = "style_tweak_",
|
||||
dispatcher_prefix_set = "style_tweak_set_",
|
||||
dispatcher_prefix_toggle = "style_tweak_",
|
||||
}
|
||||
|
||||
function ReaderStyleTweak:isTweakEnabled(tweak_id)
|
||||
@@ -446,12 +447,16 @@ function ReaderStyleTweak:onSaveSettings()
|
||||
end
|
||||
|
||||
local function dispatcherRegisterStyleTweak(tweak_id, tweak_title)
|
||||
Dispatcher:registerAction(ReaderStyleTweak.dispatcher_prefix..tweak_id,
|
||||
{category="none", event="ToggleStyleTweak", arg=tweak_id, title=T(_("Toggle style tweak: %1"), tweak_title), rolling=true})
|
||||
Dispatcher:registerAction(ReaderStyleTweak.dispatcher_prefix_set..tweak_id,
|
||||
{category="string", event="ToggleStyleTweak", arg=tweak_id, title=T(_("Style tweak '%1'"), tweak_title), rolling=true,
|
||||
args={true, false}, toggle={_("on"), _("off")}})
|
||||
Dispatcher:registerAction(ReaderStyleTweak.dispatcher_prefix_toggle..tweak_id,
|
||||
{category="none", event="ToggleStyleTweak", arg=tweak_id, title=T(_("Style tweak '%1' toggle"), tweak_title), rolling=true})
|
||||
end
|
||||
|
||||
local function dispatcherUnregisterStyleTweak(tweak_id)
|
||||
Dispatcher:removeAction(ReaderStyleTweak.dispatcher_prefix..tweak_id)
|
||||
Dispatcher:removeAction(ReaderStyleTweak.dispatcher_prefix_toggle..tweak_id)
|
||||
Dispatcher:removeAction(ReaderStyleTweak.dispatcher_prefix_set..tweak_id)
|
||||
end
|
||||
|
||||
function ReaderStyleTweak:init()
|
||||
@@ -567,7 +572,8 @@ You can enable individual tweaks on this book with a tap, or view more details a
|
||||
self.tweaks_in_dispatcher[item.id] = nil
|
||||
dispatcherUnregisterStyleTweak(item.id)
|
||||
if self.ui.profiles then
|
||||
self.ui.profiles:updateProfiles(self.dispatcher_prefix..item.id)
|
||||
self.ui.profiles:updateProfiles(self.dispatcher_prefix_toggle..item.id)
|
||||
self.ui.profiles:updateProfiles(self.dispatcher_prefix_set..item.id)
|
||||
end
|
||||
else
|
||||
self.tweaks_in_dispatcher[item.id] = item.title
|
||||
@@ -714,8 +720,13 @@ function ReaderStyleTweak:addToMainMenu(menu_items)
|
||||
end
|
||||
|
||||
function ReaderStyleTweak:onToggleStyleTweak(tweak_id, item, no_notification)
|
||||
local text
|
||||
local toggle
|
||||
if type(tweak_id) == "table" then -- Dispatcher action 'Style tweak set on/off'
|
||||
tweak_id, toggle = unpack(tweak_id)
|
||||
end
|
||||
local enabled, g_enabled = self:isTweakEnabled(tweak_id)
|
||||
if enabled == toggle then return true end
|
||||
local text
|
||||
if enabled then
|
||||
if g_enabled then
|
||||
-- if globally enabled, mark it as disabled
|
||||
@@ -749,6 +760,7 @@ function ReaderStyleTweak:onToggleStyleTweak(tweak_id, item, no_notification)
|
||||
text = text,
|
||||
})
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function ReaderStyleTweak:onDispatcherRegisterActions()
|
||||
|
||||
@@ -1192,21 +1192,23 @@ function Dispatcher:execute(settings, exec_props)
|
||||
end
|
||||
local category = settingsList[k].category
|
||||
local event = settingsList[k].event
|
||||
local arg = settingsList[k].arg
|
||||
if category == "none" then
|
||||
if settingsList[k].arg ~= nil then
|
||||
UIManager:sendEvent(Event:new(event, settingsList[k].arg, exec_props))
|
||||
if arg ~= nil then
|
||||
UIManager:sendEvent(Event:new(event, arg, exec_props))
|
||||
else
|
||||
UIManager:sendEvent(Event:new(event))
|
||||
end
|
||||
elseif category == "absolutenumber" or category == "string" then
|
||||
UIManager:sendEvent(Event:new(event, v))
|
||||
arg = arg ~= nil and { arg, v } or v
|
||||
UIManager:sendEvent(Event:new(event, arg))
|
||||
elseif category == "arg" then
|
||||
-- the event can accept a gesture object or an argument
|
||||
local arg = gesture or settingsList[k].arg
|
||||
arg = gesture or arg
|
||||
UIManager:sendEvent(Event:new(event, arg))
|
||||
elseif category == "incrementalnumber" then
|
||||
-- the event can accept a gesture object or a number
|
||||
local arg = v ~= 0 and v or gesture or 0
|
||||
arg = v ~= 0 and v or gesture or 0
|
||||
UIManager:sendEvent(Event:new(event, arg))
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user