/* ============================================================ * rekonq * ============================================================ * SPDX-License-Identifier: GPL-3.0-only * Copyright (C) 2022 aqua * ============================================================ * Description: rekonq bookmarks model * ============================================================ */ #pragma once #include "bookmarkstreeitem.hpp" #include class QFile; class BookmarksTreeModel final : public QAbstractItemModel { Q_OBJECT public: enum Roles { CompletionMatchingRole = Qt::UserRole + 1 }; explicit BookmarksTreeModel(QObject *parent = nullptr); ~BookmarksTreeModel() final; [[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role) const override; [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override; bool setData(const QModelIndex &index, const QVariant &value, int role) override; [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override; [[nodiscard]] int rowCount(const QModelIndex &index) const override; bool removeRows(int position, int rows, const QModelIndex &parent) override; [[nodiscard]] int columnCount(const QModelIndex &) const override { return 2; } [[nodiscard]] Qt::DropActions supportedDropActions() const override { return Qt::MoveAction; } [[nodiscard]] QStringList mimeTypes() const override { return {mimeType}; } [[nodiscard]] QMimeData *mimeData(const QModelIndexList &indexes) const override; bool dropMimeData(const QMimeData *mimeData, Qt::DropAction action, int row, int column, const QModelIndex &parent) override; [[nodiscard]] QModelIndex index(int row, int column, const QModelIndex &parent) const override; [[nodiscard]] QModelIndex parent(const QModelIndex &index) const override; [[nodiscard]] QModelIndex parentFolder(const QModelIndex &index) const; [[nodiscard]] BookmarksTreeItem *item(const QModelIndex &index = QModelIndex()) const; QModelIndex appendItem(BookmarksTreeItem::Types type, BookmarksTreeItem::Attributes_t data, const QModelIndex &parent); public slots: QList load(QIODevice *buffer); void save(QIODevice *buffer); private: const QLatin1String mimeType = QLatin1String("application/xbel"); BookmarksTreeItem *rootItem; bool m_isModified = false; };