Kopt/Creoptions: change to using an event to update configurable. Abstract implimentation out of ConfigDialog

reviewable/pr7834/r1
yparitcher 3 years ago committed by Martín Fernández
parent 0577f57617
commit 002b4d4be9

@ -63,6 +63,12 @@ function ReaderCoptListener:onReadSettings(config)
self:rescheduleHeaderRefreshIfNeeded() -- schedule (or not) first refresh self:rescheduleHeaderRefreshIfNeeded() -- schedule (or not) first refresh
end end
function ReaderCoptListener:onConfigChange(option_name, option_value)
self.document.configurable[option_name] = option_value
self.ui:handleEvent(Event:new("StartActivityIndicator"))
return true
end
function ReaderCoptListener:onSetFontSize(font_size) function ReaderCoptListener:onSetFontSize(font_size)
self.document.configurable.font_size = font_size self.document.configurable.font_size = font_size
end end

@ -1,6 +1,7 @@
local EventListener = require("ui/widget/eventlistener") local EventListener = require("ui/widget/eventlistener")
local Event = require("ui/event") local Event = require("ui/event")
local ReaderZooming = require("apps/reader/modules/readerzooming") local ReaderZooming = require("apps/reader/modules/readerzooming")
local UIManager = require("ui/uimanager")
local util = require("util") local util = require("util")
local ReaderKoptListener = EventListener:new{} local ReaderKoptListener = EventListener:new{}
@ -72,4 +73,11 @@ function ReaderKoptListener:onDocLangUpdate(lang)
end end
end end
function ReaderKoptListener:onConfigChange(option_name, option_value)
self.document.configurable[option_name] = option_value
self.ui:handleEvent(Event:new("StartActivityIndicator"))
UIManager:setDirty("all", "partial")
return true
end
return ReaderKoptListener return ReaderKoptListener

@ -651,7 +651,7 @@ function Dispatcher:execute(ui, settings, gesture)
if v == r then value = settingsList[k].configurable.values[i] break end if v == r then value = settingsList[k].configurable.values[i] break end
end end
end end
ui.document.configurable[settingsList[k].configurable.name] = value ui:handleEvent(Event:new("ConfigChange", settingsList[k].configurable.name, value))
end end
end end
end end

@ -22,7 +22,6 @@ end
local KoptOptions = { local KoptOptions = {
prefix = "kopt", prefix = "kopt",
needs_redraw_on_change = true,
{ {
icon = "appbar.rotation", icon = "appbar.rotation",
options = { options = {

@ -959,8 +959,7 @@ function ConfigDialog:onShowConfigPanel(index)
end end
function ConfigDialog:onConfigChoice(option_name, option_value) function ConfigDialog:onConfigChoice(option_name, option_value)
self.configurable[option_name] = option_value self.ui:handleEvent(Event:new("ConfigChange", option_name, option_value))
self.ui:handleEvent(Event:new("StartActivityIndicator"))
return true return true
end end
@ -982,18 +981,9 @@ function ConfigDialog:onConfigChoose(values, name, event, args, events, position
-- Repainting may be delayed depending on options -- Repainting may be delayed depending on options
local refresh_dialog_func = function() local refresh_dialog_func = function()
self.skip_paint = nil self.skip_paint = nil
if self.config_options.needs_redraw_on_change then UIManager:setDirty(self, function()
-- Some Kopt document event handlers just save their setting, return "ui", self.dialog_frame.dimen
-- and need a full repaint for kopt to load these settings, end)
-- notice the change, and redraw the document
UIManager:setDirty("all", "partial")
else
-- CreDocument event handlers do their own refresh:
-- we can just redraw our frame
UIManager:setDirty(self, function()
return "ui", self.dialog_frame.dimen
end)
end
end end
local when_applied_callback = nil local when_applied_callback = nil
if type(hide_on_apply) == "number" then -- timeout if type(hide_on_apply) == "number" then -- timeout
@ -1033,18 +1023,9 @@ function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events,
-- Repainting may be delayed depending on options -- Repainting may be delayed depending on options
local refresh_dialog_func = function() local refresh_dialog_func = function()
self.skip_paint = nil self.skip_paint = nil
if self.config_options.needs_redraw_on_change then UIManager:setDirty(self, function()
-- Some Kopt document event handlers just save their setting, return "ui", self.dialog_frame.dimen
-- and need a full repaint for kopt to load these settings, end)
-- notice the change, and redraw the document
UIManager:setDirty("all", "partial")
else
-- CreDocument event handlers do their own refresh:
-- we can just redraw our frame
UIManager:setDirty(self, function()
return "ui", self.dialog_frame.dimen
end)
end
end end
local when_applied_callback = nil local when_applied_callback = nil
if type(hide_on_apply) == "number" then -- timeout if type(hide_on_apply) == "number" then -- timeout
@ -1139,24 +1120,15 @@ function ConfigDialog:onConfigMoreChoose(values, name, event, args, name_text, m
if self.skip_paint and not keep_skip_paint then if self.skip_paint and not keep_skip_paint then
self.skip_paint = nil self.skip_paint = nil
end end
if self.config_options.needs_redraw_on_change then if self.skip_paint then
-- Some Kopt document event handlers just save their setting, -- Redraw anything below the now hidden ConfigDialog
-- and need a full repaint for kopt to load these settings, UIManager:setDirty("all", function()
-- notice the change, and redraw the document return "partial", self.dialog_frame.dimen
UIManager:setDirty("all", "partial") end)
else else
-- CreDocument event handlers do their own refresh: UIManager:setDirty(self, function()
-- we can just redraw our frame return "ui", self.dialog_frame.dimen
if self.skip_paint then end)
-- Redraw anything below the now hidden ConfigDialog
UIManager:setDirty("all", function()
return "partial", self.dialog_frame.dimen
end)
else
UIManager:setDirty(self, function()
return "ui", self.dialog_frame.dimen
end)
end
end end
end end
local hide_on_picker_show = more_options_param.hide_on_picker_show local hide_on_picker_show = more_options_param.hide_on_picker_show

Loading…
Cancel
Save