summaryrefslogtreecommitdiff
path: root/filemetadata.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-08-25 20:42:33 -0400
committerRusty Wagner <rusty@vector35.com>2016-08-25 20:42:33 -0400
commite878199be4a74c880acd5d38c33965b47d7630d0 (patch)
treee75461ca2e6404dc62d1584eef5a870efc682114 /filemetadata.cpp
parentc3693b77c1fa9c1b5c45483045eeab929cf7bd16 (diff)
Adding APIs for database save/load progress and constant references
Diffstat (limited to 'filemetadata.cpp')
-rw-r--r--filemetadata.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/filemetadata.cpp b/filemetadata.cpp
index 51e152bf..b3764167 100644
--- a/filemetadata.cpp
+++ b/filemetadata.cpp
@@ -25,6 +25,19 @@ using namespace Json;
using namespace std;
+struct DatabaseProgressCallbackContext
+{
+ std::function<void(size_t, size_t)> func;
+};
+
+
+static void DatabaseProgressCallback(void* ctxt, size_t progress, size_t total)
+{
+ DatabaseProgressCallbackContext* cb = (DatabaseProgressCallbackContext*)ctxt;
+ cb->func(progress, total);
+}
+
+
char* NavigationHandler::GetCurrentViewCallback(void* ctxt)
{
NavigationHandler* handler = (NavigationHandler*)ctxt;
@@ -246,6 +259,15 @@ bool FileMetadata::CreateDatabase(const string& name, BinaryView* data)
}
+bool FileMetadata::CreateDatabase(const string& name, BinaryView* data,
+ const function<void(size_t progress, size_t total)>& progressCallback)
+{
+ DatabaseProgressCallbackContext cb;
+ cb.func = progressCallback;
+ return BNCreateDatabaseWithProgress(data->GetObject(), name.c_str(), &cb, DatabaseProgressCallback);
+}
+
+
Ref<BinaryView> FileMetadata::OpenExistingDatabase(const string& path)
{
BNBinaryView* data = BNOpenExistingDatabase(m_object, path.c_str());
@@ -255,12 +277,33 @@ Ref<BinaryView> FileMetadata::OpenExistingDatabase(const string& path)
}
+Ref<BinaryView> FileMetadata::OpenExistingDatabase(const string& path,
+ const function<void(size_t progress, size_t total)>& progressCallback)
+{
+ DatabaseProgressCallbackContext cb;
+ cb.func = progressCallback;
+ BNBinaryView* data = BNOpenExistingDatabaseWithProgress(m_object, path.c_str(), &cb, DatabaseProgressCallback);
+ if (!data)
+ return nullptr;
+ return new BinaryView(data);
+}
+
+
bool FileMetadata::SaveAutoSnapshot(BinaryView* data)
{
return BNSaveAutoSnapshot(data->GetObject());
}
+bool FileMetadata::SaveAutoSnapshot(BinaryView* data,
+ const function<void(size_t progress, size_t total)>& progressCallback)
+{
+ DatabaseProgressCallbackContext cb;
+ cb.func = progressCallback;
+ return BNSaveAutoSnapshotWithProgress(data->GetObject(), &cb, DatabaseProgressCallback);
+}
+
+
void FileMetadata::BeginUndoActions()
{
BNBeginUndoActions(m_object);