Show position on config panel (#3194)

pull/3210/head
Robert 7 years ago committed by Frans de Jonge
parent a9c1ed24b8
commit 85e2140ced

@ -14,6 +14,7 @@ local HorizontalSpan = require("ui/widget/horizontalspan")
local IconButton = require("ui/widget/iconbutton") local IconButton = require("ui/widget/iconbutton")
local ImageWidget = require("ui/widget/imagewidget") local ImageWidget = require("ui/widget/imagewidget")
local InputContainer = require("ui/widget/container/inputcontainer") local InputContainer = require("ui/widget/container/inputcontainer")
local LineWidget = require("ui/widget/linewidget")
local RightContainer = require("ui/widget/container/rightcontainer") local RightContainer = require("ui/widget/container/rightcontainer")
local TextWidget = require("ui/widget/textwidget") local TextWidget = require("ui/widget/textwidget")
local ToggleSwitch = require("ui/widget/toggleswitch") local ToggleSwitch = require("ui/widget/toggleswitch")
@ -405,8 +406,14 @@ function ConfigPanel:init()
table.insert(self, panel) table.insert(self, panel)
end end
local MenuBar = FrameContainer:new{ background = Blitbuffer.COLOR_WHITE, } local MenuBar = FrameContainer:new{
bordersize = 0,
padding = 0,
background = Blitbuffer.COLOR_WHITE,
}
function MenuBar:init() function MenuBar:init()
local icon_sep_width = Screen:scaleBySize(2)
local line_thickness = Screen:scaleBySize(2)
local config_options = self.config_dialog.config_options local config_options = self.config_dialog.config_options
local menu_items = {} local menu_items = {}
local icons_width = 0 local icons_width = 0
@ -426,20 +433,68 @@ function MenuBar:init()
menu_items[c] = menu_icon menu_items[c] = menu_icon
end end
local icon_sep = LineWidget:new{
dimen = Geom:new{
w = icon_sep_width,
h = icons_height,
}
}
local spacing_width = math.ceil((Screen:getWidth() - icons_width) / (#menu_items+1))
local spacing = HorizontalSpan:new{ local spacing = HorizontalSpan:new{
width = (Screen:getWidth() - icons_width) / (#menu_items+1) width = spacing_width,
}
local spacing_line = LineWidget:new{
dimen = Geom:new{
w = spacing_width,
h = line_thickness,
}
}
local sep_line = LineWidget:new{
dimen = Geom:new{
w = icon_sep_width,
h = line_thickness,
}
} }
local menu_bar = HorizontalGroup:new{} local menu_bar = HorizontalGroup:new{}
local line_bar = HorizontalGroup:new{}
for c = 1, #menu_items do for c = 1, #menu_items do
table.insert(menu_bar, spacing) table.insert(menu_bar, spacing)
table.insert(menu_bar, menu_items[c]) table.insert(line_bar, spacing_line)
if c == self.panel_index then
table.insert(menu_bar, icon_sep)
table.insert(line_bar, sep_line)
table.insert(menu_bar, menu_items[c])
table.insert(line_bar, LineWidget:new{
background = Blitbuffer.COLOR_WHITE,
dimen = Geom:new{
w = menu_items[c]:getSize().w,
h = line_thickness,
}
})
table.insert(menu_bar, icon_sep)
table.insert(line_bar, sep_line)
else
table.insert(menu_bar, menu_items[c])
table.insert(line_bar, LineWidget:new{
dimen = Geom:new{
w = menu_items[c]:getSize().w,
h = line_thickness,
}
})
end
end end
table.insert(menu_bar, spacing) table.insert(menu_bar, spacing)
table.insert(line_bar, spacing_line)
self.dimen = Geom:new{ w = Screen:getWidth(), h = icons_height} self.dimen = Geom:new{ w = Screen:getWidth(), h = icons_height}
table.insert(self, menu_bar) local vertical_menu = VerticalGroup:new{
line_bar,
menu_bar,
}
table.insert(self, vertical_menu)
end end
--[[ --[[
@ -470,9 +525,6 @@ function ConfigDialog:init()
------------------------------------------ ------------------------------------------
-- start to set up widget layout --------- -- start to set up widget layout ---------
------------------------------------------ ------------------------------------------
self.config_menubar = MenuBar:new{
config_dialog = self,
}
self:update() self:update()
------------------------------------------ ------------------------------------------
-- start to set up input event callback -- -- start to set up input event callback --
@ -513,6 +565,10 @@ function ConfigDialog:updateConfigPanel(index)
end end
function ConfigDialog:update() function ConfigDialog:update()
self.config_menubar = MenuBar:new{
config_dialog = self,
panel_index = self.panel_index,
}
self.config_panel = ConfigPanel:new{ self.config_panel = ConfigPanel:new{
index = self.panel_index, index = self.panel_index,
config_dialog = self, config_dialog = self,

@ -18,17 +18,19 @@ Example:
--]] --]]
local WidgetContainer = require("ui/widget/container/widgetcontainer")
local Geom = require("ui/geometry")
local Blitbuffer = require("ffi/blitbuffer") local Blitbuffer = require("ffi/blitbuffer")
local Device = require("device")
local Geom = require("ui/geometry")
local WidgetContainer = require("ui/widget/container/widgetcontainer")
local Screen = Device.screen
local FrameContainer = WidgetContainer:new{ local FrameContainer = WidgetContainer:new{
background = nil, background = nil,
color = Blitbuffer.COLOR_BLACK, color = Blitbuffer.COLOR_BLACK,
margin = 0, margin = 0,
radius = 0, radius = 0,
bordersize = 2, bordersize = Screen:scaleBySize(2),
padding = 5, padding = Screen:scaleBySize(5),
width = nil, width = nil,
height = nil, height = nil,
invert = false, invert = false,

Loading…
Cancel
Save