Added online filter like visible, seperated them for now. need to refactor.
This commit is contained in:
@@ -49,7 +49,8 @@ public class LightlessConfig : ILightlessConfiguration
|
|||||||
public int DownloadSpeedLimitInBytes { get; set; } = 0;
|
public int DownloadSpeedLimitInBytes { get; set; } = 0;
|
||||||
public DownloadSpeeds DownloadSpeedType { get; set; } = DownloadSpeeds.MBps;
|
public DownloadSpeeds DownloadSpeedType { get; set; } = DownloadSpeeds.MBps;
|
||||||
public bool PreferNotesOverNamesForVisible { get; set; } = false;
|
public bool PreferNotesOverNamesForVisible { get; set; } = false;
|
||||||
public VisiblePairSortMode VisiblePairSortMode { get; set; } = VisiblePairSortMode.Default;
|
public VisiblePairSortMode VisiblePairSortMode { get; set; } = VisiblePairSortMode.Alphabetical;
|
||||||
|
public OnlinePairSortMode OnlinePairSortMode { get; set; } = OnlinePairSortMode.Alphabetical;
|
||||||
public float ProfileDelay { get; set; } = 1.5f;
|
public float ProfileDelay { get; set; } = 1.5f;
|
||||||
public bool ProfilePopoutRight { get; set; } = false;
|
public bool ProfilePopoutRight { get; set; } = false;
|
||||||
public bool ProfilesAllowNsfw { get; set; } = false;
|
public bool ProfilesAllowNsfw { get; set; } = false;
|
||||||
|
|||||||
@@ -843,12 +843,16 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
|
|
||||||
//Filter of not grouped/foldered and offline pairs
|
//Filter of not grouped/foldered and offline pairs
|
||||||
var allOnlineNotTaggedPairs = SortEntries(allEntries.Where(FilterNotTaggedUsers));
|
var allOnlineNotTaggedPairs = SortEntries(allEntries.Where(FilterNotTaggedUsers));
|
||||||
var onlineNotTaggedPairs = SortEntries(filteredEntries.Where(e => FilterNotTaggedUsers(e) && FilterOnlineOrPausedSelf(e)));
|
if (allOnlineNotTaggedPairs.Count > 0 && _configService.Current.ShowOfflineUsersSeparately) {
|
||||||
|
var filteredOnlineEntries = SortOnlineEntries(filteredEntries.Where(e => FilterNotTaggedUsers(e) && FilterOnlineOrPausedSelf(e)));
|
||||||
if (allOnlineNotTaggedPairs.Count > 0)
|
|
||||||
{
|
|
||||||
drawFolders.Add(_drawEntityFactory.CreateTagFolder(
|
drawFolders.Add(_drawEntityFactory.CreateTagFolder(
|
||||||
_configService.Current.ShowOfflineUsersSeparately ? TagHandler.CustomOnlineTag : TagHandler.CustomAllTag,
|
TagHandler.CustomOnlineTag,
|
||||||
|
filteredOnlineEntries,
|
||||||
|
allOnlineNotTaggedPairs));
|
||||||
|
} else if (allOnlineNotTaggedPairs.Count > 0 && !_configService.Current.ShowOfflineUsersSeparately) {
|
||||||
|
var onlineNotTaggedPairs = SortEntries(filteredEntries.Where(FilterNotTaggedUsers));
|
||||||
|
drawFolders.Add(_drawEntityFactory.CreateTagFolder(
|
||||||
|
TagHandler.CustomAllTag,
|
||||||
onlineNotTaggedPairs,
|
onlineNotTaggedPairs,
|
||||||
allOnlineNotTaggedPairs));
|
allOnlineNotTaggedPairs));
|
||||||
}
|
}
|
||||||
@@ -885,7 +889,7 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool PassesFilter(PairUiEntry entry, string filter)
|
private static bool PassesFilter(PairUiEntry entry, string filter)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(filter)) return true;
|
if (string.IsNullOrEmpty(filter)) return true;
|
||||||
|
|
||||||
@@ -946,6 +950,17 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ImmutableList<PairUiEntry> SortOnlineEntries(IEnumerable<PairUiEntry> entries)
|
||||||
|
{
|
||||||
|
var entryList = entries.ToList();
|
||||||
|
return _configService.Current.OnlinePairSortMode switch
|
||||||
|
{
|
||||||
|
OnlinePairSortMode.Alphabetical => [.. entryList.OrderBy(e => AlphabeticalSortKey(e), StringComparer.OrdinalIgnoreCase)],
|
||||||
|
OnlinePairSortMode.PreferredDirectPairs => SortVisibleByPreferred(entryList),
|
||||||
|
_ => SortEntries(entryList),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private ImmutableList<PairUiEntry> SortVisibleByMetric(IEnumerable<PairUiEntry> entries, Func<PairUiEntry, long> selector)
|
private ImmutableList<PairUiEntry> SortVisibleByMetric(IEnumerable<PairUiEntry> entries, Func<PairUiEntry, long> selector)
|
||||||
{
|
{
|
||||||
return [.. entries
|
return [.. entries
|
||||||
|
|||||||
@@ -169,11 +169,16 @@ public class DrawFolderTag : DrawFolderBase
|
|||||||
|
|
||||||
protected override float DrawRightSide(float currentRightSideX)
|
protected override float DrawRightSide(float currentRightSideX)
|
||||||
{
|
{
|
||||||
if (_id == TagHandler.CustomVisibleTag)
|
if (string.Equals(_id, TagHandler.CustomVisibleTag, StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
return DrawVisibleFilter(currentRightSideX);
|
return DrawVisibleFilter(currentRightSideX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (string.Equals(_id, TagHandler.CustomOnlineTag, StringComparison.Ordinal))
|
||||||
|
{
|
||||||
|
return DrawOnlineFilter(currentRightSideX);
|
||||||
|
}
|
||||||
|
|
||||||
if (!RenderPause)
|
if (!RenderPause)
|
||||||
{
|
{
|
||||||
return currentRightSideX;
|
return currentRightSideX;
|
||||||
@@ -254,7 +259,7 @@ public class DrawFolderTag : DrawFolderBase
|
|||||||
foreach (VisiblePairSortMode mode in Enum.GetValues<VisiblePairSortMode>())
|
foreach (VisiblePairSortMode mode in Enum.GetValues<VisiblePairSortMode>())
|
||||||
{
|
{
|
||||||
var selected = _configService.Current.VisiblePairSortMode == mode;
|
var selected = _configService.Current.VisiblePairSortMode == mode;
|
||||||
if (ImGui.MenuItem(GetSortLabel(mode), string.Empty, selected))
|
if (ImGui.MenuItem(GetSortVisibleLabel(mode), string.Empty, selected))
|
||||||
{
|
{
|
||||||
if (!selected)
|
if (!selected)
|
||||||
{
|
{
|
||||||
@@ -273,7 +278,49 @@ public class DrawFolderTag : DrawFolderBase
|
|||||||
return buttonStart - spacingX;
|
return buttonStart - spacingX;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetSortLabel(VisiblePairSortMode mode) => mode switch
|
private float DrawOnlineFilter(float currentRightSideX)
|
||||||
|
{
|
||||||
|
var buttonSize = _uiSharedService.GetIconButtonSize(FontAwesomeIcon.Filter);
|
||||||
|
var spacingX = ImGui.GetStyle().ItemSpacing.X;
|
||||||
|
var buttonStart = currentRightSideX - buttonSize.X;
|
||||||
|
|
||||||
|
ImGui.SameLine(buttonStart);
|
||||||
|
if (_uiSharedService.IconButton(FontAwesomeIcon.Filter))
|
||||||
|
{
|
||||||
|
SuppressNextRowToggle();
|
||||||
|
ImGui.OpenPopup($"online-filter-{_id}");
|
||||||
|
}
|
||||||
|
|
||||||
|
UiSharedService.AttachToolTip("Adjust how online pairs are ordered.");
|
||||||
|
|
||||||
|
if (ImGui.BeginPopup($"online-filter-{_id}"))
|
||||||
|
{
|
||||||
|
ImGui.TextUnformatted("Online Pair Ordering");
|
||||||
|
ImGui.Separator();
|
||||||
|
|
||||||
|
foreach (OnlinePairSortMode mode in Enum.GetValues<OnlinePairSortMode>())
|
||||||
|
{
|
||||||
|
var selected = _configService.Current.OnlinePairSortMode == mode;
|
||||||
|
if (ImGui.MenuItem(GetSortOnlineLabel(mode), string.Empty, selected))
|
||||||
|
{
|
||||||
|
if (!selected)
|
||||||
|
{
|
||||||
|
_configService.Current.OnlinePairSortMode = mode;
|
||||||
|
_configService.Save();
|
||||||
|
_mediator.Publish(new RefreshUiMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
return buttonStart - spacingX;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetSortVisibleLabel(VisiblePairSortMode mode) => mode switch
|
||||||
{
|
{
|
||||||
VisiblePairSortMode.Alphabetical => "Alphabetical",
|
VisiblePairSortMode.Alphabetical => "Alphabetical",
|
||||||
VisiblePairSortMode.VramUsage => "VRAM usage (descending)",
|
VisiblePairSortMode.VramUsage => "VRAM usage (descending)",
|
||||||
@@ -282,4 +329,11 @@ public class DrawFolderTag : DrawFolderBase
|
|||||||
VisiblePairSortMode.PreferredDirectPairs => "Preferred permissions & Direct pairs",
|
VisiblePairSortMode.PreferredDirectPairs => "Preferred permissions & Direct pairs",
|
||||||
_ => "Default",
|
_ => "Default",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private static string GetSortOnlineLabel(OnlinePairSortMode mode) => mode switch
|
||||||
|
{
|
||||||
|
OnlinePairSortMode.Alphabetical => "Alphabetical",
|
||||||
|
OnlinePairSortMode.PreferredDirectPairs => "Preferred permissions & Direct pairs",
|
||||||
|
_ => "Default",
|
||||||
|
};
|
||||||
}
|
}
|
||||||
7
LightlessSync/UI/Models/OnlinePairSortMode.cs
Normal file
7
LightlessSync/UI/Models/OnlinePairSortMode.cs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
namespace LightlessSync.UI.Models;
|
||||||
|
|
||||||
|
public enum OnlinePairSortMode
|
||||||
|
{
|
||||||
|
Alphabetical = 0,
|
||||||
|
PreferredDirectPairs = 1,
|
||||||
|
}
|
||||||
@@ -2,10 +2,9 @@ namespace LightlessSync.UI.Models;
|
|||||||
|
|
||||||
public enum VisiblePairSortMode
|
public enum VisiblePairSortMode
|
||||||
{
|
{
|
||||||
Default = 0,
|
Alphabetical = 0,
|
||||||
Alphabetical = 1,
|
VramUsage = 1,
|
||||||
VramUsage = 2,
|
EffectiveVramUsage = 2,
|
||||||
EffectiveVramUsage = 3,
|
TriangleCount = 3,
|
||||||
TriangleCount = 4,
|
PreferredDirectPairs = 4,
|
||||||
PreferredDirectPairs = 5,
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user