73 lines
2.5 KiB
C#
73 lines
2.5 KiB
C#
using ImGuiNET;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Screenie.Ui.Tabs;
|
|
|
|
internal class DatabaseTab : ITab {
|
|
public string Label => "Database";
|
|
|
|
private Plugin Plugin { get; }
|
|
private List<SavedMetadata> Screenshots { get; } = [];
|
|
|
|
internal DatabaseTab(Plugin plugin) {
|
|
this.Plugin = plugin;
|
|
|
|
this.Update();
|
|
}
|
|
|
|
public void Dispose() {
|
|
}
|
|
|
|
public void Draw() {
|
|
if (ImGui.Button("update")) {
|
|
this.Update();
|
|
}
|
|
|
|
foreach (var meta in this.Screenshots) {
|
|
ImGui.TextUnformatted(meta.Path);
|
|
}
|
|
}
|
|
|
|
private void Update() {
|
|
using var reader = this.Plugin.Database.Query(
|
|
"""
|
|
select * from screenshots order by captured_at_utc desc
|
|
"""
|
|
);
|
|
|
|
this.Screenshots.Clear();
|
|
while (reader.Read()) {
|
|
var meta = new SavedMetadata {
|
|
Blake3Hash = reader.GetFieldValue<string>(0),
|
|
Path = reader.GetFieldValue<string>(1),
|
|
Metadata = new ScreenshotMetadata {
|
|
ActiveCharacter = JsonConvert.DeserializeObject<Character>(
|
|
reader.GetFieldValue<string>(2)
|
|
),
|
|
Location = reader.GetFieldValue<string?>(3),
|
|
LocationSub = reader.GetFieldValue<string?>(4),
|
|
Area = reader.GetFieldValue<string?>(5),
|
|
AreaSub = reader.GetFieldValue<string?>(6),
|
|
TerritoryType = (uint) reader.GetFieldValue<long>(7),
|
|
World = reader.GetFieldValue<string?>(8),
|
|
WorldId = (uint) reader.GetFieldValue<long>(9),
|
|
CapturedAtLocal = reader.GetFieldValue<DateTime>(10),
|
|
CapturedAtUtc = reader.GetFieldValue<DateTime>(11),
|
|
EorzeaTime = reader.GetFieldValue<string>(12),
|
|
Weather = reader.GetFieldValue<string?>(13),
|
|
Ward = (uint?) reader.GetFieldValue<long?>(14),
|
|
Plot = (uint?) reader.GetFieldValue<long?>(15),
|
|
VisibleCharacters = JsonConvert.DeserializeObject<Character[]>(
|
|
reader.GetFieldValue<string>(16)
|
|
) ?? [],
|
|
ModsInUse = JsonConvert.DeserializeObject<PenumbraMod[]>(
|
|
reader.GetFieldValue<string>(17)
|
|
) ?? [],
|
|
},
|
|
};
|
|
|
|
this.Screenshots.Add(meta);
|
|
}
|
|
}
|
|
}
|