summaryrefslogtreecommitdiff
path: root/filemetadata.cpp
diff options
context:
space:
mode:
authorJosh F <josh@vector35.com>2022-07-21 16:30:49 -0400
committerJosh F <josh@vector35.com>2022-07-21 16:30:49 -0400
commitbd79cde9742b0fa7b5f38f7b820180f57ba2f55e (patch)
tree49340453f264ce4baceb0b2d462381ecb1d0cc58 /filemetadata.cpp
parent2fbd5289025ef1263c40b72f68de1e7bbe7e5fc5 (diff)
Add FileMetadata::GetLast{Undo,Redo}Entry, add valid field to BNUndoEntry
Diffstat (limited to 'filemetadata.cpp')
-rw-r--r--filemetadata.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/filemetadata.cpp b/filemetadata.cpp
index 9d9b2a3a..5d01c3b0 100644
--- a/filemetadata.cpp
+++ b/filemetadata.cpp
@@ -364,6 +364,8 @@ vector<UndoEntry> FileMetadata::GetUndoEntries()
result.reserve(numEntries);
for (size_t i = 0; i < numEntries; i++)
{
+ if (!entries[i].valid)
+ continue;
UndoEntry temp;
temp.timestamp = entries[i].timestamp;
temp.hash = entries[i].hash;
@@ -390,6 +392,8 @@ vector<UndoEntry> FileMetadata::GetRedoEntries()
result.reserve(numEntries);
for (size_t i = 0; i < numEntries; i++)
{
+ if (!entries[i].valid)
+ continue;
UndoEntry temp;
temp.timestamp = entries[i].timestamp;
temp.hash = entries[i].hash;
@@ -407,6 +411,48 @@ vector<UndoEntry> FileMetadata::GetRedoEntries()
}
+std::optional<UndoEntry> FileMetadata::GetLastUndoEntry()
+{
+ BNUndoEntry bnEntry = BNGetLastUndoEntry(m_object);
+
+ if (!bnEntry.valid)
+ return {};
+
+ UndoEntry entry;
+ entry.timestamp = bnEntry.timestamp;
+ entry.hash = bnEntry.hash;
+ entry.user = new User(BNNewUserReference(bnEntry.user));
+ size_t actionCount = bnEntry.actionCount;
+ for (size_t actionIndex = 0; actionIndex < actionCount; actionIndex++)
+ {
+ entry.actions.emplace_back(bnEntry.actions[actionIndex]);
+ }
+
+ return entry;
+}
+
+
+std::optional<UndoEntry> FileMetadata::GetLastRedoEntry()
+{
+ BNUndoEntry bnEntry = BNGetLastRedoEntry(m_object);
+
+ if (!bnEntry.valid)
+ return {};
+
+ UndoEntry entry;
+ entry.timestamp = bnEntry.timestamp;
+ entry.hash = bnEntry.hash;
+ entry.user = new User(BNNewUserReference(bnEntry.user));
+ size_t actionCount = bnEntry.actionCount;
+ for (size_t actionIndex = 0; actionIndex < actionCount; actionIndex++)
+ {
+ entry.actions.emplace_back(bnEntry.actions[actionIndex]);
+ }
+
+ return entry;
+}
+
+
void FileMetadata::ClearUndoEntries()
{
BNClearUndoEntries(m_object);