diff options
Diffstat (limited to 'lib/bookmarks/bookmarkmodel.h')
-rw-r--r-- | lib/bookmarks/bookmarkmodel.h | 34 |
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 |