Dalamud/Dalamud/Interface/ImGuiFileDialog/FileDialog.Structs.cs
goat 448b0d16ea
Add "loading dialog" for service init, unify blocking logic (#1779)
* wip

* hacky fix for overlapping event text in profiler

* move IsResumeGameAfterPluginLoad logic to PluginManager

* fix some warnings

* handle exceptions properly

* remove ability to cancel, rename button to "hide" instead

* undo Dalamud.Service refactor for now

* warnings

* add explainer, show which plugins are still loading

* add some text if loading takes more than 3 minutes

* undo wrong CS merge
2024-04-21 17:28:37 +02:00

72 lines
1.9 KiB
C#

using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using Dalamud.Utility;
namespace Dalamud.Interface.ImGuiFileDialog;
/// <summary>
/// A file or folder picker.
/// </summary>
public partial class FileDialog
{
private struct FileStruct
{
public FileStructType Type;
public string FilePath;
public string FileName;
public string Ext;
public long FileSize;
public string FormattedFileSize;
public string FileModifiedDate;
}
private readonly struct SideBarItem
{
public SideBarItem(string text, string location, FontAwesomeIcon icon)
{
this.Text = text;
this.Location = location;
this.Icon = icon;
}
public string Text { get; init; }
public string Location { get; init; }
public FontAwesomeIcon Icon { get; init; }
public bool CheckExistence()
=> !this.Location.IsNullOrEmpty() && Directory.Exists(this.Location);
}
private struct FilterStruct
{
public string Filter;
public HashSet<string> CollectionFilters;
public void Clear()
{
this.Filter = string.Empty;
this.CollectionFilters.Clear();
}
public bool Empty()
{
return string.IsNullOrEmpty(this.Filter) && (this.CollectionFilters == null || (this.CollectionFilters.Count == 0));
}
public bool FilterExists(string filter)
{
return this.Filter.Equals(filter, StringComparison.InvariantCultureIgnoreCase) || (this.CollectionFilters != null && this.CollectionFilters.Any(colFilter => colFilter.Equals(filter, StringComparison.InvariantCultureIgnoreCase)));
}
}
private struct IconColorItem
{
public FontAwesomeIcon Icon;
public Vector4 Color;
}
}