feat(tabs): seed default tab layout on first run and v10 wipe
Spawn six themed tabs out of the box instead of one General catch-all: General (everything), Free Company (FC chat plus FC announcements and login/logout), Party (Party, CrossParty, Alliance, PvP team plus loot rolls), Beginner (Novice Network only when ShowNoviceNetwork is on), Linkshell (all eight regular and cross-world linkshells together) and Tell Exclusive (TellIncoming/TellOutgoing as a safety-net catch-all in case Auto-Tell-Tabs misses one). Tab names live in HellionStrings (EN/DE). The Tabs settings tab gains a help-text hint above the list recommending one tab per linkshell when the user is in multiple, since a single combined Linkshell tab gets noisy fast for active users.
This commit is contained in:
@@ -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)
|
if (Config.Tabs.Count == 0)
|
||||||
{
|
{
|
||||||
Config.Tabs.Add(TabsUtil.VanillaGeneral);
|
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);
|
LanguageChanged(Interface.UiLanguage);
|
||||||
|
|||||||
+7
@@ -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_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_About_Heading => Get(nameof(Settings_Information_About_Heading));
|
||||||
internal static string Settings_Information_Changelog_Heading => Get(nameof(Settings_Information_Changelog_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));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -526,4 +526,21 @@
|
|||||||
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
|
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
|
||||||
<value>Changelog</value>
|
<value>Changelog</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
|
<!-- Hellion Chat — Default-Tab-Presets (kanalspezifisch) -->
|
||||||
|
<data name="Tabs_Presets_FreeCompany" xml:space="preserve">
|
||||||
|
<value>Free Company</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Party" xml:space="preserve">
|
||||||
|
<value>Gruppe</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Beginner" xml:space="preserve">
|
||||||
|
<value>Neulinge</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Linkshell" xml:space="preserve">
|
||||||
|
<value>Linkshell</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Linkshell_Hint" xml:space="preserve">
|
||||||
|
<value>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.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -526,4 +526,21 @@
|
|||||||
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
|
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
|
||||||
<value>Changelog</value>
|
<value>Changelog</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
|
<!-- Hellion Chat — Default tab presets (channel-themed) -->
|
||||||
|
<data name="Tabs_Presets_FreeCompany" xml:space="preserve">
|
||||||
|
<value>Free Company</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Party" xml:space="preserve">
|
||||||
|
<value>Party</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Beginner" xml:space="preserve">
|
||||||
|
<value>Beginner</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Linkshell" xml:space="preserve">
|
||||||
|
<value>Linkshell</value>
|
||||||
|
</data>
|
||||||
|
<data name="Tabs_Presets_Linkshell_Hint" xml:space="preserve">
|
||||||
|
<value>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.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ internal sealed class Tabs : ISettingsTab
|
|||||||
{
|
{
|
||||||
const string addTabPopup = "add-tab-popup";
|
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))
|
if (ImGuiUtil.IconButton(FontAwesomeIcon.Plus, tooltip: Language.Options_Tabs_Add))
|
||||||
ImGui.OpenPopup(addTabPopup);
|
ImGui.OpenPopup(addTabPopup);
|
||||||
|
|
||||||
|
|||||||
@@ -98,6 +98,75 @@ public static class TabsUtil
|
|||||||
AllSenderMessages = true,
|
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, (ChatSource, ChatSource)>
|
||||||
|
{
|
||||||
|
[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, (ChatSource, ChatSource)>
|
||||||
|
{
|
||||||
|
[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, (ChatSource, ChatSource)>
|
||||||
|
{
|
||||||
|
[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, (ChatSource, ChatSource)>
|
||||||
|
{
|
||||||
|
[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<ChatType, (ChatSource, ChatSource)> MostlyPlayer => new()
|
public static Dictionary<ChatType, (ChatSource, ChatSource)> MostlyPlayer => new()
|
||||||
{
|
{
|
||||||
// Special
|
// Special
|
||||||
|
|||||||
Reference in New Issue
Block a user