Warning, file /graphics/glaxnimate/src/gui/item_models/document_node_model.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 "document_model_base.hpp"
0011 
0012 namespace glaxnimate::gui::item_models {
0013 
0014 
0015 class DocumentNodeModel : public DocumentModelBase
0016 {
0017 public:
0018     enum ColumnTypes
0019     {
0020         ColumnColor = 0,
0021         ColumnName,
0022         ColumnVisible,
0023         ColumnLocked,
0024         ColumnUsers,
0025 
0026         ColumnCount
0027     };
0028 
0029     explicit DocumentNodeModel(QObject *parent = nullptr);
0030     ~DocumentNodeModel();
0031 
0032     int rowCount ( const QModelIndex & parent ) const override;
0033     int columnCount ( const QModelIndex & parent ) const override;
0034     bool moveRows ( const QModelIndex & sourceParent, int sourceRow, int count, const QModelIndex & destinationParent, int destinationChild ) override;
0035     bool removeRows ( int row, int count, const QModelIndex & parent ) override;
0036     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
0037     QVariant data ( const QModelIndex & index, int role ) const override;
0038     QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
0039     Qt::ItemFlags flags ( const QModelIndex & index ) const override;
0040     QModelIndex parent ( const QModelIndex & child ) const override;
0041     bool setData ( const QModelIndex & index, const QVariant & value, int role ) override;
0042 
0043     void clear_document();
0044     void set_document(model::Document* doc);
0045     model::DocumentNode* node(const QModelIndex& index) const override;
0046     model::VisualNode* visual_node(const QModelIndex& index) const override;
0047     QModelIndex node_index(model::DocumentNode* node) const override;
0048     model::Document* document() const override;
0049 
0050 private:
0051     void connect_node(model::DocumentNode* node);
0052     void disconnect_node(model::DocumentNode* node);
0053 
0054     class Private;
0055     std::unique_ptr<Private> d;
0056 };
0057 
0058 
0059 } // namespace glaxnimate::gui::item_models