1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
/*
SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de>
SPDX-FileCopyrightText: 2012 Morten Danielsen Volden <mvolden2@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef KDEVPLATFORM_OUTPUTMODEL_H
#define KDEVPLATFORM_OUTPUTMODEL_H
#include "outputviewexport.h"
#include "ioutputviewmodel.h"
#include "ifilterstrategy.h"
#include <QAbstractListModel>
class QUrl;
namespace KDevelop
{
class OutputModelPrivate;
class KDEVPLATFORMOUTPUTVIEW_EXPORT OutputModel : public QAbstractListModel, public KDevelop::IOutputViewModel
{
Q_OBJECT
Q_INTERFACES(KDevelop::IOutputViewModel)
public:
enum CustomRoles {
OutputItemTypeRole = Qt::UserRole + 1
};
enum OutputFilterStrategy
{
NoFilter,
CompilerFilter,
ScriptErrorFilter,
NativeAppErrorFilter,
StaticAnalysisFilter
};
Q_ENUM(OutputFilterStrategy)
explicit OutputModel( const QUrl& builddir , QObject* parent = nullptr );
explicit OutputModel( QObject* parent = nullptr );
~OutputModel() override;
/// IOutputViewModel interfaces
void activate( const QModelIndex& index ) override;
QModelIndex firstHighlightIndex() override;
QModelIndex nextHighlightIndex( const QModelIndex ¤t ) override;
QModelIndex previousHighlightIndex( const QModelIndex ¤t ) override;
QModelIndex lastHighlightIndex() override;
/// QAbstractItemModel interfaces
QVariant data( const QModelIndex&, int = Qt::DisplayRole ) const override;
int rowCount( const QModelIndex& = QModelIndex() ) const override;
QVariant headerData( int, Qt::Orientation, int = Qt::DisplayRole ) const override;
void setFilteringStrategy(const OutputFilterStrategy& currentStrategy);
void setFilteringStrategy(IFilterStrategy* filterStrategy);
public Q_SLOTS:
void appendLine( const QString& );
void appendLines( const QStringList& );
void ensureAllDone();
void clear();
Q_SIGNALS:
/// If the current filter strategy supports it, reports progress information
void progress(const KDevelop::IFilterStrategy::Progress& progress);
void allDone();
private:
const QScopedPointer<class OutputModelPrivate> d_ptr;
Q_DECLARE_PRIVATE(OutputModel)
friend class OutputModelPrivate;
};
}
#endif
|