feat: add other category to report modal
This commit is contained in:
parent
e3e6cf2d90
commit
c5879c82f3
|
@ -207,6 +207,7 @@ namespace NoSoliciting.Interface {
|
|||
#region Modal
|
||||
|
||||
private MessageCategory? _reportCategory;
|
||||
private bool _other;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
|
@ -223,7 +224,7 @@ namespace NoSoliciting.Interface {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (this._reportCategory == null) {
|
||||
if (this._reportCategory == null && !this._other) {
|
||||
if (message.Classification != null) {
|
||||
this._reportCategory = message.Classification;
|
||||
} else if (message.Classification == null && !message.Custom && !message.ItemLevel) {
|
||||
|
@ -246,23 +247,24 @@ namespace NoSoliciting.Interface {
|
|||
ImGui.TextUnformatted(Language.ReportModalSuggestedClassification);
|
||||
|
||||
ImGui.SetNextItemWidth(-1);
|
||||
if (ImGui.BeginCombo($"##modal-classification-{message.Id}", this._reportCategory?.Name() ?? string.Empty)) {
|
||||
var preview = this._reportCategory?.Name() ?? (this._other ? Language.ReportModalClassificationOther : string.Empty);
|
||||
if (ImGui.BeginCombo($"##modal-classification-{message.Id}", preview)) {
|
||||
foreach (var category in (MessageCategory[]) Enum.GetValues(typeof(MessageCategory))) {
|
||||
if (ImGui.Selectable($"{category.Name()}##modal-option-{message.Id}", this._reportCategory == category)) {
|
||||
this._reportCategory = category;
|
||||
this._other = false;
|
||||
}
|
||||
|
||||
if (!ImGui.IsItemHovered()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ImGui.BeginTooltip();
|
||||
ImGui.PushTextWrapPos(ImGui.GetFontSize() * 24);
|
||||
ImGui.TextUnformatted(category.Description());
|
||||
ImGui.PopTextWrapPos();
|
||||
ImGui.EndTooltip();
|
||||
WrappedTooltip(category.Description());
|
||||
}
|
||||
|
||||
if (ImGui.Selectable(Language.ReportModalClassificationOther)) {
|
||||
this._reportCategory = null;
|
||||
this._other = true;
|
||||
}
|
||||
|
||||
WrappedTooltip(Language.ReportModalClassificationOtherDescription);
|
||||
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
|
||||
|
@ -287,7 +289,20 @@ namespace NoSoliciting.Interface {
|
|||
errorText = Language.ReportModalDisabledSameClassification;
|
||||
}
|
||||
|
||||
if (errorText != null) {
|
||||
if (this._other) {
|
||||
if (ImGui.Button($"{Language.ReportModalGoToCustomButton}##report-goto-custom-{message.Id}")) {
|
||||
ImGui.CloseCurrentPopup();
|
||||
closing = true;
|
||||
if (message == this.ToShowModal) {
|
||||
this.ToShowModal = null;
|
||||
}
|
||||
|
||||
this.Plugin.Ui.Settings.ShowOtherFilters = true;
|
||||
this.Plugin.Ui.Settings.Show();
|
||||
}
|
||||
|
||||
ImGui.SameLine();
|
||||
} else if (errorText != null) {
|
||||
ImGui.PushStyleColor(ImGuiCol.Text, new Vector4(1f, 0f, 0f, 1f));
|
||||
ImGui.TextUnformatted(errorText);
|
||||
ImGui.PopStyleColor();
|
||||
|
@ -351,6 +366,10 @@ namespace NoSoliciting.Interface {
|
|||
|
||||
ImGui.EndPopup();
|
||||
|
||||
if (closing) {
|
||||
this._other = false;
|
||||
}
|
||||
|
||||
return closing;
|
||||
}
|
||||
|
||||
|
@ -383,6 +402,18 @@ namespace NoSoliciting.Interface {
|
|||
return clicked;
|
||||
}
|
||||
|
||||
private static void WrappedTooltip(string text) {
|
||||
if (!ImGui.IsItemHovered()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ImGui.BeginTooltip();
|
||||
ImGui.PushTextWrapPos(ImGui.GetFontSize() * 24);
|
||||
ImGui.TextUnformatted(text);
|
||||
ImGui.PopTextWrapPos();
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
|
||||
private void ReportMessage(Message message, string suggested) {
|
||||
Task.Run(async () => await this.ReportMessageAsync(message, suggested));
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Dalamud.Interface;
|
||||
using ImGuiNET;
|
||||
|
@ -38,6 +39,10 @@ namespace NoSoliciting.Interface {
|
|||
this.ShowSettings = !this.ShowSettings;
|
||||
}
|
||||
|
||||
public void Show() {
|
||||
this.ShowSettings = true;
|
||||
}
|
||||
|
||||
public void Draw() {
|
||||
var windowTitle = string.Format(Language.Settings, this.Plugin.Name);
|
||||
if (!this.ShowSettings || !ImGui.Begin($"{windowTitle}###NoSoliciting settings", ref this._showSettings)) {
|
||||
|
@ -189,8 +194,26 @@ namespace NoSoliciting.Interface {
|
|||
|
||||
#region Other config
|
||||
|
||||
internal bool ShowOtherFilters;
|
||||
|
||||
private static unsafe bool BeginTabItem(string label, ImGuiTabItemFlags flags) {
|
||||
var unterminatedLabelBytes = Encoding.UTF8.GetBytes(label);
|
||||
var labelBytes = stackalloc byte[unterminatedLabelBytes.Length + 1];
|
||||
fixed (byte* unterminatedPtr = unterminatedLabelBytes) {
|
||||
Buffer.MemoryCopy(unterminatedPtr, labelBytes, unterminatedLabelBytes.Length + 1, unterminatedLabelBytes.Length);
|
||||
}
|
||||
|
||||
labelBytes[unterminatedLabelBytes.Length] = 0;
|
||||
|
||||
var num2 = (int) ImGuiNative.igBeginTabItem(labelBytes, null, flags);
|
||||
return (uint) num2 > 0U;
|
||||
}
|
||||
|
||||
private void DrawOtherFilters() {
|
||||
if (!ImGui.BeginTabItem($"{Language.OtherFiltersTab}###other-filters-tab")) {
|
||||
var flags = this.ShowOtherFilters ? ImGuiTabItemFlags.SetSelected : ImGuiTabItemFlags.None;
|
||||
this.ShowOtherFilters = false;
|
||||
|
||||
if (!BeginTabItem($"{Language.OtherFiltersTab}###other-filters-tab", flags)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<Nullable>enable</Nullable>
|
||||
<Version>2.1.0</Version>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -465,6 +465,24 @@ namespace NoSoliciting.Resources {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Other.
|
||||
/// </summary>
|
||||
internal static string ReportModalClassificationOther {
|
||||
get {
|
||||
return ResourceManager.GetString("ReportModalClassificationOther", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Messages that don't fall under any of the other categories..
|
||||
/// </summary>
|
||||
internal static string ReportModalClassificationOtherDescription {
|
||||
get {
|
||||
return ResourceManager.GetString("ReportModalClassificationOtherDescription", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Copy to clipboard.
|
||||
/// </summary>
|
||||
|
@ -519,6 +537,15 @@ namespace NoSoliciting.Resources {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Go to custom filters.
|
||||
/// </summary>
|
||||
internal static string ReportModalGoToCustomButton {
|
||||
get {
|
||||
return ResourceManager.GetString("ReportModalGoToCustomButton", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Reporting this message will let the developer know that you think this message was incorrectly classified..
|
||||
/// </summary>
|
||||
|
|
|
@ -267,4 +267,13 @@
|
|||
<data name="ReportModalDisabledFilterNotEnabled" xml:space="preserve">
|
||||
<value>Reporting is disabled because you weren't filtering for this kind of message at the time you saw it.</value>
|
||||
</data>
|
||||
<data name="ReportModalClassificationOther" xml:space="preserve">
|
||||
<value>Other</value>
|
||||
</data>
|
||||
<data name="ReportModalGoToCustomButton" xml:space="preserve">
|
||||
<value>Go to custom filters</value>
|
||||
</data>
|
||||
<data name="ReportModalClassificationOtherDescription" xml:space="preserve">
|
||||
<value>Messages that don't fall under any of the other categories.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
Loading…
Reference in New Issue