diff --git a/ChatTwo/Plugin.cs b/ChatTwo/Plugin.cs
index 2711217..b5adad9 100755
--- a/ChatTwo/Plugin.cs
+++ b/ChatTwo/Plugin.cs
@@ -152,9 +152,20 @@ public sealed class Plugin : IDalamudPlugin
});
}
+ // Hellion default tab layout for first-run and v10-wipe.
+ // General-catch-all + FC + Party + Linkshell + Tells matches the
+ // channel set the average raider uses; the Beginner tab only
+ // appears when the user has the Novice Network enabled in Audio
+ // & Notifications, otherwise it would just sit empty.
if (Config.Tabs.Count == 0)
{
Config.Tabs.Add(TabsUtil.VanillaGeneral);
+ Config.Tabs.Add(TabsUtil.HellionFreeCompany);
+ Config.Tabs.Add(TabsUtil.HellionParty);
+ if (Config.ShowNoviceNetwork)
+ Config.Tabs.Add(TabsUtil.HellionBeginner);
+ Config.Tabs.Add(TabsUtil.HellionLinkshell);
+ Config.Tabs.Add(TabsUtil.VanillaTellExclusive);
}
LanguageChanged(Interface.UiLanguage);
diff --git a/ChatTwo/Resources/HellionStrings.Designer.cs b/ChatTwo/Resources/HellionStrings.Designer.cs
index 6035db8..538883a 100644
--- a/ChatTwo/Resources/HellionStrings.Designer.cs
+++ b/ChatTwo/Resources/HellionStrings.Designer.cs
@@ -231,4 +231,11 @@ internal class HellionStrings
internal static string Settings_Information_VersionInfo_Heading => Get(nameof(Settings_Information_VersionInfo_Heading));
internal static string Settings_Information_About_Heading => Get(nameof(Settings_Information_About_Heading));
internal static string Settings_Information_Changelog_Heading => Get(nameof(Settings_Information_Changelog_Heading));
+
+ // Hellion Chat — Default tab presets (channel-themed)
+ internal static string Tabs_Presets_FreeCompany => Get(nameof(Tabs_Presets_FreeCompany));
+ internal static string Tabs_Presets_Party => Get(nameof(Tabs_Presets_Party));
+ internal static string Tabs_Presets_Beginner => Get(nameof(Tabs_Presets_Beginner));
+ internal static string Tabs_Presets_Linkshell => Get(nameof(Tabs_Presets_Linkshell));
+ internal static string Tabs_Presets_Linkshell_Hint => Get(nameof(Tabs_Presets_Linkshell_Hint));
}
diff --git a/ChatTwo/Resources/HellionStrings.de.resx b/ChatTwo/Resources/HellionStrings.de.resx
index 0ca1dbf..2aa6ac9 100644
--- a/ChatTwo/Resources/HellionStrings.de.resx
+++ b/ChatTwo/Resources/HellionStrings.de.resx
@@ -526,4 +526,21 @@
Changelog
+
+
+
+ Free Company
+
+
+ Gruppe
+
+
+ Neulinge
+
+
+ Linkshell
+
+
+ Wenn du mehrere Linkshells benutzt, empfiehlt der Maintainer einen Tab pro Shell für eine sauberere Übersicht. Tab duplizieren und je Kopie die Kanalauswahl einschränken.
+
diff --git a/ChatTwo/Resources/HellionStrings.resx b/ChatTwo/Resources/HellionStrings.resx
index 4fc908a..8fa8abd 100644
--- a/ChatTwo/Resources/HellionStrings.resx
+++ b/ChatTwo/Resources/HellionStrings.resx
@@ -526,4 +526,21 @@
Changelog
+
+
+
+ Free Company
+
+
+ Party
+
+
+ Beginner
+
+
+ Linkshell
+
+
+ If you use multiple linkshells, the maintainer recommends one tab per shell for cleaner readability. Duplicate this tab and narrow the channel selection per copy.
+
diff --git a/ChatTwo/Ui/SettingsTabs/Tabs.cs b/ChatTwo/Ui/SettingsTabs/Tabs.cs
index 5c84c8e..518644f 100755
--- a/ChatTwo/Ui/SettingsTabs/Tabs.cs
+++ b/ChatTwo/Ui/SettingsTabs/Tabs.cs
@@ -27,6 +27,9 @@ internal sealed class Tabs : ISettingsTab
{
const string addTabPopup = "add-tab-popup";
+ ImGuiUtil.HelpText(HellionStrings.Tabs_Presets_Linkshell_Hint);
+ ImGui.Spacing();
+
if (ImGuiUtil.IconButton(FontAwesomeIcon.Plus, tooltip: Language.Options_Tabs_Add))
ImGui.OpenPopup(addTabPopup);
diff --git a/ChatTwo/Util/TabsUtil.cs b/ChatTwo/Util/TabsUtil.cs
index 984d168..47d10ed 100755
--- a/ChatTwo/Util/TabsUtil.cs
+++ b/ChatTwo/Util/TabsUtil.cs
@@ -98,6 +98,75 @@ public static class TabsUtil
AllSenderMessages = true,
};
+ // Hellion default-tab presets used by the v10 wipe migration. Names are
+ // kept in HellionStrings (EN+DE) instead of Language.* so the upstream
+ // resource files stay untouched. Channel selections cover the channels
+ // a typical Eorzea raider uses without forcing the user to hand-tick
+ // each box on first start.
+ public static Tab HellionFreeCompany => new()
+ {
+ Name = HellionStrings.Tabs_Presets_FreeCompany,
+ SelectedChannels = new Dictionary
+ {
+ [ChatType.FreeCompany] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.FreeCompanyAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.FreeCompanyLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All),
+ },
+ Channel = InputChannel.FreeCompany,
+ };
+
+ public static Tab HellionParty => new()
+ {
+ Name = HellionStrings.Tabs_Presets_Party,
+ SelectedChannels = new Dictionary
+ {
+ [ChatType.Party] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossParty] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Alliance] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.PvpTeam] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.PvpTeamAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.PvpTeamLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.LootNotice] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.LootRoll] = (ChatSourceExt.All, ChatSourceExt.All),
+ },
+ Channel = InputChannel.Party,
+ };
+
+ public static Tab HellionBeginner => new()
+ {
+ Name = HellionStrings.Tabs_Presets_Beginner,
+ SelectedChannels = new Dictionary
+ {
+ [ChatType.NoviceNetwork] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.NoviceNetworkSystem] = (ChatSourceExt.All, ChatSourceExt.All),
+ },
+ Channel = InputChannel.NoviceNetwork,
+ };
+
+ public static Tab HellionLinkshell => new()
+ {
+ Name = HellionStrings.Tabs_Presets_Linkshell,
+ SelectedChannels = new Dictionary
+ {
+ [ChatType.Linkshell1] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell2] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell3] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell4] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell5] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell6] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell7] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.Linkshell8] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell1] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell2] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell3] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell4] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell5] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell6] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell7] = (ChatSourceExt.All, ChatSourceExt.All),
+ [ChatType.CrossLinkshell8] = (ChatSourceExt.All, ChatSourceExt.All),
+ },
+ };
+
public static Dictionary MostlyPlayer => new()
{
// Special