// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using System.Collections.Generic; using osu.Game.Overlays.Comments; using osu.Game.Overlays; using osu.Framework.Allocation; using osu.Game.Online.API.Requests.Responses; using osu.Game.Users; using osu.Game.Graphics.UserInterface; using osu.Framework.Bindables; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics; using osuTK; namespace osu.Game.Tests.Visual.Online { public class TestSceneCommentsPage : OsuTestScene { public override IReadOnlyList RequiredTypes => new[] { typeof(DrawableComment), typeof(CommentsPage), }; [Cached] private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple); private readonly BindableBool showDeleted = new BindableBool(); private readonly Container content; public TestSceneCommentsPage() { Add(new FillFlowContainer { AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, Direction = FillDirection.Vertical, Spacing = new Vector2(0, 10), Children = new Drawable[] { new Container { AutoSizeAxes = Axes.Y, Width = 200, Child = new OsuCheckbox { Current = showDeleted, LabelText = @"Show Deleted" } }, content = new Container { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, } } }); AddStep("load comments", () => createPage(comment_bundle)); AddStep("load empty comments", () => createPage(empty_comment_bundle)); } private void createPage(CommentBundle commentBundle) { content.Clear(); content.Add(new CommentsPage(commentBundle) { ShowDeleted = { BindTarget = showDeleted } }); } private static readonly CommentBundle empty_comment_bundle = new CommentBundle { Comments = new List(), Total = 0, }; private static readonly CommentBundle comment_bundle = new CommentBundle { Comments = new List { new Comment { Id = 1, Message = "Simple test comment", LegacyName = "TestUser1", CreatedAt = DateTimeOffset.Now, VotesCount = 5 }, new Comment { Id = 2, Message = "This comment has been deleted :( but visible for admins", LegacyName = "TestUser2", CreatedAt = DateTimeOffset.Now, DeletedAt = DateTimeOffset.Now, VotesCount = 5 }, new Comment { Id = 3, Message = "This comment is a top level", LegacyName = "TestUser3", CreatedAt = DateTimeOffset.Now, RepliesCount = 2, }, new Comment { Id = 4, ParentId = 3, Message = "And this is a reply", RepliesCount = 1, LegacyName = "TestUser1", CreatedAt = DateTimeOffset.Now, }, new Comment { Id = 15, ParentId = 4, Message = "Reply to reply", LegacyName = "TestUser1", CreatedAt = DateTimeOffset.Now, }, new Comment { Id = 6, ParentId = 3, LegacyName = "TestUser11515", CreatedAt = DateTimeOffset.Now, DeletedAt = DateTimeOffset.Now, }, new Comment { Id = 5, Message = "This comment is voted and edited", LegacyName = "BigBrainUser", CreatedAt = DateTimeOffset.Now, EditedAt = DateTimeOffset.Now, VotesCount = 1000, EditedById = 1, } }, IncludedComments = new List(), UserVotes = new List { 5 }, Users = new List { new User { Id = 1, Username = "Good_Admin" } }, TopLevelCount = 4, Total = 7 }; } }