Dispatcher: show values (#9777)

reviewable/pr9786/r2
hius07 2 years ago committed by GitHub
parent 06cec98d09
commit 9338b2e524
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -38,7 +38,6 @@ local ReaderZooming = require("apps/reader/modules/readerzooming")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local util = require("util") local util = require("util")
local _ = require("gettext") local _ = require("gettext")
local C_ = _.pgettext
local NC_ = _.npgettext local NC_ = _.npgettext
local T = require("ffi/util").template local T = require("ffi/util").template
@ -51,21 +50,21 @@ local settingsList = {
-- Screen & Lights -- Screen & Lights
show_frontlight_dialog = {category="none", event="ShowFlDialog", title=_("Show frontlight dialog"), screen=true, condition=Device:hasFrontlight()}, show_frontlight_dialog = {category="none", event="ShowFlDialog", title=_("Show frontlight dialog"), screen=true, condition=Device:hasFrontlight()},
toggle_frontlight = {category="none", event="ToggleFrontlight", title=_("Toggle frontlight"), screen=true, condition=Device:hasFrontlight()}, toggle_frontlight = {category="none", event="ToggleFrontlight", title=_("Toggle frontlight"), screen=true, condition=Device:hasFrontlight()},
set_frontlight = {category="absolutenumber", event="SetFlIntensity", min=0, max=Device:getPowerDevice().fl_max, title=_("Set frontlight brightness to %1"), screen=true, condition=Device:hasFrontlight()}, set_frontlight = {category="absolutenumber", event="SetFlIntensity", min=0, max=Device:getPowerDevice().fl_max, title=_("Set frontlight brightness"), screen=true, condition=Device:hasFrontlight()},
increase_frontlight = {category="incrementalnumber", event="IncreaseFlIntensity", min=1, max=Device:getPowerDevice().fl_max, title=_("Increase frontlight brightness by %1"), screen=true, condition=Device:hasFrontlight()}, increase_frontlight = {category="incrementalnumber", event="IncreaseFlIntensity", min=1, max=Device:getPowerDevice().fl_max, title=_("Increase frontlight brightness"), screen=true, condition=Device:hasFrontlight()},
decrease_frontlight = {category="incrementalnumber", event="DecreaseFlIntensity", min=1, max=Device:getPowerDevice().fl_max, title=_("Decrease frontlight brightness by %1"), screen=true, condition=Device:hasFrontlight()}, decrease_frontlight = {category="incrementalnumber", event="DecreaseFlIntensity", min=1, max=Device:getPowerDevice().fl_max, title=_("Decrease frontlight brightness"), screen=true, condition=Device:hasFrontlight()},
set_frontlight_warmth = {category="absolutenumber", event="SetFlWarmth", min=0, max=100, title=_("Set frontlight warmth to %1"), screen=true, condition=Device:hasNaturalLight()}, set_frontlight_warmth = {category="absolutenumber", event="SetFlWarmth", min=0, max=100, title=_("Set frontlight warmth"), screen=true, condition=Device:hasNaturalLight()},
increase_frontlight_warmth = {category="incrementalnumber", event="IncreaseFlWarmth", min=1, max=Device:getPowerDevice().fl_warmth_max, title=_("Increase frontlight warmth by %1"), screen=true, condition=Device:hasNaturalLight()}, increase_frontlight_warmth = {category="incrementalnumber", event="IncreaseFlWarmth", min=1, max=Device:getPowerDevice().fl_warmth_max, title=_("Increase frontlight warmth"), screen=true, condition=Device:hasNaturalLight()},
decrease_frontlight_warmth = {category="incrementalnumber", event="DecreaseFlWarmth", min=1, max=Device:getPowerDevice().fl_warmth_max, title=_("Decrease frontlight warmth by %1"), screen=true, condition=Device:hasNaturalLight(), separator=true}, decrease_frontlight_warmth = {category="incrementalnumber", event="DecreaseFlWarmth", min=1, max=Device:getPowerDevice().fl_warmth_max, title=_("Decrease frontlight warmth"), screen=true, condition=Device:hasNaturalLight(), separator=true},
full_refresh = {category="none", event="FullRefresh", title=_("Full screen refresh"), screen=true}, full_refresh = {category="none", event="FullRefresh", title=_("Full screen refresh"), screen=true},
night_mode = {category="none", event="ToggleNightMode", title=_("Toggle night mode"), screen=true}, night_mode = {category="none", event="ToggleNightMode", title=_("Toggle night mode"), screen=true},
set_night_mode = {category="string", event="SetNightMode", title=_("Set night mode"), screen=true, args={true, false}, toggle={_("On"), _("Off")}, separator=true}, set_night_mode = {category="string", event="SetNightMode", title=_("Set night mode"), screen=true, args={true, false}, toggle={_("on"), _("off")}, separator=true},
set_refresh_rate = {category="absolutenumber", event="SetBothRefreshRates", min=-1, max=200, title=_("Flash every %1 pages (always)"), screen=true, condition=Device:hasEinkScreen()}, set_refresh_rate = {category="absolutenumber", event="SetBothRefreshRates", min=-1, max=200, title=_("Full refresh rate (always)"), screen=true, condition=Device:hasEinkScreen()},
set_day_refresh_rate = {category="absolutenumber", event="SetDayRefreshRate", min=-1, max=200, title=_("Flash every %1 pages (not in night mode)"), screen=true, condition=Device:hasEinkScreen()}, set_day_refresh_rate = {category="absolutenumber", event="SetDayRefreshRate", min=-1, max=200, title=_("Full refresh rate (not in night mode)"), screen=true, condition=Device:hasEinkScreen()},
set_night_refresh_rate = {category="absolutenumber", event="SetNightRefreshRate", min=-1, max=200, title=_("Flash every %1 pages (in night mode)"), screen=true, condition=Device:hasEinkScreen()}, set_night_refresh_rate = {category="absolutenumber", event="SetNightRefreshRate", min=-1, max=200, title=_("Full refresh rate (in night mode)"), screen=true, condition=Device:hasEinkScreen()},
set_flash_on_chapter_boundaries = {category="string", event="SetFlashOnChapterBoundaries", title=_("Always flash on chapter boundaries"), screen=true, condition=Device:hasEinkScreen(), args={true, false}, toggle={_("On"), _("Off")}}, set_flash_on_chapter_boundaries = {category="string", event="SetFlashOnChapterBoundaries", title=_("Always flash on chapter boundaries"), screen=true, condition=Device:hasEinkScreen(), args={true, false}, toggle={_("on"), _("off")}},
toggle_flash_on_chapter_boundaries = {category="none", event="ToggleFlashOnChapterBoundaries", title=_("Toggle flashing on chapter boundaries"), screen=true, condition=Device:hasEinkScreen()}, toggle_flash_on_chapter_boundaries = {category="none", event="ToggleFlashOnChapterBoundaries", title=_("Toggle flashing on chapter boundaries"), screen=true, condition=Device:hasEinkScreen()},
set_no_flash_on_second_chapter_page = {category="string", event="SetNoFlashOnSecondChapterPage", title=_("Never flash on chapter's 2nd page"), screen=true, condition=Device:hasEinkScreen(), args={true, false}, toggle={_("On"), _("Off")}}, set_no_flash_on_second_chapter_page = {category="string", event="SetNoFlashOnSecondChapterPage", title=_("Never flash on chapter's 2nd page"), screen=true, condition=Device:hasEinkScreen(), args={true, false}, toggle={_("on"), _("off")}},
toggle_no_flash_on_second_chapter_page = {category="none", event="ToggleNoFlashOnSecondChapterPage", title=_("Toggle flashing on chapter's 2nd page"), screen=true, condition=Device:hasEinkScreen(), separator=true}, toggle_no_flash_on_second_chapter_page = {category="none", event="ToggleNoFlashOnSecondChapterPage", title=_("Toggle flashing on chapter's 2nd page"), screen=true, condition=Device:hasEinkScreen(), separator=true},
-- Device settings -- Device settings
@ -141,13 +140,13 @@ local settingsList = {
set_highlight_action = {category="string", event="SetHighlightAction", title=_("Set highlight action"), args_func=ReaderHighlight.getHighlightActions, reader=true}, set_highlight_action = {category="string", event="SetHighlightAction", title=_("Set highlight action"), args_func=ReaderHighlight.getHighlightActions, reader=true},
cycle_highlight_action = {category="none", event="CycleHighlightAction", title=_("Cycle highlight action"), reader=true}, cycle_highlight_action = {category="none", event="CycleHighlightAction", title=_("Cycle highlight action"), reader=true},
cycle_highlight_style = {category="none", event="CycleHighlightStyle", title=_("Cycle highlight style"), reader=true}, cycle_highlight_style = {category="none", event="CycleHighlightStyle", title=_("Cycle highlight style"), reader=true},
page_jmp = {category="absolutenumber", event="GotoViewRel", min=-100, max=100, title=_("Go %1 pages"), reader=true}, page_jmp = {category="absolutenumber", event="GotoViewRel", min=-100, max=100, title=_("Turn pages"), reader=true},
panel_zoom_toggle = {category="none", event="TogglePanelZoomSetting", title=_("Toggle panel zoom"), paging=true, separator=true}, panel_zoom_toggle = {category="none", event="TogglePanelZoomSetting", title=_("Toggle panel zoom"), paging=true, separator=true},
-- rolling reader settings -- rolling reader settings
set_font = {category="string", event="SetFont", title=_("Set font"), rolling=true, args_func=require("fontlist").getFontArgFunc,}, set_font = {category="string", event="SetFont", title=_("Set font"), rolling=true, args_func=require("fontlist").getFontArgFunc,},
increase_font = {category="incrementalnumber", event="IncreaseFontSize", min=0.5, max=255, step=0.5, title=_("Increase font size by %1"), rolling=true}, increase_font = {category="incrementalnumber", event="IncreaseFontSize", min=0.5, max=255, step=0.5, title=_("Increase font size"), rolling=true},
decrease_font = {category="incrementalnumber", event="DecreaseFontSize", min=0.5, max=255, step=0.5, title=_("Decrease font size by %1"), rolling=true}, decrease_font = {category="incrementalnumber", event="DecreaseFontSize", min=0.5, max=255, step=0.5, title=_("Decrease font size"), rolling=true},
-- paging reader settings -- paging reader settings
toggle_page_flipping = {category="none", event="TogglePageFlipping", title=_("Toggle page flipping"), paging=true}, toggle_page_flipping = {category="none", event="TogglePageFlipping", title=_("Toggle page flipping"), paging=true},
@ -165,9 +164,9 @@ local settingsList = {
b_page_margin = {category="absolutenumber", rolling=true, separator=true}, b_page_margin = {category="absolutenumber", rolling=true, separator=true},
view_mode = {category="string", rolling=true}, view_mode = {category="string", rolling=true},
block_rendering_mode = {category="string", rolling=true}, block_rendering_mode = {category="string", rolling=true},
render_dpi = {category="string", rolling=true}, render_dpi = {category="string", title=_("Zoom"), rolling=true},
line_spacing = {category="absolutenumber", rolling=true, separator=true}, line_spacing = {category="absolutenumber", rolling=true, separator=true},
font_size = {category="absolutenumber", title=_("Set font size to %1"), rolling=true, step=0.5}, font_size = {category="absolutenumber", title=_("Set font size"), rolling=true, step=0.5},
font_base_weight = {category="string", rolling=true}, font_base_weight = {category="string", rolling=true},
font_gamma = {category="string", rolling=true}, font_gamma = {category="string", rolling=true},
font_hinting = {category="string", rolling=true}, font_hinting = {category="string", rolling=true},
@ -435,6 +434,7 @@ function Dispatcher:init()
settingsList[name].default = option.default_value settingsList[name].default = option.default_value
end end
end end
settingsList[name].unit = option.more_options_param and option.more_options_param.unit
end end
end end
end end
@ -506,20 +506,34 @@ function Dispatcher:_itemsCount(settings)
end end
-- Returns a display name for the item. -- Returns a display name for the item.
function Dispatcher:getNameFromItem(item, settings) function Dispatcher:getNameFromItem(item, settings, dont_show_value)
if settingsList[item] == nil then if settingsList[item] == nil then
return _("Unknown item") return _("Unknown item")
end end
local amount local title, category = settingsList[item].title, settingsList[item].category
if settings ~= nil and settings[item] ~= nil then local value = settings and settings[item]
amount = settings[item] if dont_show_value or value == nil or (value == 0 and category == "incrementalnumber") then
end return title
if amount == nil else
or (amount == 0 and settingsList[item].category == "incrementalnumber") local display_value
then if category == "string" or category == "configurable" then
amount = C_("Number placeholder", "#") if type(value) == "table" then
display_value = string.format("%d / %d", unpack(value))
else
local value_num = util.arrayContains(settingsList[item].args, value)
display_value = settingsList[item].toggle[value_num]
end
elseif category == "absolutenumber" or category == "incrementalnumber" then
display_value = tostring(value)
end
if display_value then
if settingsList[item].unit then
display_value = display_value .. " " .. settingsList[item].unit
end
title = title .. ": " .. display_value
end
end end
return T(settingsList[item].title, amount) return title
end end
-- Add the item to the end of the execution order. -- Add the item to the end of the execution order.
@ -661,14 +675,14 @@ function Dispatcher:_addItem(caller, menu, location, settings, section)
precision = "%0.1f" precision = "%0.1f"
end end
local items = SpinWidget:new{ local items = SpinWidget:new{
value = location[settings] ~= nil and location[settings][k] or settingsList[k].default or 0, value = location[settings] ~= nil and location[settings][k] or settingsList[k].default or settingsList[k].min,
value_min = settingsList[k].min, value_min = settingsList[k].min,
value_step = settingsList[k].step or 1, value_step = settingsList[k].step or 1,
precision = precision, precision = precision,
value_hold_step = 5, value_hold_step = 5,
value_max = settingsList[k].max, value_max = settingsList[k].max,
default_value = settingsList[k].default, default_value = settingsList[k].default,
title_text = Dispatcher:getNameFromItem(k, location[settings]), title_text = Dispatcher:getNameFromItem(k, location[settings], true),
ok_always_enabled = true, ok_always_enabled = true,
callback = function(spin) callback = function(spin)
if location[settings] == nil then if location[settings] == nil then
@ -710,14 +724,13 @@ function Dispatcher:_addItem(caller, menu, location, settings, section)
end end
local SpinWidget = require("ui/widget/spinwidget") local SpinWidget = require("ui/widget/spinwidget")
local items = SpinWidget:new{ local items = SpinWidget:new{
value = location[settings] ~= nil and location[settings][k] or 0, value = location[settings] ~= nil and location[settings][k] or settingsList[k].min,
value_min = settingsList[k].min, value_min = settingsList[k].min,
value_step = settingsList[k].step or 1, value_step = settingsList[k].step or 1,
precision = precision, precision = precision,
value_hold_step = 5, value_hold_step = 5,
value_max = settingsList[k].max, value_max = settingsList[k].max,
default_value = 0, title_text = Dispatcher:getNameFromItem(k, location[settings], true),
title_text = Dispatcher:getNameFromItem(k, location[settings]),
info_text = _([[If called by a gesture the amount of the gesture will be used]]), info_text = _([[If called by a gesture the amount of the gesture will be used]]),
ok_always_enabled = true, ok_always_enabled = true,
callback = function(spin) callback = function(spin)
@ -755,9 +768,13 @@ function Dispatcher:_addItem(caller, menu, location, settings, section)
table.insert(sub_item_table, { table.insert(sub_item_table, {
text = tostring(settingsList[k].toggle[i]), text = tostring(settingsList[k].toggle[i]),
checked_func = function() checked_func = function()
return location[settings] ~= nil if location[settings] ~= nil and location[settings][k] ~= nil then
and location[settings][k] ~= nil if type(location[settings][k]) == "table" then
and location[settings][k] == settingsList[k].args[i] return location[settings][k][1] == settingsList[k].args[i][1]
else
return location[settings][k] == settingsList[k].args[i]
end
end
end, end,
callback = function() callback = function()
if location[settings] == nil then if location[settings] == nil then

Loading…
Cancel
Save