summaryrefslogtreecommitdiff
path: root/src/bookmarks/bookmarkstreeformat_xbel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/bookmarkstreeformat_xbel.h')
-rw-r--r--src/bookmarks/bookmarkstreeformat_xbel.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/bookmarks/bookmarkstreeformat_xbel.h b/src/bookmarks/bookmarkstreeformat_xbel.h
new file mode 100644
index 00000000..c156eb24
--- /dev/null
+++ b/src/bookmarks/bookmarkstreeformat_xbel.h
@@ -0,0 +1,67 @@
+/* ============================================================
+ * rekonq
+ * ============================================================
+ * SPDX-License-Identifier: GPL-3.0-only
+ * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net>
+ * ============================================================
+ * Description: rekonq bookmarks model
+ * ============================================================ */
+
+#pragma once
+
+#include <QVector>
+
+class QIODevice;
+class BookmarksTreeItem;
+
+namespace xbel {
+/**
+ * Parse an XBEL-formatted BookmarkItem tree
+ * @param device QIODEvice pointer to read from
+ * @param root BookmarkItem tree root pointer
+ * @return true if parsing was successful, false if errors occurred
+ */
+[[nodiscard]] bool read(QIODevice *device, BookmarksTreeItem *root);
+
+/**
+ * Write items into device
+ * @param device
+ * @param items
+ * @return true on success
+ */
+[[nodiscard]] bool write(QIODevice *device, const QVector<const BookmarksTreeItem *> &items);
+
+// 3.2 Top-level Information
+constexpr auto *elem_xbel{"xbel"};
+constexpr auto *attr_version{"version"};
+constexpr auto *attr_version_value{"1.0"};
+
+// 3.3 Common Elements
+static const QLatin1String elem_title{"title"};
+static const QLatin1String elem_desc{"desc"};
+static const QLatin1String elem_info{"info"};
+static const QLatin1String elem_metadata{"metadata"};
+static const QLatin1String elem_metadata_owner{"owner"};
+static const QLatin1String elem_metadata_owner_value{"rekonq"};
+
+// 3.4 Data Organization
+static const QLatin1String elem_bookmark{"bookmark"};
+static const QLatin1String elem_folder{"folder"};
+static const QLatin1String elem_separator{"separator"};
+static const QLatin1String elem_alias{"alias"};
+
+// node attributes
+constexpr auto *attr_id{"id"};
+constexpr auto *attr_added{"added"};
+
+// url attributes
+constexpr auto *attr_href{"href"};
+constexpr auto *attr_visited{"visited"};
+constexpr auto *attr_modified{"modified"};
+
+constexpr auto *attr_ref{"ref"};
+constexpr auto *attr_folded{"folded"};
+constexpr auto *attr_folded_yes{"yes"};
+constexpr auto *attr_folded_no{"no"};
+
+} // namespace xbel