add census popup on connection

This commit is contained in:
rootdarkarchon
2023-11-17 11:14:33 +01:00
parent 05f1c66a5d
commit a32aef8ee8
10 changed files with 99 additions and 0 deletions

View File

@@ -37,6 +37,10 @@ public class BanUserPopupHandler : IPopupHandler
UiSharedService.TextWrapped("The reason will be displayed in the banlist. The current server-side alias if present (Vanity ID) will automatically be attached to the reason.");
}
public void OnClose()
{
}
public void Open(OpenBanUserPopupMessage message)
{
_reportedPair = message.PairToBan;

View File

@@ -0,0 +1,50 @@
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using ImGuiNET;
using MareSynchronos.Services.ServerConfiguration;
using System.Numerics;
namespace MareSynchronos.UI.Components.Popup;
public class CensusPopupHandler : IPopupHandler
{
private readonly ServerConfigurationManager _serverConfigurationManager;
private readonly UiSharedService _uiSharedService;
public CensusPopupHandler(ServerConfigurationManager serverConfigurationManager, UiSharedService uiSharedService)
{
_serverConfigurationManager = serverConfigurationManager;
_uiSharedService = uiSharedService;
}
public Vector2 PopupSize => new(600, 350);
public void DrawContent()
{
using (ImRaii.PushFont(_uiSharedService.UidFont))
UiSharedService.TextWrapped("Mare Census Opt-Out");
ImGuiHelpers.ScaledDummy(5, 5);
UiSharedService.TextWrapped("If you are seeing this popup you are updating from a Mare version that did not collect census data. Please read the following carefully.");
ImGui.Separator();
UiSharedService.TextWrapped("Mare Census is a data collecting service that can be used for statistical purposes. " +
"All data collected through Mare Census is temporary and will be stored associated with your UID on the connected service as long as you are connected. " +
"The data cannot be used for long term tracking of individuals.");
UiSharedService.TextWrapped("If enabled, Mare Census will collect following data:" + Environment.NewLine
+ "- Currently connected World" + Environment.NewLine
+ "- Current Gender (reflecting Glamourer changes)" + Environment.NewLine
+ "- Current Race (reflecting Glamourer changes)" + Environment.NewLine
+ "- Current Clan (i.e. Seeker of the Sun, Keeper of the Moon, etc., reflecting Glamourer changes)");
UiSharedService.TextWrapped("If you do not consent to the data mentioned above being sent, untick the checkbox below.");
UiSharedService.TextWrapped("This setting can be changed anytime in the Mare Settings.");
var sendCensus = _serverConfigurationManager.SendCensusData;
if (ImGui.Checkbox("Allow sending census data", ref sendCensus))
{
_serverConfigurationManager.SendCensusData = sendCensus;
}
}
public void OnClose()
{
_serverConfigurationManager.ShownCensusPopup = true;
}
}

View File

@@ -7,4 +7,6 @@ public interface IPopupHandler
Vector2 PopupSize { get; }
void DrawContent();
void OnClose();
}

View File

@@ -44,6 +44,13 @@ public class PopupHandler : WindowMediatorSubscriberBase
((BanUserPopupHandler)_currentHandler).Open(msg);
IsOpen = true;
});
Mediator.Subscribe<OpenCensusPopupMessage>(this, (msg) =>
{
_openPopup = true;
_currentHandler = _handlers.OfType<CensusPopupHandler>().Single();
IsOpen = true;
});
}
public override void Draw()
@@ -66,6 +73,13 @@ public class PopupHandler : WindowMediatorSubscriberBase
if (UiSharedService.NormalizedIconTextButton(FontAwesomeIcon.Times, "Close"))
{
ImGui.CloseCurrentPopup();
_currentHandler.OnClose();
}
}
public override void OnClose()
{
base.OnClose();
_currentHandler?.OnClose();
}
}

View File

@@ -49,6 +49,10 @@ internal class ReportPopupHandler : IPopupHandler
}
}
public void OnClose()
{
}
public void Open(OpenReportPopupMessage msg)
{
_reportedPair = msg.PairToReport;