This commit is contained in:
2025-12-16 06:31:29 +09:00
parent bdfcf254a8
commit 4444a88746
32 changed files with 1204 additions and 464 deletions

View File

@@ -7,17 +7,14 @@ using Dalamud.Utility;
using LightlessSync.API.Data.Enum;
using LightlessSync.API.Data.Extensions;
using LightlessSync.LightlessConfiguration.Models;
using LightlessSync.PlayerData.Pairs;
using LightlessSync.Services;
using LightlessSync.Services.Mediator;
using LightlessSync.Services.LightFinder;
using LightlessSync.Utils;
using LightlessSync.UI.Models;
using LightlessSync.UI.Style;
using LightlessSync.WebAPI;
using System.Numerics;
using System.Threading.Tasks;
using System.Linq;
namespace LightlessSync.UI;
@@ -29,6 +26,8 @@ public class TopTabMenu
private readonly PairRequestService _pairRequestService;
private readonly DalamudUtilService _dalamudUtilService;
private readonly LightFinderService _lightFinderService;
private readonly LightFinderScannerService _lightFinderScannerService;
private readonly HashSet<string> _pendingPairRequestActions = new(StringComparer.Ordinal);
private bool _pairRequestsExpanded; // useless for now
private int _lastRequestCount;
@@ -42,7 +41,7 @@ public class TopTabMenu
private SelectedTab _selectedTab = SelectedTab.None;
private PairUiSnapshot? _currentSnapshot;
public TopTabMenu(LightlessMediator lightlessMediator, ApiController apiController, UiSharedService uiSharedService, PairRequestService pairRequestService, DalamudUtilService dalamudUtilService, NotificationService lightlessNotificationService)
public TopTabMenu(LightlessMediator lightlessMediator, ApiController apiController, UiSharedService uiSharedService, PairRequestService pairRequestService, DalamudUtilService dalamudUtilService, NotificationService lightlessNotificationService, LightFinderService lightFinderService, LightFinderScannerService lightFinderScannerService)
{
_lightlessMediator = lightlessMediator;
_apiController = apiController;
@@ -50,6 +49,8 @@ public class TopTabMenu
_dalamudUtilService = dalamudUtilService;
_uiSharedService = uiSharedService;
_lightlessNotificationService = lightlessNotificationService;
_lightFinderService = lightFinderService;
_lightFinderScannerService = lightFinderScannerService;
}
private enum SelectedTab
@@ -154,7 +155,7 @@ public class TopTabMenu
Selune.RegisterHighlight(ImGui.GetItemRectMin(), ImGui.GetItemRectMax(), SeluneHighlightMode.Both, true, buttonBorderThickness, exactSize: true, clipToElement: true, roundingOverride: buttonRounding);
}
}
UiSharedService.AttachToolTip("Zone Chat");
UiSharedService.AttachToolTip("Lightless Chat");
ImGui.SameLine();
ImGui.SameLine();
@@ -786,12 +787,28 @@ public class TopTabMenu
ImGui.SameLine();
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Globe, "Syncshell Finder", buttonX, center: true))
var syncshellFinderLabel = GetSyncshellFinderLabel();
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Globe, syncshellFinderLabel, buttonX, center: true))
{
_lightlessMediator.Publish(new UiToggleMessage(typeof(SyncshellFinderUI)));
}
}
private string GetSyncshellFinderLabel()
{
if (!_lightFinderService.IsBroadcasting)
return "Syncshell Finder";
var nearbyCount = _lightFinderScannerService
.GetActiveSyncshellBroadcasts()
.Where(b => !string.IsNullOrEmpty(b.GID))
.Select(b => b.GID!)
.Distinct(StringComparer.Ordinal)
.Count();
return nearbyCount > 0 ? $"Syncshell Finder ({nearbyCount})" : "Syncshell Finder";
}
private void DrawUserConfig(float availableWidth, float spacingX)
{
var buttonX = (availableWidth - spacingX) / 2f;