You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
local ButtonDialog = require("ui/widget/buttondialog")
|
|
|
|
local FileChooser = require("ui/widget/filechooser")
|
|
|
|
local UIManager = require("ui/uimanager")
|
|
|
|
local util = require("ffi/util")
|
|
|
|
local _ = require("gettext")
|
|
|
|
|
|
|
|
local PathChooser = FileChooser:extend{
|
|
|
|
title = _("Choose Path"),
|
|
|
|
no_title = false,
|
|
|
|
show_path = true,
|
|
|
|
is_popout = false,
|
Text input fixes and enhancements (#4084)
InputText, ScrollTextWidget, TextBoxWidget:
- proper line scrolling when moving cursor or inserting/deleting text
to behave like most text editors do
- fix cursor navigation, optimize refreshes when moving only the cursor,
don't recreate the textwidget when moving cursor up/down
- optimize refresh areas, stick to "ui" to avoid a "partial" black
flash every 6 appended or deleted chars
InputText:
- fix issue when toggling Show password multiple times
- new option: InputText.cursor_at_end (default: true)
- if no InputText.height provided, measure the text widget height
that we would start with, and use a ScrollTextWidget with that
fixed height, so widget does not overflow container if we extend
the text and increase the number of lines
- as we are using "ui" refreshes while text editing, allows refreshing
the InputText with a diagonal swipe on it (actually, refresh the
whole screen, which allows refreshing the keyboard too if needed)
ScrollTextWidget:
- properly align scrollbar with its TextBoxWidget
TextBoxWidget:
- some cleanup (added new properties to avoid many method calls), added
proxy methods for upper widgets to get them
- reordered/renamed/refactored the *CharPos* methods for easier reading
(sorry for the diff that won't help reviewing, but that was needed)
InputDialog:
- new options:
allow_newline = false, -- allow entering new lines
cursor_at_end = true, -- starts with cursor at end of text, ready to append
fullscreen = false, -- adjust to full screen minus keyboard
condensed = false, -- true will prevent adding air and balance between elements
add_scroll_buttons = false, -- add scroll Up/Down buttons to first row of buttons
add_nav_bar = false, -- append a row of page navigation buttons
- find the most adequate text height, when none provided or fullscreen, to
not overflow screen (and not be stuck with Cancel/Save buttons hidden)
- had to disable the use of a MovableContainer (many issues like becoming
transparent when a PathChooser comes in front, Hold to paste from
clipboard, moving the InputDialog under the keyboard and getting stuck...)
GestureRange: fix possible crash (when event processed after widget
destruction ?)
LoginDialog: fix some ui stack increase and possible crash when switching
focus many times.
6 years ago
|
|
|
covers_fullscreen = true, -- set it to false if you set is_popout = true
|
|
|
|
is_borderless = true,
|
|
|
|
show_filesize = false,
|
|
|
|
file_filter = function() return false end, -- filter out regular files
|
|
|
|
}
|
|
|
|
|
|
|
|
function PathChooser:onMenuSelect(item)
|
|
|
|
self.path = util.realpath(item.path)
|
|
|
|
local sub_table = self:genItemTableFromPath(self.path)
|
|
|
|
-- if sub table only have one entry(itself) we do nothing
|
|
|
|
if #sub_table > 1 then
|
|
|
|
self:changeToPath(item.path)
|
|
|
|
end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
function PathChooser:onMenuHold(item)
|
|
|
|
local onConfirm = self.onConfirm
|
|
|
|
self.button_dialog = ButtonDialog:new{
|
|
|
|
buttons = {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
text = _("Confirm"),
|
|
|
|
callback = function()
|
|
|
|
if onConfirm then onConfirm(item.path) end
|
|
|
|
UIManager:close(self.button_dialog)
|
|
|
|
UIManager:close(self)
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text = _("Cancel"),
|
|
|
|
callback = function()
|
|
|
|
UIManager:close(self.button_dialog)
|
|
|
|
UIManager:close(self)
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
UIManager:show(self.button_dialog)
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
return PathChooser
|