Added functionality to rename groups (#12)
* Updated logos in Profile screen. * Updated IPC calls for Petrenamer and bumped API version. * IPC calls updated, APIVersion pushed for Moodles * Updated version 1.11.4 in csproj * Added Rename Tag UI for renaming of groups
This commit is contained in:
@@ -130,6 +130,7 @@ public sealed class Plugin : IDalamudPlugin
|
|||||||
s.GetRequiredService<CharaDataManager>(),
|
s.GetRequiredService<CharaDataManager>(),
|
||||||
s.GetRequiredService<LightlessMediator>()));
|
s.GetRequiredService<LightlessMediator>()));
|
||||||
collection.AddSingleton<SelectPairForTagUi>();
|
collection.AddSingleton<SelectPairForTagUi>();
|
||||||
|
collection.AddSingleton<RenameTagUi>();
|
||||||
collection.AddSingleton((s) => new EventAggregator(pluginInterface.ConfigDirectory.FullName,
|
collection.AddSingleton((s) => new EventAggregator(pluginInterface.ConfigDirectory.FullName,
|
||||||
s.GetRequiredService<ILogger<EventAggregator>>(), s.GetRequiredService<LightlessMediator>()));
|
s.GetRequiredService<ILogger<EventAggregator>>(), s.GetRequiredService<LightlessMediator>()));
|
||||||
collection.AddSingleton((s) => new DalamudUtilService(s.GetRequiredService<ILogger<DalamudUtilService>>(),
|
collection.AddSingleton((s) => new DalamudUtilService(s.GetRequiredService<ILogger<DalamudUtilService>>(),
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
private readonly PairManager _pairManager;
|
private readonly PairManager _pairManager;
|
||||||
private readonly SelectTagForPairUi _selectGroupForPairUi;
|
private readonly SelectTagForPairUi _selectGroupForPairUi;
|
||||||
private readonly SelectPairForTagUi _selectPairsForGroupUi;
|
private readonly SelectPairForTagUi _selectPairsForGroupUi;
|
||||||
|
private readonly RenameTagUi _renameTagUi;
|
||||||
private readonly IpcManager _ipcManager;
|
private readonly IpcManager _ipcManager;
|
||||||
private readonly ServerConfigurationManager _serverManager;
|
private readonly ServerConfigurationManager _serverManager;
|
||||||
private readonly TopTabMenu _tabMenu;
|
private readonly TopTabMenu _tabMenu;
|
||||||
@@ -56,7 +57,7 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
|
|
||||||
public CompactUi(ILogger<CompactUi> logger, UiSharedService uiShared, LightlessConfigService configService, ApiController apiController, PairManager pairManager,
|
public CompactUi(ILogger<CompactUi> logger, UiSharedService uiShared, LightlessConfigService configService, ApiController apiController, PairManager pairManager,
|
||||||
ServerConfigurationManager serverManager, LightlessMediator mediator, FileUploadManager fileTransferManager,
|
ServerConfigurationManager serverManager, LightlessMediator mediator, FileUploadManager fileTransferManager,
|
||||||
TagHandler tagHandler, DrawEntityFactory drawEntityFactory, SelectTagForPairUi selectTagForPairUi, SelectPairForTagUi selectPairForTagUi,
|
TagHandler tagHandler, DrawEntityFactory drawEntityFactory, SelectTagForPairUi selectTagForPairUi, SelectPairForTagUi selectPairForTagUi, RenameTagUi renameTagUi,
|
||||||
PerformanceCollectorService performanceCollectorService, IpcManager ipcManager)
|
PerformanceCollectorService performanceCollectorService, IpcManager ipcManager)
|
||||||
: base(logger, mediator, "###LightlessSyncMainUI", performanceCollectorService)
|
: base(logger, mediator, "###LightlessSyncMainUI", performanceCollectorService)
|
||||||
{
|
{
|
||||||
@@ -70,6 +71,7 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
_drawEntityFactory = drawEntityFactory;
|
_drawEntityFactory = drawEntityFactory;
|
||||||
_selectGroupForPairUi = selectTagForPairUi;
|
_selectGroupForPairUi = selectTagForPairUi;
|
||||||
_selectPairsForGroupUi = selectPairForTagUi;
|
_selectPairsForGroupUi = selectPairForTagUi;
|
||||||
|
_renameTagUi = renameTagUi;
|
||||||
_ipcManager = ipcManager;
|
_ipcManager = ipcManager;
|
||||||
_tabMenu = new TopTabMenu(Mediator, _apiController, _pairManager, _uiSharedService);
|
_tabMenu = new TopTabMenu(Mediator, _apiController, _pairManager, _uiSharedService);
|
||||||
|
|
||||||
@@ -198,6 +200,7 @@ public class CompactUi : WindowMediatorSubscriberBase
|
|||||||
using (ImRaii.PushId("transfers")) DrawTransfers();
|
using (ImRaii.PushId("transfers")) DrawTransfers();
|
||||||
_transferPartHeight = ImGui.GetCursorPosY() - pairlistEnd - ImGui.GetTextLineHeight();
|
_transferPartHeight = ImGui.GetCursorPosY() - pairlistEnd - ImGui.GetTextLineHeight();
|
||||||
using (ImRaii.PushId("group-user-popup")) _selectPairsForGroupUi.Draw(_pairManager.DirectPairs);
|
using (ImRaii.PushId("group-user-popup")) _selectPairsForGroupUi.Draw(_pairManager.DirectPairs);
|
||||||
|
using (ImRaii.PushId("group-user-edit")) _renameTagUi.Draw(_pairManager.DirectPairs);
|
||||||
using (ImRaii.PushId("grouping-popup")) _selectGroupForPairUi.Draw();
|
using (ImRaii.PushId("grouping-popup")) _selectGroupForPairUi.Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,15 @@ public class DrawFolderTag : DrawFolderBase
|
|||||||
{
|
{
|
||||||
private readonly ApiController _apiController;
|
private readonly ApiController _apiController;
|
||||||
private readonly SelectPairForTagUi _selectPairForTagUi;
|
private readonly SelectPairForTagUi _selectPairForTagUi;
|
||||||
|
private readonly RenameTagUi _renameTagUi;
|
||||||
|
|
||||||
public DrawFolderTag(string id, IImmutableList<DrawUserPair> drawPairs, IImmutableList<Pair> allPairs,
|
public DrawFolderTag(string id, IImmutableList<DrawUserPair> drawPairs, IImmutableList<Pair> allPairs,
|
||||||
TagHandler tagHandler, ApiController apiController, SelectPairForTagUi selectPairForTagUi, UiSharedService uiSharedService)
|
TagHandler tagHandler, ApiController apiController, SelectPairForTagUi selectPairForTagUi, RenameTagUi renameTagUi, UiSharedService uiSharedService)
|
||||||
: base(id, drawPairs, allPairs, tagHandler, uiSharedService)
|
: base(id, drawPairs, allPairs, tagHandler, uiSharedService)
|
||||||
{
|
{
|
||||||
_apiController = apiController;
|
_apiController = apiController;
|
||||||
_selectPairForTagUi = selectPairForTagUi;
|
_selectPairForTagUi = selectPairForTagUi;
|
||||||
|
_renameTagUi = renameTagUi;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool RenderIfEmpty => _id switch
|
protected override bool RenderIfEmpty => _id switch
|
||||||
@@ -100,12 +102,15 @@ public class DrawFolderTag : DrawFolderBase
|
|||||||
protected override void DrawMenu(float menuWidth)
|
protected override void DrawMenu(float menuWidth)
|
||||||
{
|
{
|
||||||
ImGui.TextUnformatted("Group Menu");
|
ImGui.TextUnformatted("Group Menu");
|
||||||
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Users, "Select Pairs", menuWidth, true))
|
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Users, "Select Pairs", menuWidth, isInPopup: true))
|
||||||
{
|
{
|
||||||
_selectPairForTagUi.Open(_id);
|
_selectPairForTagUi.Open(_id);
|
||||||
}
|
}
|
||||||
UiSharedService.AttachToolTip("Select Individual Pairs for this Pair Group");
|
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Edit, "Rename Pair Group", menuWidth, isInPopup: true))
|
||||||
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Trash, "Delete Pair Group", menuWidth, true) && UiSharedService.CtrlPressed())
|
{
|
||||||
|
_renameTagUi.Open(_id);
|
||||||
|
}
|
||||||
|
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Trash, "Delete Pair Group", menuWidth, isInPopup: true) && UiSharedService.CtrlPressed())
|
||||||
{
|
{
|
||||||
_tagHandler.RemoveTag(_id);
|
_tagHandler.RemoveTag(_id);
|
||||||
}
|
}
|
||||||
|
|||||||
93
LightlessSync/UI/Components/RenameTagUi.cs
Normal file
93
LightlessSync/UI/Components/RenameTagUi.cs
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
using Dalamud.Bindings.ImGui;
|
||||||
|
using Dalamud.Interface.Utility;
|
||||||
|
using Dalamud.Interface.Utility.Raii;
|
||||||
|
using LightlessSync.PlayerData.Pairs;
|
||||||
|
using LightlessSync.UI.Handlers;
|
||||||
|
|
||||||
|
using System.Numerics;
|
||||||
|
|
||||||
|
namespace LightlessSync.UI.Components;
|
||||||
|
|
||||||
|
public class RenameTagUi
|
||||||
|
{
|
||||||
|
private readonly TagHandler _tagHandler;
|
||||||
|
private readonly UiSharedService _uiSharedService;
|
||||||
|
private string _desiredName = string.Empty;
|
||||||
|
private bool _opened = false;
|
||||||
|
private HashSet<string> _peopleInGroup = new(StringComparer.Ordinal);
|
||||||
|
private bool _show = false;
|
||||||
|
private string _tag = string.Empty;
|
||||||
|
|
||||||
|
public RenameTagUi(TagHandler tagHandler, UiSharedService uiSharedService)
|
||||||
|
{
|
||||||
|
_tagHandler = tagHandler;
|
||||||
|
_uiSharedService = uiSharedService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Draw(List<Pair> pairs)
|
||||||
|
{
|
||||||
|
var workHeight = ImGui.GetMainViewport().WorkSize.Y / ImGuiHelpers.GlobalScale;
|
||||||
|
var minSize = new Vector2(300, workHeight < 110 ? workHeight : 110) * ImGuiHelpers.GlobalScale;
|
||||||
|
var maxSize = new Vector2(300, 110) * ImGuiHelpers.GlobalScale;
|
||||||
|
|
||||||
|
var popupName = $"Renaming Group {_tag}";
|
||||||
|
|
||||||
|
if (!_show)
|
||||||
|
{
|
||||||
|
_opened = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_show && !_opened)
|
||||||
|
{
|
||||||
|
ImGui.SetNextWindowSize(minSize);
|
||||||
|
UiSharedService.CenterNextWindow(minSize.X, minSize.Y, ImGuiCond.Always);
|
||||||
|
ImGui.OpenPopup(popupName);
|
||||||
|
_opened = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.SetNextWindowSizeConstraints(minSize, maxSize);
|
||||||
|
if (ImGui.BeginPopupModal(popupName, ref _show, ImGuiWindowFlags.Popup | ImGuiWindowFlags.Modal))
|
||||||
|
{
|
||||||
|
ImGui.TextUnformatted($"Renaming {_tag}");
|
||||||
|
|
||||||
|
ImGui.InputTextWithHint("##desiredname", "Enter new group name", ref _desiredName, 255, ImGuiInputTextFlags.None);
|
||||||
|
using (ImRaii.Disabled(string.IsNullOrEmpty(_desiredName)))
|
||||||
|
{
|
||||||
|
if (_uiSharedService.IconTextButton(Dalamud.Interface.FontAwesomeIcon.Plus, "Rename Group"))
|
||||||
|
{
|
||||||
|
RenameTag(pairs, _tag, _desiredName);
|
||||||
|
_show = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui.EndPopup();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_show = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Open(string tag)
|
||||||
|
{
|
||||||
|
_peopleInGroup = _tagHandler.GetOtherUidsForTag(tag);
|
||||||
|
_tag = tag;
|
||||||
|
_desiredName = "";
|
||||||
|
_show = true;
|
||||||
|
}
|
||||||
|
public void RenameTag(List<Pair> pairs, string oldTag, string newTag)
|
||||||
|
{
|
||||||
|
//Removal of old tag
|
||||||
|
_tagHandler.RemoveTag(oldTag);
|
||||||
|
|
||||||
|
//Creation of new tag and adding of old group pairs in new one.
|
||||||
|
_tagHandler.AddTag(newTag);
|
||||||
|
foreach (Pair pair in pairs)
|
||||||
|
{
|
||||||
|
var isInTag = _peopleInGroup.Contains(pair.UserData.UID);
|
||||||
|
if (isInTag)
|
||||||
|
{
|
||||||
|
_tagHandler.AddTagToPairedUid(pair.UserData.UID, newTag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,11 +23,12 @@ public class DrawEntityFactory
|
|||||||
private readonly PlayerPerformanceConfigService _playerPerformanceConfigService;
|
private readonly PlayerPerformanceConfigService _playerPerformanceConfigService;
|
||||||
private readonly CharaDataManager _charaDataManager;
|
private readonly CharaDataManager _charaDataManager;
|
||||||
private readonly SelectTagForPairUi _selectTagForPairUi;
|
private readonly SelectTagForPairUi _selectTagForPairUi;
|
||||||
|
private readonly RenameTagUi _renameTagUi;
|
||||||
private readonly TagHandler _tagHandler;
|
private readonly TagHandler _tagHandler;
|
||||||
private readonly IdDisplayHandler _uidDisplayHandler;
|
private readonly IdDisplayHandler _uidDisplayHandler;
|
||||||
|
|
||||||
public DrawEntityFactory(ILogger<DrawEntityFactory> logger, ApiController apiController, IdDisplayHandler uidDisplayHandler,
|
public DrawEntityFactory(ILogger<DrawEntityFactory> logger, ApiController apiController, IdDisplayHandler uidDisplayHandler,
|
||||||
SelectTagForPairUi selectTagForPairUi, LightlessMediator mediator,
|
SelectTagForPairUi selectTagForPairUi, RenameTagUi renameTagUi, LightlessMediator mediator,
|
||||||
TagHandler tagHandler, SelectPairForTagUi selectPairForTagUi,
|
TagHandler tagHandler, SelectPairForTagUi selectPairForTagUi,
|
||||||
ServerConfigurationManager serverConfigurationManager, UiSharedService uiSharedService,
|
ServerConfigurationManager serverConfigurationManager, UiSharedService uiSharedService,
|
||||||
PlayerPerformanceConfigService playerPerformanceConfigService, CharaDataManager charaDataManager)
|
PlayerPerformanceConfigService playerPerformanceConfigService, CharaDataManager charaDataManager)
|
||||||
@@ -36,6 +37,7 @@ public class DrawEntityFactory
|
|||||||
_apiController = apiController;
|
_apiController = apiController;
|
||||||
_uidDisplayHandler = uidDisplayHandler;
|
_uidDisplayHandler = uidDisplayHandler;
|
||||||
_selectTagForPairUi = selectTagForPairUi;
|
_selectTagForPairUi = selectTagForPairUi;
|
||||||
|
_renameTagUi = renameTagUi;
|
||||||
_mediator = mediator;
|
_mediator = mediator;
|
||||||
_tagHandler = tagHandler;
|
_tagHandler = tagHandler;
|
||||||
_selectPairForTagUi = selectPairForTagUi;
|
_selectPairForTagUi = selectPairForTagUi;
|
||||||
@@ -58,8 +60,8 @@ public class DrawEntityFactory
|
|||||||
Dictionary<Pair, List<GroupFullInfoDto>> filteredPairs,
|
Dictionary<Pair, List<GroupFullInfoDto>> filteredPairs,
|
||||||
IImmutableList<Pair> allPairs)
|
IImmutableList<Pair> allPairs)
|
||||||
{
|
{
|
||||||
return new(tag, filteredPairs.Select(u => CreateDrawPair(tag, u.Key, u.Value, null)).ToImmutableList(),
|
return new(tag, filteredPairs.Select(u => CreateDrawPair(tag, u.Key, u.Value, currentGroup: null)).ToImmutableList(),
|
||||||
allPairs, _tagHandler, _apiController, _selectPairForTagUi, _uiSharedService);
|
allPairs, _tagHandler, _apiController, _selectPairForTagUi, _renameTagUi, _uiSharedService);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DrawUserPair CreateDrawPair(string id, Pair user, List<GroupFullInfoDto> groups, GroupFullInfoDto? currentGroup)
|
public DrawUserPair CreateDrawPair(string id, Pair user, List<GroupFullInfoDto> groups, GroupFullInfoDto? currentGroup)
|
||||||
|
|||||||
Reference in New Issue
Block a user