2021-08-24 21:51:39 +00:00
|
|
|
local CheckButton = require("ui/widget/checkbutton")
|
2020-09-15 18:39:32 +00:00
|
|
|
local FFIUtil = require("ffi/util")
|
2019-09-06 15:01:37 +00:00
|
|
|
local Language = require("ui/language")
|
2021-08-24 21:51:39 +00:00
|
|
|
local UIManager = require("ui/uimanager")
|
2019-09-06 15:01:37 +00:00
|
|
|
local VirtualKeyboard = require("ui/widget/virtualkeyboard")
|
2021-09-01 20:55:59 +00:00
|
|
|
local util = require("util")
|
2021-08-24 21:51:39 +00:00
|
|
|
local _ = require("gettext")
|
2019-09-06 15:01:37 +00:00
|
|
|
|
2021-08-29 10:29:41 +00:00
|
|
|
local input_dialog, check_button_bold, check_button_border, check_button_compact
|
2021-08-24 21:51:39 +00:00
|
|
|
|
|
|
|
local sub_item_table = {
|
|
|
|
{
|
|
|
|
text = _("Keyboard layout"),
|
|
|
|
sub_item_table = {},
|
|
|
|
},
|
2021-08-29 10:29:41 +00:00
|
|
|
{
|
|
|
|
text = _("Remember last layout"),
|
|
|
|
checked_func = function()
|
|
|
|
return G_reader_settings:nilOrTrue("keyboard_remember_layout")
|
|
|
|
end,
|
|
|
|
callback = function()
|
|
|
|
G_reader_settings:flipNilOrTrue("keyboard_remember_layout")
|
|
|
|
end,
|
|
|
|
separator = true,
|
|
|
|
},
|
2021-08-24 21:51:39 +00:00
|
|
|
{
|
|
|
|
text = _("Keyboard font size"),
|
|
|
|
keep_menu_open = true,
|
|
|
|
callback = function()
|
|
|
|
input_dialog = require("ui/widget/inputdialog"):new{
|
|
|
|
title = _("Keyboard font size"),
|
|
|
|
input = tostring(G_reader_settings:readSetting("keyboard_key_font_size") or 22),
|
|
|
|
input_hint = "(16 - 30)",
|
|
|
|
buttons = {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
text = _("Close"),
|
|
|
|
callback = function()
|
|
|
|
UIManager:close(input_dialog)
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text = _("Apply"),
|
|
|
|
is_enter_default = true,
|
|
|
|
callback = function()
|
|
|
|
local font_size = tonumber(input_dialog:getInputText())
|
|
|
|
if font_size and font_size >= 16 and font_size <= 30 then
|
|
|
|
G_reader_settings:saveSetting("keyboard_key_font_size", font_size)
|
|
|
|
G_reader_settings:saveSetting("keyboard_key_bold", check_button_bold.checked)
|
|
|
|
G_reader_settings:saveSetting("keyboard_key_border", check_button_border.checked)
|
2021-08-29 10:29:41 +00:00
|
|
|
G_reader_settings:saveSetting("keyboard_key_compact", check_button_compact.checked)
|
2021-08-24 21:51:39 +00:00
|
|
|
input_dialog._input_widget:onCloseKeyboard()
|
|
|
|
input_dialog._input_widget:initKeyboard()
|
|
|
|
input_dialog:onShowKeyboard()
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
check_button_bold = CheckButton:new{
|
|
|
|
text = _("in bold"),
|
|
|
|
checked = G_reader_settings:isTrue("keyboard_key_bold"),
|
|
|
|
parent = input_dialog,
|
|
|
|
max_width = input_dialog._input_widget.width,
|
|
|
|
callback = function()
|
2021-08-27 19:21:14 +00:00
|
|
|
check_button_bold:toggleCheck()
|
2021-08-24 21:51:39 +00:00
|
|
|
end,
|
|
|
|
}
|
2021-09-02 20:53:54 +00:00
|
|
|
input_dialog:addWidget(check_button_bold)
|
2021-08-24 21:51:39 +00:00
|
|
|
check_button_border = CheckButton:new{
|
|
|
|
text = _("with border"),
|
|
|
|
checked = G_reader_settings:nilOrTrue("keyboard_key_border"),
|
|
|
|
parent = input_dialog,
|
|
|
|
max_width = input_dialog._input_widget.width,
|
|
|
|
callback = function()
|
2021-08-27 19:21:14 +00:00
|
|
|
check_button_border:toggleCheck()
|
2021-08-24 21:51:39 +00:00
|
|
|
end,
|
|
|
|
}
|
2021-09-02 20:53:54 +00:00
|
|
|
input_dialog:addWidget(check_button_border)
|
2021-08-29 10:29:41 +00:00
|
|
|
check_button_compact = CheckButton:new{
|
|
|
|
text = _("compact"),
|
|
|
|
checked = G_reader_settings:isTrue("keyboard_key_compact"),
|
|
|
|
parent = input_dialog,
|
|
|
|
max_width = input_dialog._input_widget.width,
|
|
|
|
callback = function()
|
|
|
|
check_button_compact:toggleCheck()
|
|
|
|
end,
|
|
|
|
}
|
2021-09-02 20:53:54 +00:00
|
|
|
input_dialog:addWidget(check_button_compact)
|
2021-08-24 21:51:39 +00:00
|
|
|
|
|
|
|
UIManager:show(input_dialog)
|
|
|
|
input_dialog:onShowKeyboard()
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
}
|
2019-09-06 15:01:37 +00:00
|
|
|
|
2021-08-29 10:29:41 +00:00
|
|
|
for k, __ in FFIUtil.orderedPairs(VirtualKeyboard.lang_to_keyboard_layout) do
|
2021-08-24 21:51:39 +00:00
|
|
|
table.insert(sub_item_table[1].sub_item_table, {
|
2019-11-18 16:16:06 +00:00
|
|
|
text_func = function()
|
|
|
|
local text = Language:getLanguageName(k)
|
2021-08-29 10:29:41 +00:00
|
|
|
if G_reader_settings:readSetting("keyboard_layout_default") == k then
|
2019-11-18 16:16:06 +00:00
|
|
|
text = text .. " ★"
|
|
|
|
end
|
|
|
|
return text
|
|
|
|
end,
|
2019-09-06 15:01:37 +00:00
|
|
|
checked_func = function()
|
2019-11-18 16:16:06 +00:00
|
|
|
local keyboard_layouts = G_reader_settings:readSetting("keyboard_layouts") or {}
|
2021-09-01 20:55:59 +00:00
|
|
|
return util.arrayContains(keyboard_layouts, k)
|
2019-09-06 15:01:37 +00:00
|
|
|
end,
|
|
|
|
callback = function()
|
2019-11-18 16:16:06 +00:00
|
|
|
local keyboard_layouts = G_reader_settings:readSetting("keyboard_layouts") or {}
|
2021-09-01 20:55:59 +00:00
|
|
|
local layout_index = util.arrayContains(keyboard_layouts, k)
|
|
|
|
if layout_index then
|
|
|
|
table.remove(keyboard_layouts, layout_index)
|
2021-08-29 10:29:41 +00:00
|
|
|
else
|
2021-09-01 20:55:59 +00:00
|
|
|
if #keyboard_layouts < 4 then
|
|
|
|
table.insert(keyboard_layouts, k)
|
2021-08-29 10:29:41 +00:00
|
|
|
else -- no more space in the 'globe' popup
|
|
|
|
UIManager:show(require("ui/widget/infomessage"):new{
|
|
|
|
text = _("Up to four layouts can be enabled."),
|
|
|
|
timeout = 2,
|
|
|
|
})
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
2019-11-18 16:16:06 +00:00
|
|
|
G_reader_settings:saveSetting("keyboard_layouts", keyboard_layouts)
|
|
|
|
end,
|
|
|
|
hold_callback = function(touchmenu_instance)
|
2021-08-29 10:29:41 +00:00
|
|
|
G_reader_settings:saveSetting("keyboard_layout_default", k)
|
2019-11-18 16:16:06 +00:00
|
|
|
if touchmenu_instance then touchmenu_instance:updateItems() end
|
2019-09-06 15:01:37 +00:00
|
|
|
end,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
|
|
|
return sub_item_table
|