add more options for the compactui

This commit is contained in:
rootdarkarchon
2023-10-18 00:18:02 +02:00
parent 5a62012d2a
commit 3a7e3e7177
6 changed files with 47 additions and 3 deletions

View File

@@ -27,8 +27,10 @@ public class MareConfig : IMareConfiguration
public bool ProfilePopoutRight { get; set; } = false;
public bool ProfilesAllowNsfw { get; set; } = false;
public bool ProfilesShow { get; set; } = true;
public bool ShowSyncshellUsersInVisible { get; set; } = true;
public bool ShowCharacterNameInsteadOfNotesForVisible { get; set; } = false;
public bool ShowOfflineUsersSeparately { get; set; } = true;
public bool ShowSyncshellOfflineUsersSeparately { get; set; } = true;
public bool GroupUpSyncshells { get; set; } = true;
public bool ShowOnlineNotifications { get; set; } = false;
public bool ShowOnlineNotificationsOnlyForIndividualPairs { get; set; } = true;

View File

@@ -137,7 +137,7 @@ public sealed class PairManager : DisposableMediatorSubscriberBase
}
if (sendNotif && _configurationService.Current.ShowOnlineNotifications
&& (_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs && pair.UserPair != null
&& (_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs && pair.IsDirectlyPaired && !pair.IsOneSidedPair
|| !_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs)
&& (_configurationService.Current.ShowOnlineNotificationsOnlyForNamedPairs && !string.IsNullOrEmpty(pair.GetNote())
|| !_configurationService.Current.ShowOnlineNotificationsOnlyForNamedPairs))

View File

@@ -484,7 +484,8 @@ public class CompactUi : WindowMediatorSubscriberBase
if (_configService.Current.ShowVisibleUsersSeparately)
{
var visibleUsers = users.Where(u => u.Key.IsVisible)
var visibleUsers = users.Where(u => u.Key.IsVisible &&
(_configService.Current.ShowSyncshellUsersInVisible || !(!_configService.Current.ShowSyncshellUsersInVisible && !u.Key.IsDirectlyPaired)))
.OrderBy(
u => _configService.Current.ShowCharacterNameInsteadOfNotesForVisible && !string.IsNullOrEmpty(u.Key.PlayerName)
? (_configService.Current.PreferNotesOverNamesForVisible ? u.Key.GetNote() : u.Key.PlayerName)
@@ -563,13 +564,23 @@ public class CompactUi : WindowMediatorSubscriberBase
if (_configService.Current.ShowOfflineUsersSeparately)
{
var offlineUsersEntries = users.Where(u => (!u.Key.IsOneSidedPair || u.Value.Any()) && !u.Key.IsOnline && !u.Key.UserPair.OwnPermissions.IsPaused()).OrderBy(
var offlineUsersEntries = users.Where(u =>
((u.Key.IsDirectlyPaired && _configService.Current.ShowSyncshellOfflineUsersSeparately) || !_configService.Current.ShowSyncshellOfflineUsersSeparately)
&& (!u.Key.IsOneSidedPair || u.Value.Any()) && !u.Key.IsOnline && !u.Key.UserPair.OwnPermissions.IsPaused()).OrderBy(
u => _configService.Current.ShowCharacterNameInsteadOfNotesForVisible && !string.IsNullOrEmpty(u.Key.PlayerName)
? (_configService.Current.PreferNotesOverNamesForVisible ? u.Key.GetNote() : u.Key.PlayerName)
: (u.Key.GetNote() ?? u.Key.UserData.AliasOrUID), StringComparer.OrdinalIgnoreCase)
.ToDictionary(u => u.Key, u => u.Value);
drawFolders.Add(_drawEntityFactory.CreateDrawTagFolder(TagHandler.CustomOfflineTag, offlineUsersEntries));
if (_configService.Current.ShowSyncshellOfflineUsersSeparately)
{
var offlineSyncshellUsers = users.Where(u => !u.Key.IsDirectlyPaired && !u.Key.IsOnline && !u.Key.UserPair.OwnPermissions.IsPaused()).OrderBy(
u => _configService.Current.ShowCharacterNameInsteadOfNotesForVisible && !string.IsNullOrEmpty(u.Key.PlayerName)
? (_configService.Current.PreferNotesOverNamesForVisible ? u.Key.GetNote() : u.Key.PlayerName)
: (u.Key.GetNote() ?? u.Key.UserData.AliasOrUID), StringComparer.OrdinalIgnoreCase);
drawFolders.Add(_drawEntityFactory.CreateDrawTagFolder(TagHandler.CustomOfflineSyncshellTag, offlineSyncshellUsers.ToDictionary(k => k.Key, k => k.Value)));
}
}
drawFolders.Add(_drawEntityFactory.CreateDrawTagFolder(TagHandler.CustomUnpairedTag, users.Where(u => u.Key.IsOneSidedPair).ToDictionary(u => u.Key, u => u.Value)));

View File

@@ -27,6 +27,7 @@ public class DrawFolderTag : DrawFolderBase
TagHandler.CustomOfflineTag => false,
TagHandler.CustomVisibleTag => false,
TagHandler.CustomAllTag => true,
TagHandler.CustomOfflineSyncshellTag => false,
_ => true,
};
@@ -37,6 +38,7 @@ public class DrawFolderTag : DrawFolderBase
TagHandler.CustomOfflineTag => false,
TagHandler.CustomVisibleTag => false,
TagHandler.CustomAllTag => false,
TagHandler.CustomOfflineSyncshellTag => false,
_ => true,
};
@@ -47,6 +49,7 @@ public class DrawFolderTag : DrawFolderBase
TagHandler.CustomOfflineTag => false,
TagHandler.CustomVisibleTag => false,
TagHandler.CustomAllTag => false,
TagHandler.CustomOfflineSyncshellTag => false,
_ => true,
} && _drawPairs.Any();
@@ -58,6 +61,7 @@ public class DrawFolderTag : DrawFolderBase
TagHandler.CustomUnpairedTag => FontAwesomeIcon.ArrowsLeftRight.ToIconString(),
TagHandler.CustomOnlineTag => FontAwesomeIcon.Link.ToIconString(),
TagHandler.CustomOfflineTag => FontAwesomeIcon.Unlink.ToIconString(),
TagHandler.CustomOfflineSyncshellTag => FontAwesomeIcon.Unlink.ToIconString(),
TagHandler.CustomVisibleTag => FontAwesomeIcon.Eye.ToIconString(),
TagHandler.CustomAllTag => FontAwesomeIcon.User.ToIconString(),
_ => FontAwesomeIcon.Folder.ToIconString()
@@ -93,6 +97,7 @@ public class DrawFolderTag : DrawFolderBase
TagHandler.CustomUnpairedTag => "One-sided Individual Pairs",
TagHandler.CustomOnlineTag => "Online / Paused by you",
TagHandler.CustomOfflineTag => "Offline / Paused by other",
TagHandler.CustomOfflineSyncshellTag => "Offline Syncshell Users",
TagHandler.CustomVisibleTag => "Visible",
TagHandler.CustomAllTag => "Users",
_ => _id

View File

@@ -6,6 +6,7 @@ public class TagHandler
{
public const string CustomAllTag = "Mare_All";
public const string CustomOfflineTag = "Mare_Offline";
public const string CustomOfflineSyncshellTag = "Mare_OfflineSyncshell";
public const string CustomOnlineTag = "Mare_Online";
public const string CustomUnpairedTag = "Mare_Unpaired";
public const string CustomVisibleTag = "Mare_Visible";

View File

@@ -1,5 +1,6 @@
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility;
using ImGuiNET;
using MareSynchronos.API.Data;
@@ -560,6 +561,8 @@ public class SettingsUi : WindowMediatorSubscriberBase
var enableDtrEntry = _configService.Current.EnableDtrEntry;
var preferNotesInsteadOfName = _configService.Current.PreferNotesOverNamesForVisible;
var groupUpSyncshells = _configService.Current.GroupUpSyncshells;
var groupInVisible = _configService.Current.ShowSyncshellUsersInVisible;
var syncshellOfflineSeparate = _configService.Current.ShowSyncshellOfflineUsersSeparately;
if (ImGui.Checkbox("Enable Game Right Click Menu Entries", ref enableRightClickMenu))
{
@@ -583,6 +586,17 @@ public class SettingsUi : WindowMediatorSubscriberBase
}
UiSharedService.DrawHelpText("This will show all currently visible users in a special 'Visible' group in the main UI.");
using (ImRaii.Disabled(!showVisibleSeparate))
{
using var indent = ImRaii.PushIndent();
if (ImGui.Checkbox("Show Syncshell Users in Visible Group", ref groupInVisible))
{
_configService.Current.ShowSyncshellUsersInVisible = groupInVisible;
_configService.Save();
Mediator.Publish(new RefreshUiMessage());
}
}
if (ImGui.Checkbox("Show separate Offline group", ref showOfflineSeparate))
{
_configService.Current.ShowOfflineUsersSeparately = showOfflineSeparate;
@@ -591,6 +605,17 @@ public class SettingsUi : WindowMediatorSubscriberBase
}
UiSharedService.DrawHelpText("This will show all currently offline users in a special 'Offline' group in the main UI.");
using (ImRaii.Disabled(!showOfflineSeparate))
{
using var indent = ImRaii.PushIndent();
if (ImGui.Checkbox("Show separate Offline group for Syncshell users", ref syncshellOfflineSeparate))
{
_configService.Current.ShowSyncshellOfflineUsersSeparately = syncshellOfflineSeparate;
_configService.Save();
Mediator.Publish(new RefreshUiMessage());
}
}
if (ImGui.Checkbox("Group up all syncshells in one folder", ref groupUpSyncshells))
{
_configService.Current.GroupUpSyncshells = groupUpSyncshells;