diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-01-17 13:39:59 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-01-17 13:39:59 +0200 |
commit | 4c73f86fc6cbdaaee90f9f8e40af36c1ab84c374 (patch) | |
tree | 63b42986ffccb3c0fdb3b978f3c78b56ca5a03a8 /lib/bookmarks/bookmarkformat.h | |
parent | Create default profile when the one set doesn't exist (diff) | |
parent | Parse Tags and Descriptions in FFJson (diff) | |
download | smolbote-4c73f86fc6cbdaaee90f9f8e40af36c1ab84c374.tar.xz |
Merge branch 'firefox-bookmarks-json-importer'
Diffstat (limited to 'lib/bookmarks/bookmarkformat.h')
-rw-r--r-- | lib/bookmarks/bookmarkformat.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/bookmarks/bookmarkformat.h b/lib/bookmarks/bookmarkformat.h new file mode 100644 index 0000000..c886546 --- /dev/null +++ b/lib/bookmarks/bookmarkformat.h @@ -0,0 +1,65 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#ifndef BOOKMARKFORMAT_H +#define BOOKMARKFORMAT_H + +#include "bookmarkmodel.h" + +class QIODevice; + +enum BookmarkFormats { + XbelFormat, + FirefoxJsonFormat +}; + +template<BookmarkFormats format> +class BookmarkFormat +{ +public: + explicit BookmarkFormat(QIODevice *device) + { + Q_CHECK_PTR(device); + m_device = device; + } + + void read(BookmarkItem *root) const; + void write(BookmarkItem *root); + +protected: + QIODevice *m_device; +}; + +template<BookmarkFormats T> +void operator<<(BookmarkModel *model, const BookmarkFormat<T> &format) +{ + format.read(model->root()); +} + +template<BookmarkFormats T> +void operator>>(const BookmarkFormat<T> &format, BookmarkModel *model) +{ + format.read(model->root()); +} + +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 // BOOKMARKSFORMAT_H + |