File indexing completed on 2024-04-28 04:39:10
0001 /* 0002 SPDX-FileCopyrightText: 2005 Roberto Raggi <roberto@kdevelop.org> 0003 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KDEVPLATFORM_PLUGIN_PROJECTTREEVIEW_H 0009 #define KDEVPLATFORM_PLUGIN_PROJECTTREEVIEW_H 0010 0011 #include <QTreeView> 0012 #include <QPointer> 0013 0014 class QAbstractProxyModel; 0015 0016 namespace KDevelop 0017 { 0018 class IProject; 0019 class ProjectBaseItem; 0020 class Path; 0021 } 0022 0023 class ProjectTreeView: public QTreeView 0024 { 0025 Q_OBJECT 0026 public: 0027 explicit ProjectTreeView( QWidget *parent = nullptr ); 0028 ~ProjectTreeView() override; 0029 0030 static QModelIndex mapFromSource(const QAbstractProxyModel* proxy, const QModelIndex& sourceIdx); 0031 0032 Q_SIGNALS: 0033 void activate( const KDevelop::Path &url ); 0034 0035 protected Q_SLOTS: 0036 void slotActivated( const QModelIndex &index ); 0037 void popupContextMenu( const QPoint &pos ); 0038 void openProjectConfig(); 0039 void saveState(KDevelop::IProject* project = nullptr); 0040 void restoreState(KDevelop::IProject* project = nullptr); 0041 void aboutToShutdown(); 0042 void projectClosed(KDevelop::IProject* project); 0043 void rowsInserted(const QModelIndex& parent, int start, int end) override; 0044 void rowsAboutToBeRemoved(const QModelIndex& parent, int start, int end) override; 0045 0046 protected: 0047 void keyPressEvent(QKeyEvent *event) override; 0048 void dropEvent(QDropEvent* event) override; 0049 void drawBranches(QPainter* painter, const QRect& rect, const QModelIndex& index) const override; 0050 0051 private: 0052 QModelIndex mapFromItem(const KDevelop::ProjectBaseItem* item); 0053 KDevelop::ProjectBaseItem* itemAtPos(const QPoint& pos) const; 0054 QList<KDevelop::ProjectBaseItem*> selectedProjects(); 0055 KDevelop::IProject* getCurrentProject(); 0056 0057 QPointer<KDevelop::IProject> m_previousSelection; 0058 }; 0059 0060 #endif // KDEVPLATFORM_PLUGIN_PROJECTTREEVIEW_H 0061