Allow timeline to govern the size of the rest of the editor content

This commit is contained in:
Dean Herbert 2021-04-14 16:00:49 +09:00
parent e543db9bee
commit a314f90d37
3 changed files with 82 additions and 51 deletions

View File

@ -56,8 +56,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
private Track track; private Track track;
private const float timeline_height = 90;
public Timeline() public Timeline()
{ {
RelativeSizeAxes = Axes.X;
Height = timeline_height;
ZoomDuration = 200; ZoomDuration = 200;
ZoomEasing = Easing.OutQuint; ZoomEasing = Easing.OutQuint;
ScrollbarVisible = false; ScrollbarVisible = false;

View File

@ -14,7 +14,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
{ {
public class TimelineArea : Container public class TimelineArea : Container
{ {
public readonly Timeline Timeline = new Timeline { RelativeSizeAxes = Axes.Both }; public readonly Timeline Timeline = new Timeline();
protected override Container<Drawable> Content => Timeline; protected override Container<Drawable> Content => Timeline;
@ -37,7 +37,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
}, },
new GridContainer new GridContainer
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Content = new[] Content = new[]
{ {
new Drawable[] new Drawable[]
@ -126,11 +127,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
Timeline Timeline
}, },
}, },
RowDimensions = new[]
{
new Dimension(GridSizeMode.AutoSize),
},
ColumnDimensions = new[] ColumnDimensions = new[]
{ {
new Dimension(GridSizeMode.AutoSize), new Dimension(GridSizeMode.AutoSize),
new Dimension(GridSizeMode.AutoSize), new Dimension(GridSizeMode.AutoSize),
new Dimension(GridSizeMode.Distributed), new Dimension(),
} }
} }
}; };

View File

@ -19,8 +19,6 @@ namespace osu.Game.Screens.Edit
private const float vertical_margins = 10; private const float vertical_margins = 10;
private const float horizontal_margins = 20; private const float horizontal_margins = 20;
private const float timeline_height = 110;
private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor(); private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor();
private Container timelineContainer; private Container timelineContainer;
@ -40,28 +38,23 @@ namespace osu.Game.Screens.Edit
if (beatDivisor != null) if (beatDivisor != null)
this.beatDivisor.BindTo(beatDivisor); this.beatDivisor.BindTo(beatDivisor);
Children = new Drawable[] Child = new GridContainer
{ {
mainContent = new Container
{
Name = "Main content",
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Padding = new MarginPadding RowDimensions = new[]
{ {
Horizontal = horizontal_margins, new Dimension(GridSizeMode.AutoSize),
Top = vertical_margins + timeline_height, new Dimension(),
Bottom = vertical_margins
}, },
Child = spinner = new LoadingSpinner(true) Content = new[]
{
new Drawable[]
{ {
State = { Value = Visibility.Visible },
},
},
new Container new Container
{ {
Name = "Timeline", Name = "Timeline",
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
Height = timeline_height, AutoSizeAxes = Axes.Y,
Children = new Drawable[] Children = new Drawable[]
{ {
new Box new Box
@ -72,23 +65,30 @@ namespace osu.Game.Screens.Edit
new Container new Container
{ {
Name = "Timeline content", Name = "Timeline content",
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Padding = new MarginPadding { Horizontal = horizontal_margins, Vertical = vertical_margins }, Padding = new MarginPadding { Horizontal = horizontal_margins, Vertical = vertical_margins },
Child = new GridContainer Child = new GridContainer
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Content = new[] Content = new[]
{ {
new Drawable[] new Drawable[]
{ {
timelineContainer = new Container timelineContainer = new Container
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Padding = new MarginPadding { Right = 5 }, Padding = new MarginPadding { Right = 5 },
}, },
new BeatDivisorControl(beatDivisor) { RelativeSizeAxes = Axes.Both } new BeatDivisorControl(beatDivisor) { RelativeSizeAxes = Axes.Both }
}, },
}, },
RowDimensions = new[]
{
new Dimension(GridSizeMode.AutoSize),
},
ColumnDimensions = new[] ColumnDimensions = new[]
{ {
new Dimension(), new Dimension(),
@ -98,6 +98,26 @@ namespace osu.Game.Screens.Edit
} }
} }
}, },
},
new Drawable[]
{
mainContent = new Container
{
Name = "Main content",
RelativeSizeAxes = Axes.Both,
Padding = new MarginPadding
{
Horizontal = horizontal_margins,
Top = vertical_margins,
Bottom = vertical_margins
},
Child = spinner = new LoadingSpinner(true)
{
State = { Value = Visibility.Visible },
},
},
},
}
}; };
} }
@ -114,7 +134,8 @@ namespace osu.Game.Screens.Edit
LoadComponentAsync(new TimelineArea LoadComponentAsync(new TimelineArea
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Children = new[] Children = new[]
{ {
CreateTimelineContent(), CreateTimelineContent(),