aboutsummaryrefslogtreecommitdiffstats
path: root/src/sdk/GFSDKUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdk/GFSDKUI.cpp')
-rw-r--r--src/sdk/GFSDKUI.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/sdk/GFSDKUI.cpp b/src/sdk/GFSDKUI.cpp
index 63859763..2222fca2 100644
--- a/src/sdk/GFSDKUI.cpp
+++ b/src/sdk/GFSDKUI.cpp
@@ -24,4 +24,41 @@
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
- */ \ No newline at end of file
+ */
+
+#include "GFSDKUI.h"
+
+#include <core/utils/CommonUtils.h>
+
+#include <QMap>
+#include <QString>
+
+#include "sdk/private/CommonUtils.h"
+#include "ui/UIModuleManager.h"
+
+auto MetaDataArrayToQMap(MetaData** meta_data_array, int size)
+ -> QMap<QString, QString> {
+ QMap<QString, QString> map;
+
+ for (int i = 0; i < size; ++i) {
+ QString const key = GFUnStrDup(meta_data_array[i]->key);
+ QString const value = GFUnStrDup(meta_data_array[i]->value);
+ map.insert(key, value);
+
+ GpgFrontend::SecureFree(meta_data_array[i]);
+ }
+
+ GpgFrontend::SecureFree(meta_data_array);
+ return map;
+}
+
+auto GFUIMountEntry(const char* id, MetaData** meta_data_array,
+ int meta_data_array_size, EntryFactory factory) -> int {
+ if (id == nullptr || factory == nullptr) return -1;
+
+ auto meta_data = MetaDataArrayToQMap(meta_data_array, meta_data_array_size);
+ return GpgFrontend::UI::UIModuleManager::GetInstance().MountEntry(
+ GFUnStrDup(id), meta_data, factory)
+ ? 0
+ : -1;
+}