fix: Properly get auto backup file creation time
This commit is contained in:
parent
623e074ba0
commit
b84b82c416
@ -31,21 +31,35 @@ namespace hex::plugin::builtin::recent {
|
|||||||
|
|
||||||
|
|
||||||
class PopupAutoBackups : public Popup<PopupAutoBackups> {
|
class PopupAutoBackups : public Popup<PopupAutoBackups> {
|
||||||
|
private:
|
||||||
|
struct BackupEntry {
|
||||||
|
std::string displayName;
|
||||||
|
std::fs::path path;
|
||||||
|
};
|
||||||
public:
|
public:
|
||||||
PopupAutoBackups() : Popup("hex.builtin.welcome.start.recent.auto_backups"_lang, true, true) { }
|
PopupAutoBackups() : Popup("hex.builtin.welcome.start.recent.auto_backups"_lang, true, true) {
|
||||||
|
for (const auto &backupPath : fs::getDefaultPaths(fs::ImHexPath::Backups)) {
|
||||||
|
for (const auto &entry : std::fs::directory_iterator(backupPath)) {
|
||||||
|
if (entry.is_regular_file() && entry.path().extension() == ".hexproj") {
|
||||||
|
wolv::io::File backupFile(entry.path(), wolv::io::File::Mode::Read);
|
||||||
|
|
||||||
|
this->m_backups.emplace_back(
|
||||||
|
hex::format("hex.builtin.welcome.start.recent.auto_backups.backup"_lang, fmt::gmtime(backupFile.getFileInfo()->st_ctime)),
|
||||||
|
entry.path()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void drawContent() override {
|
void drawContent() override {
|
||||||
if (ImGui::BeginTable("AutoBackups", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersInnerV, ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 5))) {
|
if (ImGui::BeginTable("AutoBackups", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersInnerV, ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 5))) {
|
||||||
ImGui::TableNextRow();
|
for (const auto &backup : this->m_backups | std::views::reverse | std::views::take(10)) {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextRow();
|
||||||
for (const auto &backupPath : fs::getDefaultPaths(fs::ImHexPath::Backups)) {
|
ImGui::TableNextColumn();
|
||||||
for (const auto &entry : std::fs::directory_iterator(backupPath)) {
|
if (ImGui::Selectable(backup.displayName.c_str())) {
|
||||||
if (entry.is_regular_file() && entry.path().extension() == ".hexproj") {
|
ProjectFile::load(backup.path);
|
||||||
auto lastWriteTime = std::chrono::file_clock::to_sys(std::fs::last_write_time(entry.path()));
|
Popup::close();
|
||||||
if (ImGui::Selectable(hex::format("hex.builtin.welcome.start.recent.auto_backups.backup"_lang, fmt::gmtime(lastWriteTime)).c_str(), false, ImGuiSelectableFlags_DontClosePopups)) {
|
|
||||||
ProjectFile::load(entry.path());
|
|
||||||
Popup::close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +70,9 @@ namespace hex::plugin::builtin::recent {
|
|||||||
[[nodiscard]] ImGuiWindowFlags getFlags() const override {
|
[[nodiscard]] ImGuiWindowFlags getFlags() const override {
|
||||||
return ImGuiWindowFlags_AlwaysAutoResize;
|
return ImGuiWindowFlags_AlwaysAutoResize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<BackupEntry> m_backups;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user