File indexing completed on 2024-05-12 04:38:54
0001 /* 0002 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVPLATFORM_VCSEVENTMODEL_H 0008 #define KDEVPLATFORM_VCSEVENTMODEL_H 0009 0010 #include <QAbstractTableModel> 0011 #include <QScopedPointer> 0012 0013 #include <vcs/vcsexport.h> 0014 0015 class QUrl; 0016 class KJob; 0017 0018 namespace KDevelop 0019 { 0020 class VcsRevision; 0021 class IBasicVersionControl; 0022 class VcsEvent; 0023 class VcsEventLogModelPrivate; 0024 class VcsBasicEventModelPrivate; 0025 0026 /** 0027 * This is a generic model to store a list of VcsEvents. 0028 * 0029 * To add events use @c addEvents 0030 */ 0031 class KDEVPLATFORMVCS_EXPORT VcsBasicEventModel : public QAbstractTableModel 0032 { 0033 Q_OBJECT 0034 public: 0035 enum Column { 0036 RevisionColumn, 0037 SummaryColumn, 0038 AuthorColumn, 0039 DateColumn, 0040 ColumnCount, 0041 }; 0042 0043 explicit VcsBasicEventModel(QObject* parent); 0044 ~VcsBasicEventModel() override; 0045 int rowCount(const QModelIndex& = QModelIndex()) const override; 0046 int columnCount(const QModelIndex& parent = QModelIndex()) const override; 0047 QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const override; 0048 QVariant headerData(int, Qt::Orientation, int role = Qt::DisplayRole) const override; 0049 KDevelop::VcsEvent eventForIndex(const QModelIndex&) const; 0050 0051 protected: 0052 void addEvents(const QList<KDevelop::VcsEvent>&); 0053 0054 private: 0055 const QScopedPointer<class VcsBasicEventModelPrivate> d_ptr; 0056 Q_DECLARE_PRIVATE(VcsBasicEventModel) 0057 }; 0058 0059 /** 0060 * This model stores a list of VcsEvents corresponding to the log obtained 0061 * via IBasicVersionControl::log for a given revision. The model is populated 0062 * lazily via @c fetchMore. 0063 */ 0064 class KDEVPLATFORMVCS_EXPORT VcsEventLogModel : public VcsBasicEventModel 0065 { 0066 Q_OBJECT 0067 public: 0068 0069 VcsEventLogModel(KDevelop::IBasicVersionControl* iface, const KDevelop::VcsRevision& rev, const QUrl& url, QObject* parent); 0070 ~VcsEventLogModel() override; 0071 0072 /// Adds events to the model via @sa IBasicVersionControl::log 0073 void fetchMore(const QModelIndex& parent) override; 0074 bool canFetchMore(const QModelIndex& parent) const override; 0075 0076 private Q_SLOTS: 0077 void jobReceivedResults( KJob* job ); 0078 0079 private: 0080 const QScopedPointer<class VcsEventLogModelPrivate> d_ptr; 0081 Q_DECLARE_PRIVATE(VcsEventLogModel) 0082 }; 0083 0084 } 0085 0086 #endif