diff options
Diffstat (limited to 'lib/bookmarks/model/bookmarkmodel.h')
-rw-r--r-- | lib/bookmarks/model/bookmarkmodel.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/bookmarks/model/bookmarkmodel.h b/lib/bookmarks/model/bookmarkmodel.h new file mode 100644 index 0000000..4da2f9c --- /dev/null +++ b/lib/bookmarks/model/bookmarkmodel.h @@ -0,0 +1,61 @@ +/* + * 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 SMOLBOTE_BOOKMARKMODEL_H +#define SMOLBOTE_BOOKMARKMODEL_H + +#include "bookmarkitem.h" +#include <QAbstractItemModel> + +class BookmarkModel : public QAbstractItemModel +{ + Q_OBJECT + +public: + explicit BookmarkModel(QObject *parent = nullptr); + ~BookmarkModel() override; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + QVariant data(const QModelIndex &index, int role) const override; + QVariant data(const QModelIndex &index, int column, int role) const; + bool setData(const QModelIndex &index, const QVariant &value, int role) override; + bool setData(const QModelIndex &index, const QVariant &value, BookmarkItem::Fields column, int role); + Qt::ItemFlags flags(const QModelIndex &index) const override; + + bool isItemExpanded(const QModelIndex &index) const; + + int rowCount(const QModelIndex &index) const override; + QModelIndex appendBookmark(const QString &title, const QString &url, const QModelIndex &parent); + QModelIndex appendFolder(const QString &title, const QModelIndex &parent); + bool removeRows(int position, int rows, const QModelIndex &parent) override; + int columnCount(const QModelIndex &index) const override; + + Qt::DropActions supportedDropActions() const override; + QStringList mimeTypes() const override; + QMimeData *mimeData(const QModelIndexList &indexes) const override; + bool dropMimeData(const QMimeData *mimeData, Qt::DropAction action, int row, int column, const QModelIndex &parent) override; + + QModelIndex index(int row, int column, const QModelIndex &parent) const override; + QModelIndex parent(const QModelIndex &index) const override; + QModelIndex parentFolder(const QModelIndex &index) const; + + BookmarkItem *root() + { + return rootItem; + } + + QStringList search(const QString &term) const; + +private: + const QLatin1Literal mimeType = QLatin1Literal("application/xbel"); + + BookmarkItem *getItem(const QModelIndex &index) const; + BookmarkItem *rootItem; +}; + +#endif // SMOLBOTE_BOOKMARKMODEL_H |