File indexing completed on 2024-05-05 16:46:04
0001 /* 0002 SPDX-FileCopyrightText: 2010, 2015 Alex Richardson <alex.richardson@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <serialization/indexedstring.h> 0010 0011 #include <QAbstractItemModel> 0012 #include <vector> 0013 #include <memory> 0014 0015 class OutlineNode; 0016 0017 namespace KDevelop { 0018 class IDocument; 0019 class DUContext; 0020 class TopDUContext; 0021 class Declaration; 0022 } 0023 0024 class OutlineModel : public QAbstractItemModel 0025 { 0026 Q_OBJECT 0027 Q_DISABLE_COPY(OutlineModel) 0028 public: 0029 explicit OutlineModel(QObject* parent = nullptr); 0030 ~OutlineModel() override; 0031 0032 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; 0033 QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; 0034 int columnCount(const QModelIndex& parent = QModelIndex()) const override; 0035 int rowCount(const QModelIndex& parent = QModelIndex()) const override; 0036 QModelIndex parent(const QModelIndex& child) const override; 0037 bool hasChildren(const QModelIndex& parent = QModelIndex()) const override; 0038 Qt::ItemFlags flags(const QModelIndex& index) const override; 0039 0040 public Q_SLOTS: 0041 void activate(const QModelIndex& realIndex); 0042 private Q_SLOTS: 0043 void rebuildOutline(KDevelop::IDocument* doc); 0044 private: 0045 std::unique_ptr<OutlineNode> m_rootNode; 0046 KDevelop::IDocument* m_lastDoc; 0047 KDevelop::IndexedString m_lastUrl; 0048 };