2020-09-02 12:32:57 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
// Class for showing a limited amount of completions at a time
|
|
|
|
|
|
|
|
#include <QSortFilterProxyModel>
|
|
|
|
|
2020-11-20 02:38:08 +01:00
|
|
|
#include "CompletionModelRoles.h"
|
|
|
|
|
2020-09-02 12:32:57 +02:00
|
|
|
class CompletionProxyModel : public QSortFilterProxyModel
|
|
|
|
{
|
2020-11-20 02:38:08 +01:00
|
|
|
Q_OBJECT
|
|
|
|
|
2020-09-02 12:32:57 +02:00
|
|
|
public:
|
|
|
|
CompletionProxyModel(QAbstractItemModel *model, QObject *parent = nullptr)
|
|
|
|
: QSortFilterProxyModel(parent)
|
|
|
|
{
|
|
|
|
setSourceModel(model);
|
|
|
|
}
|
2020-11-20 02:38:08 +01:00
|
|
|
|
|
|
|
QHash<int, QByteArray> roleNames() const override
|
|
|
|
{
|
|
|
|
return this->sourceModel()->roleNames();
|
|
|
|
}
|
|
|
|
|
|
|
|
int rowCount(const QModelIndex &parent = QModelIndex()) const override
|
2020-09-02 12:32:57 +02:00
|
|
|
{
|
|
|
|
auto row_count = QSortFilterProxyModel::rowCount(parent);
|
|
|
|
return (row_count < 7) ? row_count : 7;
|
|
|
|
}
|
2020-11-20 02:38:08 +01:00
|
|
|
|
|
|
|
public slots:
|
|
|
|
QVariant completionAt(int i) const
|
|
|
|
{
|
|
|
|
if (i >= 0 && i < rowCount())
|
|
|
|
return data(index(i, 0), CompletionModel::CompletionRole);
|
|
|
|
else
|
|
|
|
return {};
|
|
|
|
}
|
2020-09-02 12:32:57 +02:00
|
|
|
};
|