InputDialog: insert TitleBar (#8695)

into InputDialog, MultiInputDialog, OpenWithDialog, LoginDialog widgets.
reviewable/pr8673/r10
hius07 2 years ago committed by GitHub
parent 295ef6b9f7
commit 7783d9c8e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -106,13 +106,11 @@ local GestureRange = require("ui/gesturerange")
local InfoMessage = require("ui/widget/infomessage") local InfoMessage = require("ui/widget/infomessage")
local InputContainer = require("ui/widget/container/inputcontainer") local InputContainer = require("ui/widget/container/inputcontainer")
local InputText = require("ui/widget/inputtext") local InputText = require("ui/widget/inputtext")
local LineWidget = require("ui/widget/linewidget")
local MovableContainer = require("ui/widget/container/movablecontainer") local MovableContainer = require("ui/widget/container/movablecontainer")
local MultiConfirmBox = require("ui/widget/multiconfirmbox") local MultiConfirmBox = require("ui/widget/multiconfirmbox")
local Notification = require("ui/widget/notification") local Notification = require("ui/widget/notification")
local Size = require("ui/size") local Size = require("ui/size")
local TextBoxWidget = require("ui/widget/textboxwidget") local TitleBar = require("ui/widget/titlebar")
local TextWidget = require("ui/widget/textwidget")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local VerticalGroup = require("ui/widget/verticalgroup") local VerticalGroup = require("ui/widget/verticalgroup")
local VerticalSpan = require("ui/widget/verticalspan") local VerticalSpan = require("ui/widget/verticalspan")
@ -171,14 +169,8 @@ local InputDialog = InputContainer:new{
text_width = nil, text_width = nil,
text_height = nil, text_height = nil,
title_face = Font:getFace("x_smalltfont"), bottom_v_padding = 0,
description_face = Font:getFace("x_smallinfofont"),
input_face = Font:getFace("x_smallinfofont"), input_face = Font:getFace("x_smallinfofont"),
title_padding = Size.padding.default,
title_margin = Size.margin.title,
desc_padding = Size.padding.default, -- Use the same as title for their
desc_margin = Size.margin.title, -- texts to be visually aligned
input_padding = Size.padding.default, input_padding = Size.padding.default,
input_margin = Size.margin.default, input_margin = Size.margin.default,
button_padding = Size.padding.default, button_padding = Size.padding.default,
@ -226,53 +218,23 @@ function InputDialog:init()
end end
-- Title & description -- Title & description
self.title_widget = FrameContainer:new{ self.title_bar = TitleBar:new{
padding = self.title_padding, width = self.width,
margin = self.title_margin, align = "left",
bordersize = 0, with_bottom_line = true,
TextWidget:new{ title = self.title,
text = self.title, title_multilines = true,
face = self.title_face, bottom_v_padding = self.bottom_v_padding,
max_width = self.width, info_text = self.description,
} show_parent = self,
}
self.title_bar = LineWidget:new{
dimen = Geom:new{
w = self.width,
h = Size.line.thick,
}
} }
if self.description then
self.description_widget = FrameContainer:new{
padding = self.desc_padding,
margin = self.desc_margin,
bordersize = 0,
TextBoxWidget:new{
text = self.description,
face = self.description_face,
width = self.width - 2*self.desc_padding - 2*self.desc_margin,
}
}
else
self.description_widget = VerticalSpan:new{ width = 0 }
end
-- Vertical spaces added before and after InputText -- Vertical spaces added before and after InputText
-- (these will be adjusted later to center the input text if needed) -- (these will be adjusted later to center the input text if needed)
local vspan_before_input_text = VerticalSpan:new{ width = 0 }
local vspan_after_input_text = VerticalSpan:new{ width = 0 }
-- We add the same vertical space used under description after the input widget
-- (can be disabled by setting condensed=true) -- (can be disabled by setting condensed=true)
if not self.condensed then local padding_width = self.condensed and 0 or Size.padding.default
local desc_pad_height = self.desc_margin + self.desc_padding local vspan_before_input_text = VerticalSpan:new{ width = padding_width }
if self.description then local vspan_after_input_text = VerticalSpan:new{ width = padding_width }
vspan_before_input_text.width = 0 -- already provided by description_widget
vspan_after_input_text.width = desc_pad_height
else
vspan_before_input_text.width = desc_pad_height
vspan_after_input_text.width = desc_pad_height
end
end
-- Buttons -- Buttons
-- In case of re-init(), keep backup of original buttons and restore them -- In case of re-init(), keep backup of original buttons and restore them
@ -340,9 +302,7 @@ function InputDialog:init()
-- Find out available height -- Find out available height
local available_height = self.screen_height local available_height = self.screen_height
- 2*self.border_size - 2*self.border_size
- self.title_widget:getSize().h - self.title_bar:getHeight()
- self.title_bar:getSize().h
- self.description_widget:getSize().h
- vspan_before_input_text:getSize().h - vspan_before_input_text:getSize().h
- input_pad_height - input_pad_height
- vspan_after_input_text:getSize().h - vspan_after_input_text:getSize().h
@ -427,9 +387,7 @@ function InputDialog:init()
-- Combine all -- Combine all
self.vgroup = VerticalGroup:new{ self.vgroup = VerticalGroup:new{
align = "left", align = "left",
self.title_widget,
self.title_bar, self.title_bar,
self.description_widget,
vspan_before_input_text, vspan_before_input_text,
CenterContainer:new{ CenterContainer:new{
dimen = Geom:new{ dimen = Geom:new{

@ -402,6 +402,8 @@ function InputText:initTextBox(text, char_added)
self._password_toggle = FrameContainer:new{ self._password_toggle = FrameContainer:new{
bordersize = 0, bordersize = 0,
padding = self.padding, padding = self.padding,
padding_top = 0,
padding_bottom = 0,
margin = self.margin, margin = self.margin,
self._check_button, self._check_button,
} }

@ -19,6 +19,7 @@ local LoginDialog = InputDialog:extend{
username_hint = "username", username_hint = "username",
password = "", password = "",
password_hint = "password", password_hint = "password",
bottom_v_padding = Size.padding.default,
} }
function LoginDialog:init() function LoginDialog:init()
@ -52,7 +53,6 @@ function LoginDialog:init()
background = Blitbuffer.COLOR_WHITE, background = Blitbuffer.COLOR_WHITE,
VerticalGroup:new{ VerticalGroup:new{
align = "left", align = "left",
self.title_widget,
self.title_bar, self.title_bar,
-- username input -- username input
CenterContainer:new{ CenterContainer:new{

@ -96,6 +96,7 @@ local MultiInputDialog = InputDialog:extend{
fields = {}, fields = {},
description_padding = Size.padding.default, description_padding = Size.padding.default,
description_margin = Size.margin.small, description_margin = Size.margin.small,
bottom_v_padding = Size.padding.default,
} }
function MultiInputDialog:init() function MultiInputDialog:init()
@ -103,7 +104,6 @@ function MultiInputDialog:init()
InputDialog.init(self) InputDialog.init(self)
local VerticalGroupData = VerticalGroup:new{ local VerticalGroupData = VerticalGroup:new{
align = "left", align = "left",
self.title_widget,
self.title_bar, self.title_bar,
} }

@ -13,7 +13,6 @@ local LeftContainer = require("ui/widget/container/leftcontainer")
local LineWidget = require("ui/widget/linewidget") local LineWidget = require("ui/widget/linewidget")
local RadioButtonTable = require("ui/widget/radiobuttontable") local RadioButtonTable = require("ui/widget/radiobuttontable")
local Size = require("ui/size") local Size = require("ui/size")
local TextBoxWidget = require("ui/widget/textboxwidget")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local VerticalGroup = require("ui/widget/verticalgroup") local VerticalGroup = require("ui/widget/verticalgroup")
local VerticalSpan = require("ui/widget/verticalspan") local VerticalSpan = require("ui/widget/verticalspan")
@ -26,20 +25,6 @@ function OpenWithDialog:init()
-- init title and buttons in base class -- init title and buttons in base class
InputDialog.init(self) InputDialog.init(self)
-- replace single line title with a multiline one,
-- as the filename might be long
self.title_widget:free()
self.title_widget = FrameContainer:new{
padding = self.title_padding,
margin = self.title_margin,
bordersize = 0,
TextBoxWidget:new{
text = self.title,
width = self.width - 2*self.title_padding - 2*self.title_margin,
face = self.title_face,
},
}
self.face = Font:getFace("cfont", 22) self.face = Font:getFace("cfont", 22)
self.element_width = math.floor(self.width * 0.9) self.element_width = math.floor(self.width * 0.9)
@ -99,7 +84,6 @@ function OpenWithDialog:init()
background = Blitbuffer.COLOR_WHITE, background = Blitbuffer.COLOR_WHITE,
VerticalGroup:new{ VerticalGroup:new{
align = "left", align = "left",
self.title_widget,
self.title_bar, self.title_bar,
VerticalSpan:new{ VerticalSpan:new{
width = Size.span.vertical_large*2, width = Size.span.vertical_large*2,

Loading…
Cancel
Save