From c77a1f9d2d847237e5ecad4632864d2f1ff5880e Mon Sep 17 00:00:00 2001 From: Infi Date: Wed, 28 Aug 2024 14:43:49 +0200 Subject: [PATCH] Complete the webinterface config panel --- ChatTwo/Resources/Language.Designer.cs | 83 ++++++++++++++++++++++++- ChatTwo/Resources/Language.resx | 29 ++++++++- ChatTwo/Ui/SettingsTabs/Webinterface.cs | 77 ++++++++++++----------- 3 files changed, 149 insertions(+), 40 deletions(-) diff --git a/ChatTwo/Resources/Language.Designer.cs b/ChatTwo/Resources/Language.Designer.cs index a14e860..82bdea5 100755 --- a/ChatTwo/Resources/Language.Designer.cs +++ b/ChatTwo/Resources/Language.Designer.cs @@ -3407,6 +3407,51 @@ namespace ChatTwo.Resources { } } + /// + /// Looks up a localized string similar to - Expect multi-boxing to work with this (only first client works). + /// + internal static string Options_Webinterface_DoNot_Multibox { + get { + return ResourceManager.GetString("Options_Webinterface_DoNot_Multibox", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to - Forward the port used (9000). + /// + internal static string Options_Webinterface_DoNot_Port { + get { + return ResourceManager.GetString("Options_Webinterface_DoNot_Port", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to - Share your authentication code with anyone else. + /// + internal static string Options_Webinterface_DoNot_Share { + get { + return ResourceManager.GetString("Options_Webinterface_DoNot_Share", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unable to resolve hostname.. + /// + internal static string Options_Webinterface_Hostname_Fail { + get { + return ResourceManager.GetString("Options_Webinterface_Hostname_Fail", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Note: This will require at least a semi-modern browser in order to function correctly.. + /// + internal static string Options_Webinterface_Note { + get { + return ResourceManager.GetString("Options_Webinterface_Note", resourceCulture); + } + } + /// /// Looks up a localized string similar to Webinterface. /// @@ -3417,7 +3462,43 @@ namespace ChatTwo.Resources { } /// - /// Looks up a localized string similar to The Webinterface is going to be started when the plugins loads.. + /// Looks up a localized string similar to Do Not:. + /// + internal static string Options_Webinterface_Warning_DoNot { + get { + return ResourceManager.GetString("Options_Webinterface_Warning_DoNot", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to After checking 'Enabled' and clicking 'Start' this will load up Chat2's built-in web interface, which will allow devices on your network to access in-game chat. This feature may be used to allow a phone or another computer to see Chat2 activity, switch channels, and send messages as though you were typing in FFXIV itself.. + /// + internal static string Options_Webinterface_Warning_Header { + get { + return ResourceManager.GetString("Options_Webinterface_Warning_Header", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to For reasons of account security, this feature is not intended for use outside of your local network, you have been warned!. + /// + internal static string Options_Webinterface_Warning_Reason { + get { + return ResourceManager.GetString("Options_Webinterface_Warning_Reason", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No support will be provided if any of the 'Do Not' clauses aren't respected and adhered to appropriately.. + /// + internal static string Options_Webinterface_Warning_Support { + get { + return ResourceManager.GetString("Options_Webinterface_Warning_Support", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Webinterface will start alongside the plugin automatically. /// internal static string Options_WebinterfaceAutoStart_Description { get { diff --git a/ChatTwo/Resources/Language.resx b/ChatTwo/Resources/Language.resx index 2aafa83..16b967f 100644 --- a/ChatTwo/Resources/Language.resx +++ b/ChatTwo/Resources/Language.resx @@ -560,7 +560,7 @@ Start automatically - The Webinterface is going to be started when the plugins loads. + Webinterface will start alongside the plugin automatically Override Style @@ -1336,4 +1336,31 @@ The port this webinterface will be running on. + + After checking 'Enabled' and clicking 'Start' this will load up Chat2's built-in web interface, which will allow devices on your network to access in-game chat. This feature may be used to allow a phone or another computer to see Chat2 activity, switch channels, and send messages as though you were typing in FFXIV itself. + + + For reasons of account security, this feature is not intended for use outside of your local network, you have been warned! + + + Do Not: + + + - Forward the port used (9000) + + + - Share your authentication code with anyone else + + + - Expect multi-boxing to work with this (only first client works) + + + No support will be provided if any of the 'Do Not' clauses aren't respected and adhered to appropriately. + + + Unable to resolve hostname. + + + Note: This will require at least a semi-modern browser in order to function correctly. + diff --git a/ChatTwo/Ui/SettingsTabs/Webinterface.cs b/ChatTwo/Ui/SettingsTabs/Webinterface.cs index a3145c6..4f399a0 100644 --- a/ChatTwo/Ui/SettingsTabs/Webinterface.cs +++ b/ChatTwo/Ui/SettingsTabs/Webinterface.cs @@ -16,21 +16,21 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett public void Draw(bool changed) { - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudWhite, "After checking 'Enabled' and clicking 'Start' this will load up Chat2's built-in web interface, which will allow devices on your network to access in-game chat. This feature may be used to allow a phone or another computer to see Chat2 activity, switch channels, and send messages as though you were typing in FFXIV itself."); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudWhite, Language.Options_Webinterface_Warning_Header); ImGui.Spacing(); - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudOrange, "For reasons of account security, this feature is not intended for use outside of your local network, you have been warned!"); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudOrange, Language.Options_Webinterface_Warning_Reason); ImGui.Spacing(); ImGui.Spacing(); - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, "Do Not:"); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, Language.Options_Webinterface_Warning_DoNot); using (ImRaii.PushIndent(15.0f)) { - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, "- Forward the port used (9000)"); - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, "- Share your authentication code with anyone else"); - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, "- Expect multi-boxing to work with this (only first client works)"); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, Language.Options_Webinterface_DoNot_Port); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, Language.Options_Webinterface_DoNot_Share); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, Language.Options_Webinterface_DoNot_Multibox); } ImGui.Spacing(); - ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudOrange, "No support will be provided if any of the 'Do Not' clauses aren't respected and adhered to appropriately."); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudOrange, Language.Options_Webinterface_Warning_Support); ImGui.Spacing(); ImGui.Separator(); @@ -51,6 +51,7 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett ImGui.Spacing(); ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudOrange, Language.Webinterface_CurrentPassword); + ImGui.AlignTextToFramePadding(); ImGui.TextUnformatted(Mutable.WebinterfacePassword); ImGui.SameLine(); if (ImGuiUtil.IconButton(FontAwesomeIcon.Recycle, tooltip: Language.Webinterface_PasswordReset_Tooltip)) @@ -62,37 +63,7 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett ImGui.TextUnformatted(Language.Webinterface_Controls); using (ImRaii.PushIndent(10.0f)) { - ImGui.TextUnformatted(Language.Webinterface_Controls_Active); - ImGui.SameLine(); - var isActive = Plugin.ServerCore.IsActive(); - using (Plugin.FontManager.FontAwesome.Push()) - using (ImRaii.PushColor(ImGuiCol.Text, isActive ? ImGuiColors.HealerGreen : ImGuiColors.DalamudRed)) - { - ImGui.TextUnformatted(isActive ? FontAwesomeIcon.Check.ToIconString() : FontAwesomeIcon.Times.ToIconString()); - } - - Uri? uri; - try { - uri = new Uri($"http://{System.Net.Dns.GetHostName()}:{Mutable.WebinterfacePort}/"); - } - catch(Exception) - { - uri = null; - } - - ImGui.TextUnformatted(Language.Webinterface_Controls_Url); - ImGui.SameLine(); - if (uri is not null) - { - if (ImGui.Selectable(uri.AbsoluteUri)) - WrapperUtil.TryOpenURI(uri); - } - else - { - ImGui.TextUnformatted("Unable to resolve hostname."); - } - using (ImRaii.Disabled(isActive || Plugin.ServerCore.IsStopping())) { if (ImGui.Button(Language.Webinterface_Button_Start)) @@ -129,10 +100,40 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett }); } } + + ImGui.AlignTextToFramePadding(); + ImGui.TextUnformatted(Language.Webinterface_Controls_Active); + ImGui.SameLine(); + using (Plugin.FontManager.FontAwesome.Push()) + using (ImRaii.PushColor(ImGuiCol.Text, isActive ? ImGuiColors.HealerGreen : ImGuiColors.DalamudRed)) + { + ImGui.TextUnformatted(isActive ? FontAwesomeIcon.Check.ToIconString() : FontAwesomeIcon.Times.ToIconString()); + } + + Uri? uri; + try { + uri = new Uri($"http://{System.Net.Dns.GetHostName()}:{Mutable.WebinterfacePort}/"); + } + catch(Exception) + { + uri = null; + } + + ImGui.TextUnformatted(Language.Webinterface_Controls_Url); + ImGui.SameLine(); + if (uri is not null) + { + if (ImGui.Selectable(uri.AbsoluteUri)) + WrapperUtil.TryOpenURI(uri); + } + else + { + ImGui.TextUnformatted(Language.Options_Webinterface_Hostname_Fail); + } } ImGui.Spacing(); ImGui.Spacing(); - ImGuiUtil.WrappedTextWithColor(ImGuiColors.HealerGreen, "Note: This will require at least a semi-modern browser in order to function correctly."); + ImGuiUtil.WrappedTextWithColor(ImGuiColors.HealerGreen, Language.Options_Webinterface_Note); } }