From ee85515d951846d1cdd5241c89ec47a77a5efa10 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 25 Aug 2017 18:41:12 +0900 Subject: [PATCH] Changes in line with framework changes --- osu-framework | 2 +- .../Graphics/UserInterface/OsuContextMenu.cs | 26 ++++------ .../Graphics/UserInterface/OsuDropdown.cs | 48 ++++++++++++++----- osu.Game/Graphics/UserInterface/OsuMenu.cs | 14 +----- .../Graphics/UserInterface/OsuTabControl.cs | 32 ++++++++----- .../Sections/General/LoginSettings.cs | 20 +++----- 6 files changed, 75 insertions(+), 67 deletions(-) diff --git a/osu-framework b/osu-framework index 56ce220e7f..926d7c971d 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 56ce220e7f631ce2890597e505d073cdfc0233a1 +Subproject commit 926d7c971d059c7aeb3ccfb09d06910c46aa3a40 diff --git a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs index ddb91d42a1..ad4cd1edbc 100644 --- a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs @@ -39,18 +39,12 @@ namespace osu.Game.Graphics.UserInterface protected override void AnimateOpen() => this.FadeIn(fade_duration, Easing.OutQuint); protected override void AnimateClose() => this.FadeOut(fade_duration, Easing.OutQuint); - protected override FlowContainer CreateItemsFlow() - { - var flow = base.CreateItemsFlow(); - flow.Padding = new MarginPadding { Vertical = OsuContextMenuItemRepresentation.MARGIN_VERTICAL }; + protected override MarginPadding ItemFlowContainerPadding => new MarginPadding { Vertical = DrawableOsuContextMenuItem.MARGIN_VERTICAL }; - return flow; - } + protected override DrawableMenuItem CreateDrawableMenuItem(TItem item) => new DrawableOsuContextMenuItem(this, item); - protected override MenuItemRepresentation CreateMenuItemRepresentation(TItem model) => new OsuContextMenuItemRepresentation(this, model); - - #region OsuContextMenuItemRepresentation - private class OsuContextMenuItemRepresentation : MenuItemRepresentation + #region DrawableOsuContextMenuItem + private class DrawableOsuContextMenuItem : DrawableMenuItem { private const int margin_horizontal = 17; private const int text_size = 17; @@ -63,8 +57,8 @@ namespace osu.Game.Graphics.UserInterface private OsuSpriteText text; private OsuSpriteText textBold; - public OsuContextMenuItemRepresentation(Menu menu, TItem model) - : base(menu, model) + public DrawableOsuContextMenuItem(Menu menu, TItem item) + : base(item) { } @@ -82,7 +76,7 @@ namespace osu.Game.Graphics.UserInterface private void updateTextColour() { - switch (Model.Type) + switch (Item.Type) { case MenuItemType.Standard: textBold.Colour = text.Colour = Color4.White; @@ -117,7 +111,7 @@ namespace osu.Game.Graphics.UserInterface return base.OnClick(state); } - protected override Drawable CreateText(string title) => new Container + protected override Drawable CreateContent() => new Container { AutoSizeAxes = Axes.Both, Anchor = Anchor.CentreLeft, @@ -129,7 +123,7 @@ namespace osu.Game.Graphics.UserInterface Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, TextSize = text_size, - Text = title, + Text = Item.Text, Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL }, }, textBold = new OsuSpriteText @@ -139,7 +133,7 @@ namespace osu.Game.Graphics.UserInterface Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, TextSize = text_size, - Text = title, + Text = Item.Text, Font = @"Exo2.0-Bold", Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL }, } diff --git a/osu.Game/Graphics/UserInterface/OsuDropdown.cs b/osu.Game/Graphics/UserInterface/OsuDropdown.cs index d556c58bdd..2c691b7763 100644 --- a/osu.Game/Graphics/UserInterface/OsuDropdown.cs +++ b/osu.Game/Graphics/UserInterface/OsuDropdown.cs @@ -44,18 +44,40 @@ namespace osu.Game.Graphics.UserInterface #region OsuDropdownMenu protected class OsuDropdownMenu : DropdownMenu { + // todo: this uses the same styling as OsuMenu. hopefully we can just use OsuMenu in the future with some refactoring + public OsuDropdownMenu() + { + CornerRadius = 4; + BackgroundColour = Color4.Black.Opacity(0.5f); + } + + // todo: this uses the same styling as OsuMenu. hopefully we can just use OsuMenu in the future with some refactoring + protected override void AnimateOpen() => this.FadeIn(300, Easing.OutQuint); + protected override void AnimateClose() => this.FadeOut(300, Easing.OutQuint); + + // todo: this uses the same styling as OsuMenu. hopefully we can just use OsuMenu in the future with some refactoring + protected override MarginPadding ItemFlowContainerPadding => new MarginPadding(5); + + // todo: this uses the same styling as OsuMenu. hopefully we can just use OsuMenu in the future with some refactoring + protected override void UpdateMenuHeight() + { + var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight; + this.ResizeHeightTo(State == MenuState.Opened ? actualHeight : 0, 300, Easing.OutQuint); + } + public readonly Bindable AccentColour = new Bindable(); - protected override MenuItemRepresentation CreateMenuItemRepresentation(DropdownMenuItem model) + + protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem item) { - var newItem = new OsuDropdownMenuItemRepresentation(this, model); + var newItem = new DrawableOsuDropdownMenuItem(item); newItem.AccentColour.BindTo(AccentColour); return newItem; } - #region OsuDropdownMenuItemRepresentation - protected class OsuDropdownMenuItemRepresentation : DropdownMenuItemRepresentation + #region DrawableOsuDropdownMenuItem + protected class DrawableOsuDropdownMenuItem : DrawableDropdownMenuItem { public readonly Bindable AccentColour = new Bindable(); @@ -65,8 +87,8 @@ namespace osu.Game.Graphics.UserInterface private Color4 nonAccentHoverColour; private Color4 nonAccentSelectedColour; - public OsuDropdownMenuItemRepresentation(Menu> menu, DropdownMenuItem model) - : base(menu, model) + public DrawableOsuDropdownMenuItem(DropdownMenuItem item) + : base(item) { Foreground.Padding = new MarginPadding(2); @@ -88,17 +110,17 @@ namespace osu.Game.Graphics.UserInterface { BackgroundColourHover = newValue ?? nonAccentHoverColour; BackgroundColourSelected = newValue ?? nonAccentSelectedColour; - AnimateBackground(IsHovered); - AnimateForeground(IsHovered); + UpdateBackgroundColour(); + UpdateForegroundColour(); } - protected override void AnimateForeground(bool hover) + protected override void UpdateForegroundColour() { - base.AnimateForeground(hover); - chevron.Alpha = hover ? 1 : 0; + base.UpdateForegroundColour(); + chevron.Alpha = IsHovered ? 1 : 0; } - protected override Drawable CreateText(string title) => new FillFlowContainer + protected override Drawable CreateContent() => new FillFlowContainer { Direction = FillDirection.Horizontal, RelativeSizeAxes = Axes.X, @@ -118,7 +140,7 @@ namespace osu.Game.Graphics.UserInterface }, Label = new OsuSpriteText { - Text = title, + Text = Item.Text, Origin = Anchor.CentreLeft, Anchor = Anchor.CentreLeft, } diff --git a/osu.Game/Graphics/UserInterface/OsuMenu.cs b/osu.Game/Graphics/UserInterface/OsuMenu.cs index 45bee216ad..0c5bfa2947 100644 --- a/osu.Game/Graphics/UserInterface/OsuMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuMenu.cs @@ -1,11 +1,9 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using OpenTK; using OpenTK.Graphics; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; namespace osu.Game.Graphics.UserInterface @@ -28,16 +26,6 @@ namespace osu.Game.Graphics.UserInterface this.ResizeHeightTo(State == MenuState.Opened ? actualHeight : 0, 300, Easing.OutQuint); } - protected override FlowContainer CreateItemsFlow() - { - var flow = base.CreateItemsFlow(); - flow.Padding = new MarginPadding(5); - - return flow; - } - } - - public class OsuMenu : OsuMenu - { + protected override MarginPadding ItemFlowContainerPadding => new MarginPadding(5); } } diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index bc673a7af6..58d853d97e 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -48,9 +48,9 @@ namespace osu.Game.Graphics.UserInterface set { accentColour = value; - var dropDown = Dropdown as OsuTabDropdown; - if (dropDown != null) - dropDown.AccentColour.Value = value; + var dropdown = Dropdown as OsuTabDropdown; + if (dropdown != null) + dropdown.AccentColour.Value = value; foreach (var item in TabContainer.Children.OfType()) item.AccentColour = value; } @@ -140,16 +140,20 @@ namespace osu.Game.Graphics.UserInterface protected override void OnDeactivated() => fadeInactive(); } + // todo: this needs to go private class OsuTabDropdown : OsuDropdown { public OsuTabDropdown() { RelativeSizeAxes = Axes.X; - - } - protected override DropdownMenu CreateMenu() => new OsuTabDropdownMenu(); + protected override DropdownMenu CreateMenu() + { + var menu = new OsuTabDropdownMenu(); + menu.AccentColour.BindTo(AccentColour); + return menu; + } protected override DropdownHeader CreateHeader() { @@ -175,18 +179,24 @@ namespace osu.Game.Graphics.UserInterface MaxHeight = 400; } - protected override MenuItemRepresentation CreateMenuItemRepresentation(DropdownMenuItem model) => new OsuTabDropdownMenuItemRepresentation(this, model); - - private class OsuTabDropdownMenuItemRepresentation : OsuDropdownMenuItemRepresentation + protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem item) { - public OsuTabDropdownMenuItemRepresentation(Menu> menu, DropdownMenuItem model) - : base(menu, model) + var poop = new DrawableOsuTabDropdownMenuItem(this, item); + poop.AccentColour.BindTo(AccentColour); + return poop; + } + + private class DrawableOsuTabDropdownMenuItem : DrawableOsuDropdownMenuItem + { + public DrawableOsuTabDropdownMenuItem(Menu> menu, DropdownMenuItem item) + : base(item) { ForegroundColourHover = Color4.Black; } } } + protected class OsuTabDropdownHeader : OsuDropdownHeader { public OsuTabDropdownHeader() diff --git a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs index 111dba7151..ad7c7cf092 100644 --- a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs @@ -306,20 +306,14 @@ namespace osu.Game.Overlays.Settings.Sections.General BackgroundColour = colours.Gray3; } - protected override FlowContainer CreateItemsFlow() + protected override MarginPadding ItemFlowContainerPadding => new MarginPadding(); + + protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem item) => new DrawableUserDropdownMenuItem(this, item); + + private class DrawableUserDropdownMenuItem : DrawableOsuDropdownMenuItem { - var flow = base.CreateItemsFlow(); - flow.Padding = new MarginPadding(0); - - return flow; - } - - protected override MenuItemRepresentation CreateMenuItemRepresentation(DropdownMenuItem model) => new UserDropdownMenuItem(this, model); - - private class UserDropdownMenuItem : OsuDropdownMenuItemRepresentation - { - public UserDropdownMenuItem(Menu> menu, DropdownMenuItem model) - : base(menu, model) + public DrawableUserDropdownMenuItem(Menu> menu, DropdownMenuItem item) + : base(item) { Foreground.Padding = new MarginPadding { Top = 5, Bottom = 5, Left = 10, Right = 5 }; Label.Margin = new MarginPadding { Left = UserDropdownHeader.LABEL_LEFT_MARGIN - 11 };