OpenWithDialog widget: improved display (#4078)

- add refresh after tap Cancel button,
- radiobutton and checkbutton with the same font size,
- truncates text outside window,
- better control font face and size in OpenWithDialog
  and RadioButtonTable widgets
pull/4081/head
Robert 6 years ago committed by poire-z
parent 5d0359b257
commit 5caabfb174

@ -34,6 +34,7 @@ local CheckButton = InputContainer:new{
overlap_align = "right", overlap_align = "right",
text = nil, text = nil,
toggle_text = nil, toggle_text = nil,
max_width = nil,
window = nil, window = nil,
padding = Screen:scaleBySize(5), padding = Screen:scaleBySize(5),
@ -55,6 +56,7 @@ function CheckButton:initCheckButton(checked)
self._textwidget = TextWidget:new{ self._textwidget = TextWidget:new{
text = self.text, text = self.text,
face = self.face, face = self.face,
max_width = self.max_width,
} }
self._horizontalgroup = HorizontalGroup:new{ self._horizontalgroup = HorizontalGroup:new{
self._checkmark, self._checkmark,

@ -5,6 +5,7 @@ This widget displays an open with dialog.
local Blitbuffer = require("ffi/blitbuffer") local Blitbuffer = require("ffi/blitbuffer")
local CenterContainer = require("ui/widget/container/centercontainer") local CenterContainer = require("ui/widget/container/centercontainer")
local CheckButton = require("ui/widget/checkbutton") local CheckButton = require("ui/widget/checkbutton")
local Font = require("ui/font")
local FrameContainer = require("ui/widget/container/framecontainer") local FrameContainer = require("ui/widget/container/framecontainer")
local Geom = require("ui/geometry") local Geom = require("ui/geometry")
local InputDialog = require("ui/widget/inputdialog") local InputDialog = require("ui/widget/inputdialog")
@ -12,6 +13,7 @@ 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 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")
local _ = require("gettext") local _ = require("gettext")
@ -22,6 +24,7 @@ local OpenWithDialog = InputDialog:extend{}
function OpenWithDialog:init() function OpenWithDialog:init()
-- init title and buttons in base class -- init title and buttons in base class
InputDialog.init(self) InputDialog.init(self)
self.face = Font:getFace("cfont", 22)
self.radio_button_table = RadioButtonTable:new{ self.radio_button_table = RadioButtonTable:new{
radio_buttons = self.radio_buttons, radio_buttons = self.radio_buttons,
@ -29,6 +32,7 @@ function OpenWithDialog:init()
focused = true, focused = true,
scroll = false, scroll = false,
parent = self, parent = self,
face = self.face,
} }
self._check_file_button = self._check_file_button or CheckButton:new{ self._check_file_button = self._check_file_button or CheckButton:new{
@ -42,7 +46,9 @@ function OpenWithDialog:init()
end, end,
width = self.width * 0.9, width = self.width * 0.9,
max_width = self.width * 0.9 - 2*Size.border.window,
height = self.height, height = self.height,
face = self.face,
parent = self, parent = self,
} }
@ -66,7 +72,9 @@ function OpenWithDialog:init()
end, end,
width = self.width * 0.9, width = self.width * 0.9,
max_width = self.width * 0.9 - 2*Size.border.window,
height = self.height, height = self.height,
face = self.face,
parent = self, parent = self,
} }
@ -81,6 +89,7 @@ function OpenWithDialog:init()
self.dialog_frame = FrameContainer:new{ self.dialog_frame = FrameContainer:new{
radius = Size.radius.window, radius = Size.radius.window,
bordersize = Size.border.window,
padding = 0, padding = 0,
margin = 0, margin = 0,
background = Blitbuffer.COLOR_WHITE, background = Blitbuffer.COLOR_WHITE,
@ -151,6 +160,9 @@ function OpenWithDialog:init()
end end
function OpenWithDialog:onCloseWidget() function OpenWithDialog:onCloseWidget()
UIManager:setDirty(nil, function()
return "partial", self[1][1].dimen
end)
return true return true
end end

@ -39,14 +39,17 @@ function RadioButton:init()
self._checked_widget = TextWidget:new{ self._checked_widget = TextWidget:new{
text = "" .. self.text, text = "" .. self.text,
face = self.face, face = self.face,
max_width = self.max_width,
} }
self._unchecked_widget = TextWidget:new{ self._unchecked_widget = TextWidget:new{
text = "" .. self.text, text = "" .. self.text,
face = self.face, face = self.face,
max_width = self.max_width,
} }
self._empty_widget = TextWidget:new{ self._empty_widget = TextWidget:new{
text = "" .. self.text, text = "" .. self.text,
face = self.face, face = self.face,
max_width = self.max_width,
} }
self._widget_size = self._unchecked_widget:getSize() self._widget_size = self._unchecked_widget:getSize()
if self.width == nil then if self.width == nil then

@ -1,6 +1,7 @@
local Blitbuffer = require("ffi/blitbuffer") local Blitbuffer = require("ffi/blitbuffer")
local Device = require("device") local Device = require("device")
local FocusManager = require("ui/widget/focusmanager") local FocusManager = require("ui/widget/focusmanager")
local Font = require("ui/font")
local Geom = require("ui/geometry") local Geom = require("ui/geometry")
local HorizontalGroup = require("ui/widget/horizontalgroup") local HorizontalGroup = require("ui/widget/horizontalgroup")
local LineWidget = require("ui/widget/linewidget") local LineWidget = require("ui/widget/linewidget")
@ -23,9 +24,7 @@ local RadioButtonTable = FocusManager:new{
padding = Size.padding.button, padding = Size.padding.button,
zero_sep = false, zero_sep = false,
button_font_face = "cfont", face = Font:getFace("cfont", 22),
button_font_size = 20,
_first_button = nil, _first_button = nil,
checked_button = nil, checked_button = nil,
} }
@ -66,8 +65,7 @@ function RadioButtonTable:init()
bordersize = 0, bordersize = 0,
margin = 0, margin = 0,
padding = 0, padding = 0,
text_font_face = self.button_font_face, face = self.face,
text_font_size = self.button_font_size,
show_parent = self.show_parent or self, show_parent = self.show_parent or self,
parent = self.parent or self, parent = self.parent or self,

Loading…
Cancel
Save