mirror of
https://github.com/koreader/koreader
synced 2024-11-16 06:12:56 +00:00
dfd87447da
* [toggleswitch] Add support for key navigation to this widget Add the onFocus an onUnfocus event handler add a new function that just circle the switch if not touch event is detected * Add key navigation to the readermenu The shortcut is still Alt-gr on sdl, to be defined on Kindle * Remove the old method of handling the Press key. Now the event is handled by the main widget who implement focusmanager and then dispatched to the currently focused item. Modify the fine font tuning only for non touch-devices See : https://github.com/koreader/koreader/pull/3785#issuecomment-375306466
189 lines
6.4 KiB
Lua
189 lines
6.4 KiB
Lua
local Device = require("device")
|
|
local S = require("ui/data/strings")
|
|
local Screen = Device.screen
|
|
|
|
local _ = require("gettext")
|
|
|
|
-- add multiply operator to Aa dict
|
|
local Aa = setmetatable({"Aa"}, {
|
|
__mul = function(t, mul)
|
|
local new = {}
|
|
for i = 1, mul do
|
|
for _, v in ipairs(t) do table.insert(new, v) end
|
|
end
|
|
return new
|
|
end
|
|
})
|
|
|
|
local function enable_if_equals(configurable, option, value)
|
|
return configurable[option] == value
|
|
end
|
|
|
|
local CreOptions = {
|
|
prefix = 'copt',
|
|
{
|
|
icon = "resources/icons/appbar.transform.rotate.right.large.png",
|
|
options = {
|
|
{
|
|
name = "screen_mode",
|
|
name_text = S.SCREEN_MODE,
|
|
toggle = {S.PORTRAIT, S.LANDSCAPE},
|
|
alternate = false,
|
|
args = {"portrait", "landscape"},
|
|
default_arg = "portrait",
|
|
current_func = function() return Screen:getScreenMode() end,
|
|
event = "ChangeScreenMode",
|
|
}
|
|
}
|
|
},
|
|
{
|
|
icon = "resources/icons/appbar.column.two.large.png",
|
|
options = {
|
|
{
|
|
name = "view_mode",
|
|
name_text = S.VIEW_MODE,
|
|
toggle = {S.VIEW_SCROLL, S.VIEW_PAGE},
|
|
values = {1, 0},
|
|
default_value = 0,
|
|
args = {"scroll", "page"},
|
|
default_arg = "page",
|
|
event = "SetViewMode",
|
|
},
|
|
{
|
|
name = "line_spacing",
|
|
name_text = S.LINE_SPACING,
|
|
toggle = {S.SMALL, S.MEDIUM, S.LARGE},
|
|
values = {
|
|
DCREREADER_CONFIG_LINE_SPACE_PERCENT_SMALL,
|
|
DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM,
|
|
DCREREADER_CONFIG_LINE_SPACE_PERCENT_LARGE,
|
|
},
|
|
default_value = DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM,
|
|
event = "SetLineSpace",
|
|
args = {
|
|
DCREREADER_CONFIG_LINE_SPACE_PERCENT_SMALL,
|
|
DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM,
|
|
DCREREADER_CONFIG_LINE_SPACE_PERCENT_LARGE,
|
|
},
|
|
},
|
|
{
|
|
name = "page_margins",
|
|
name_text = S.PAGE_MARGIN,
|
|
toggle = {S.SMALL, S.MEDIUM, S.LARGE},
|
|
values = {
|
|
DCREREADER_CONFIG_MARGIN_SIZES_SMALL,
|
|
DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM,
|
|
DCREREADER_CONFIG_MARGIN_SIZES_LARGE,
|
|
},
|
|
default_value = DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM,
|
|
event = "SetPageMargins",
|
|
args = {
|
|
DCREREADER_CONFIG_MARGIN_SIZES_SMALL,
|
|
DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM,
|
|
DCREREADER_CONFIG_MARGIN_SIZES_LARGE,
|
|
},
|
|
},
|
|
}
|
|
},
|
|
{
|
|
icon = "resources/icons/appbar.text.size.large.png",
|
|
options = {
|
|
{
|
|
name = "font_size",
|
|
item_text = Aa * #DCREREADER_CONFIG_FONT_SIZES,
|
|
item_align_center = 1.0,
|
|
spacing = 15,
|
|
item_font_size = DCREREADER_CONFIG_FONT_SIZES,
|
|
values = DCREREADER_CONFIG_FONT_SIZES,
|
|
default_value = DCREREADER_CONFIG_DEFAULT_FONT_SIZE,
|
|
args = DCREREADER_CONFIG_FONT_SIZES,
|
|
event = "SetFontSize",
|
|
},
|
|
{
|
|
name = "font_fine_tune",
|
|
name_text = S.FONTSIZE_FINE_TUNING,
|
|
toggle = Device:isTouchDevice() and {S.DECREASE, S.INCREASE} or nil,
|
|
item_text = not Device:isTouchDevice() and {S.DECREASE, S.INCREASE} or nil,
|
|
event = "ChangeSize",
|
|
args = {"decrease", "increase"},
|
|
alternate = false,
|
|
}
|
|
}
|
|
},
|
|
{
|
|
icon = "resources/icons/appbar.grade.b.large.png",
|
|
options = {
|
|
{
|
|
name = "font_weight",
|
|
name_text = S.FONT_WEIGHT,
|
|
toggle = {S.REGULAR, S.BOLD},
|
|
values = {0, 1},
|
|
default_value = 0,
|
|
args = {0, 1},
|
|
event = "ToggleFontBolder",
|
|
},
|
|
{
|
|
name = "font_gamma",
|
|
name_text = S.CONTRAST,
|
|
buttonprogress = true,
|
|
default_value = 15, -- gamma = 1.0
|
|
default_pos = 2,
|
|
values = {10, 15, 25, 30, 36, 43, 49, 56},
|
|
event = "SetFontGamma",
|
|
args = {10, 15, 25, 30, 36, 43, 49, 56},
|
|
-- gamma values for these indexes are:
|
|
labels = {0.8, 1.0, 1.45, 1.90, 2.50, 4.0, 8.0, 15.0},
|
|
},
|
|
{
|
|
name = "font_hinting",
|
|
name_text = S.FONT_HINT,
|
|
toggle = {S.OFF, S.NATIVE, S.AUTO},
|
|
values = {0, 1, 2},
|
|
default_value = 2,
|
|
args = {0, 1, 2},
|
|
event = "SetFontHinting",
|
|
}
|
|
}
|
|
},
|
|
{
|
|
icon = "resources/icons/appbar.settings.large.png",
|
|
options = {
|
|
{
|
|
name = "status_line",
|
|
name_text = S.PROGRESS_BAR,
|
|
toggle = {S.FULL, S.MINI},
|
|
values = {0, 1},
|
|
default_value = DCREREADER_PROGRESS_BAR,
|
|
args = {0, 1},
|
|
default_arg = DCREREADER_PROGRESS_BAR,
|
|
event = "SetStatusLine",
|
|
},
|
|
{
|
|
name = "embedded_css",
|
|
name_text = S.EMBEDDED_STYLE,
|
|
toggle = {S.ON, S.OFF},
|
|
values = {1, 0},
|
|
default_value = 1,
|
|
args = {true, false},
|
|
default_arg = nil,
|
|
event = "ToggleEmbeddedStyleSheet",
|
|
},
|
|
{
|
|
name = "embedded_fonts",
|
|
name_text = S.EMBEDDED_FONTS,
|
|
toggle = {S.ON, S.OFF},
|
|
values = {1, 0},
|
|
default_value = 1,
|
|
args = {true, false},
|
|
default_arg = nil,
|
|
event = "ToggleEmbeddedFonts",
|
|
enabled_func = function(configurable)
|
|
return enable_if_equals(configurable, "embedded_css", 1)
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
return CreOptions
|