aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarkmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bookmarks/bookmarkmodel.h')
-rw-r--r--lib/bookmarks/bookmarkmodel.h34
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/bookmarks/bookmarkmodel.h b/lib/bookmarks/bookmarkmodel.h
index 300b724..1ddab1e 100644
--- a/lib/bookmarks/bookmarkmodel.h
+++ b/lib/bookmarks/bookmarkmodel.h
@@ -9,6 +9,7 @@
#ifndef SMOLBOTE_BOOKMARKMODEL_H
#define SMOLBOTE_BOOKMARKMODEL_H
+#include "bookmarkformat.h"
#include "bookmarkitem.h"
#include <QAbstractItemModel>
@@ -16,6 +17,11 @@ class BookmarkModel : public QAbstractItemModel
{
Q_OBJECT
+ template <BookmarkFormats T>
+ friend void operator<<(BookmarkModel *model, const BookmarkFormat<T> &format);
+ template <BookmarkFormats T>
+ friend void operator>>(const BookmarkFormat<T> &format, BookmarkModel *model);
+
public:
explicit BookmarkModel(QObject *parent = nullptr);
~BookmarkModel() override;
@@ -45,7 +51,7 @@ public:
QModelIndex parent(const QModelIndex &index) const override;
QModelIndex parentFolder(const QModelIndex &index) const;
- BookmarkItem *root()
+ const BookmarkItem *root() const
{
return rootItem;
}
@@ -70,4 +76,30 @@ private:
bool m_isModified = false;
};
+template <BookmarkFormats T>
+void operator<<(BookmarkModel *model, const BookmarkFormat<T> &format)
+{
+ format.read(model->rootItem);
+}
+
+template <BookmarkFormats T>
+void operator>>(const BookmarkFormat<T> &format, BookmarkModel *model)
+{
+ format.read(model->rootItem);
+}
+
+template <BookmarkFormats T>
+void operator<<(BookmarkFormat<T> &format, BookmarkModel *model)
+{
+ format.write(model->root());
+ model->resetModified();
+}
+
+template <BookmarkFormats T>
+void operator>>(BookmarkModel *model, BookmarkFormat<T> &format)
+{
+ format.write(model->root());
+ model->resetModified();
+}
+
#endif // SMOLBOTE_BOOKMARKMODEL_H