diff --git a/MareSynchronos/UI/Components/DrawFolderBase.cs b/MareSynchronos/UI/Components/DrawFolderBase.cs index 2e31f5d..c3bfefe 100644 --- a/MareSynchronos/UI/Components/DrawFolderBase.cs +++ b/MareSynchronos/UI/Components/DrawFolderBase.cs @@ -8,16 +8,16 @@ namespace MareSynchronos.UI.Components; public abstract class DrawFolderBase : IDrawFolder { - protected readonly IEnumerable _drawPairs; + public IEnumerable DrawPairs { get; private set; } protected readonly string _id; protected readonly TagHandler _tagHandler; private float _menuWidth = -1; - public int OnlinePairs => _drawPairs.Count(u => u.Pair.IsOnline); + public int OnlinePairs => DrawPairs.Count(u => u.Pair.IsOnline); public int TotalPairs { get; } protected DrawFolderBase(string id, IEnumerable drawPairs, TagHandler tagHandler, int totalPairs) { _id = id; - _drawPairs = drawPairs; + DrawPairs = drawPairs; _tagHandler = tagHandler; TotalPairs = totalPairs; } @@ -27,7 +27,7 @@ public abstract class DrawFolderBase : IDrawFolder public void Draw() { - if (!RenderIfEmpty && !_drawPairs.Any()) return; + if (!RenderIfEmpty && !DrawPairs.Any()) return; using var id = ImRaii.PushId("folder_" + _id); @@ -57,9 +57,9 @@ public abstract class DrawFolderBase : IDrawFolder if (_tagHandler.IsTagOpen(_id)) { using var indent = ImRaii.PushIndent(20f); - if (_drawPairs.Any()) + if (DrawPairs.Any()) { - foreach (var item in _drawPairs) + foreach (var item in DrawPairs) { item.DrawPairedClient(); } diff --git a/MareSynchronos/UI/Components/DrawFolderGroup.cs b/MareSynchronos/UI/Components/DrawFolderGroup.cs index 68e9b7c..85e8c38 100644 --- a/MareSynchronos/UI/Components/DrawFolderGroup.cs +++ b/MareSynchronos/UI/Components/DrawFolderGroup.cs @@ -98,7 +98,7 @@ public class DrawFolderGroup : DrawFolderBase if (UiSharedService.IconTextButton(FontAwesomeIcon.StickyNote, "Copy Notes", menuWidth, true)) { ImGui.CloseCurrentPopup(); - ImGui.SetClipboardText(UiSharedService.GetNotes(_drawPairs.Select(k => k.Pair).ToList())); + ImGui.SetClipboardText(UiSharedService.GetNotes(DrawPairs.Select(k => k.Pair).ToList())); } UiSharedService.AttachToolTip("Copies all your notes for all users in this Syncshell to the clipboard." + Environment.NewLine + "They can be imported via Settings -> Privacy -> Import Notes from Clipboard"); diff --git a/MareSynchronos/UI/Components/DrawFolderTag.cs b/MareSynchronos/UI/Components/DrawFolderTag.cs index fb371e8..ba8f7d5 100644 --- a/MareSynchronos/UI/Components/DrawFolderTag.cs +++ b/MareSynchronos/UI/Components/DrawFolderTag.cs @@ -51,7 +51,7 @@ public class DrawFolderTag : DrawFolderBase TagHandler.CustomAllTag => false, TagHandler.CustomOfflineSyncshellTag => false, _ => true, - } && _drawPairs.Any(); + } && DrawPairs.Any(); private bool RenderCount => _id switch { @@ -135,7 +135,7 @@ public class DrawFolderTag : DrawFolderBase { if (!RenderPause) return currentRightSideX; - var allArePaused = _drawPairs.All(pair => pair.UserPair!.OwnPermissions.IsPaused()); + var allArePaused = DrawPairs.All(pair => pair.UserPair!.OwnPermissions.IsPaused()); var pauseButton = allArePaused ? FontAwesomeIcon.Play : FontAwesomeIcon.Pause; var pauseButtonX = UiSharedService.GetIconButtonSize(pauseButton).X; @@ -145,11 +145,11 @@ public class DrawFolderTag : DrawFolderBase { if (allArePaused) { - ResumeAllPairs(_drawPairs); + ResumeAllPairs(DrawPairs); } else { - PauseRemainingPairs(_drawPairs); + PauseRemainingPairs(DrawPairs); } } if (allArePaused) diff --git a/MareSynchronos/UI/Components/DrawGroupedGroupFolder.cs b/MareSynchronos/UI/Components/DrawGroupedGroupFolder.cs index f8ee004..6968924 100644 --- a/MareSynchronos/UI/Components/DrawGroupedGroupFolder.cs +++ b/MareSynchronos/UI/Components/DrawGroupedGroupFolder.cs @@ -9,7 +9,8 @@ public class DrawGroupedGroupFolder : IDrawFolder { private readonly IEnumerable _groups; private readonly TagHandler _tagHandler; - public int OnlinePairs => _groups.Sum(g => g.OnlinePairs); + public IEnumerable DrawPairs => throw new NotSupportedException(); + public int OnlinePairs => _groups.SelectMany(g => g.DrawPairs).Where(g => g.Pair.IsOnline).DistinctBy(g => g.UID).Count(); public int TotalPairs => _groups.Sum(g => g.TotalPairs); public DrawGroupedGroupFolder(IEnumerable groups, TagHandler tagHandler) diff --git a/MareSynchronos/UI/Components/IDrawFolder.cs b/MareSynchronos/UI/Components/IDrawFolder.cs index 13563ca..82a2df5 100644 --- a/MareSynchronos/UI/Components/IDrawFolder.cs +++ b/MareSynchronos/UI/Components/IDrawFolder.cs @@ -1,8 +1,11 @@ -namespace MareSynchronos.UI.Components; + +namespace MareSynchronos.UI.Components; public interface IDrawFolder { int TotalPairs { get; } int OnlinePairs { get; } + IEnumerable DrawPairs { get; } + void Draw(); }