Warning, file /graphics/glaxnimate/src/gui/item_models/document_model_base.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 0010 #include <QAbstractItemModel> 0011 0012 #include "model/document.hpp" 0013 #include "model/shapes/shape.hpp" 0014 0015 namespace glaxnimate::gui::item_models { 0016 0017 class ProxyBase; 0018 0019 class DocumentModelBase : public QAbstractItemModel 0020 { 0021 public: 0022 using QAbstractItemModel::QAbstractItemModel; 0023 0024 QStringList mimeTypes() const override; 0025 QMimeData *mimeData(const QModelIndexList &indexes) const override; 0026 Qt::DropActions supportedDropActions() const override; 0027 bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override; 0028 bool canDropMimeData(const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent) const override; 0029 0030 virtual model::DocumentNode* node(const QModelIndex& index) const = 0; 0031 virtual model::VisualNode* visual_node(const QModelIndex& index) const = 0; 0032 virtual QModelIndex node_index(model::DocumentNode* node) const = 0; 0033 virtual model::Document* document() const = 0; 0034 0035 protected: 0036 /** 0037 * \brief Returns the document node corresponding to \p parent and the insertion point for drop data 0038 */ 0039 virtual std::pair<model::VisualNode*, int> drop_position(const QModelIndex &parent, int row, int column) const; 0040 0041 /** 0042 * \brief Returns drop_position() if the data is well formed 0043 */ 0044 std::tuple<model::VisualNode *, int, model::ShapeListProperty*> 0045 cleaned_drop_position(const QMimeData *data, Qt::DropAction action, const QModelIndex &parent, int row, int column) const; 0046 0047 private: 0048 friend class ProxyBase; 0049 }; 0050 0051 0052 } // namespace glaxnimate::gui::item_models 0053