diff --git a/ChatTwo/PayloadHandler.cs b/ChatTwo/PayloadHandler.cs
index 3bbf2d5..312d19d 100755
--- a/ChatTwo/PayloadHandler.cs
+++ b/ChatTwo/PayloadHandler.cs
@@ -417,7 +417,7 @@ public sealed class PayloadHandler {
GameFunctions.GameFunctions.OpenPartyFinder();
break;
case UriPayload uri:
- TryOpenURI(uri.Uri);
+ WrapperUtil.TryOpenURI(uri.Uri);
break;
default:
RightClickPayload(chunk, payload);
@@ -671,7 +671,7 @@ public sealed class PayloadHandler {
ImGui.Separator();
if (ImGui.Selectable(Language.Context_OpenInBrowser))
- TryOpenURI(uri.Uri);
+ WrapperUtil.TryOpenURI(uri.Uri);
if (ImGui.Selectable(Language.Context_CopyLink))
{
@@ -679,18 +679,4 @@ public sealed class PayloadHandler {
WrapperUtil.AddNotification(Language.Context_CopyLinkNotification, NotificationType.Info);
}
}
-
- private void TryOpenURI(Uri uri)
- {
- try
- {
- Plugin.Log.Debug($"Opening URI {uri} in default browser");
- Dalamud.Utility.Util.OpenLink(uri.ToString());
- }
- catch (Exception ex)
- {
- Plugin.Log.Error($"Error opening URI: {ex}");
- WrapperUtil.AddNotification(Language.Context_OpenInBrowserError, NotificationType.Error);
- }
- }
}
diff --git a/ChatTwo/Resources/Language.Designer.cs b/ChatTwo/Resources/Language.Designer.cs
index 76db480..a14e860 100755
--- a/ChatTwo/Resources/Language.Designer.cs
+++ b/ChatTwo/Resources/Language.Designer.cs
@@ -3606,7 +3606,7 @@ namespace ChatTwo.Resources {
}
///
- /// Looks up a localized string similar to Controls:.
+ /// Looks up a localized string similar to Control Panel:.
///
internal static string Webinterface_Controls {
get {
@@ -3623,6 +3623,15 @@ namespace ChatTwo.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to URL:.
+ ///
+ internal static string Webinterface_Controls_Url {
+ get {
+ return ResourceManager.GetString("Webinterface_Controls_Url", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Authcode:.
///
diff --git a/ChatTwo/Resources/Language.resx b/ChatTwo/Resources/Language.resx
index 24bd86a..2aafa83 100644
--- a/ChatTwo/Resources/Language.resx
+++ b/ChatTwo/Resources/Language.resx
@@ -581,11 +581,14 @@
Reset your password and invalidate all session tokens.
- Controls:
+ Control Panel:
Active:
+
+ URL:
+
none set
diff --git a/ChatTwo/Ui/SettingsTabs/Webinterface.cs b/ChatTwo/Ui/SettingsTabs/Webinterface.cs
index 6ee978f..a3145c6 100644
--- a/ChatTwo/Ui/SettingsTabs/Webinterface.cs
+++ b/ChatTwo/Ui/SettingsTabs/Webinterface.cs
@@ -16,9 +16,7 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett
public void Draw(bool changed)
{
- ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudWhite, "On checking 'Enabled' this will enable and 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.");
- ImGui.Spacing();
- ImGuiUtil.WrappedTextWithColor(ImGuiColors.HealerGreen, "Note: This will require at least a semi-modern browser in order to function correctly.");
+ 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.");
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!");
@@ -29,7 +27,7 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett
{
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 is tracked and utilised)");
+ ImGuiUtil.WrappedTextWithColor(ImGuiColors.DalamudViolet, "- Expect multi-boxing to work with this (only first client works)");
}
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.");
@@ -43,8 +41,6 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett
if (!Mutable.WebinterfaceEnabled)
return;
-
- ImGui.Separator();
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(ref Mutable.WebinterfaceAutoStart, Language.Options_WebinterfaceAutoStart_Name, Language.Options_WebinterfaceAutoStart_Description);
@@ -63,7 +59,7 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett
Plugin.ServerCore.InvalidateSessions();
}
- ImGuiUtil.WrappedTextWithColor(ImGuiColors.HealerGreen, Language.Webinterface_Controls);
+ ImGui.TextUnformatted(Language.Webinterface_Controls);
using (ImRaii.PushIndent(10.0f))
{
ImGui.TextUnformatted(Language.Webinterface_Controls_Active);
@@ -76,6 +72,27 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett
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))
@@ -113,6 +130,9 @@ internal sealed class Webinterface(Plugin plugin, Configuration mutable) : ISett
}
}
}
+
ImGui.Spacing();
+ ImGui.Spacing();
+ ImGuiUtil.WrappedTextWithColor(ImGuiColors.HealerGreen, "Note: This will require at least a semi-modern browser in order to function correctly.");
}
}
diff --git a/ChatTwo/Util/WrapperUtil.cs b/ChatTwo/Util/WrapperUtil.cs
index cb0c199..a5f3703 100644
--- a/ChatTwo/Util/WrapperUtil.cs
+++ b/ChatTwo/Util/WrapperUtil.cs
@@ -1,4 +1,5 @@
-using Dalamud.Interface.ImGuiNotification;
+using ChatTwo.Resources;
+using Dalamud.Interface.ImGuiNotification;
namespace ChatTwo.Util;
@@ -9,6 +10,20 @@ public static class WrapperUtil
Plugin.Notification.AddNotification(new Notification { Content = content, Type = type, Minimized = minimized });
}
+ public static void TryOpenURI(Uri uri)
+ {
+ try
+ {
+ Plugin.Log.Debug($"Opening URI {uri} in default browser");
+ Dalamud.Utility.Util.OpenLink(uri.ToString());
+ }
+ catch (Exception ex)
+ {
+ Plugin.Log.Error($"Error opening URI: {ex}");
+ AddNotification(Language.Context_OpenInBrowserError, NotificationType.Error);
+ }
+ }
+
public static IEnumerable<(T Value, int Index)> WithIndex(this IEnumerable list)
=> list.Select((x, i) => (x, i));
}
\ No newline at end of file