a new property for models: count (another thing badly missing from QML, where is necessary to hook it up to a view to figure out how many items there are)
svn path=/trunk/KDE/kdebase/runtime/; revision=1204004
This commit is contained in:
parent
4c6b625f62
commit
933b88e340
@ -30,6 +30,12 @@ SortFilterModel::SortFilterModel(QObject* parent)
|
|||||||
{
|
{
|
||||||
setObjectName("SortFilterModel");
|
setObjectName("SortFilterModel");
|
||||||
setDynamicSortFilter(true);
|
setDynamicSortFilter(true);
|
||||||
|
connect(this, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
|
||||||
|
this, SIGNAL(countChanged()));
|
||||||
|
connect(this, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
|
||||||
|
this, SIGNAL(countChanged()));
|
||||||
|
connect(this, SIGNAL(modelReset()),
|
||||||
|
this, SIGNAL(countChanged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
SortFilterModel::~SortFilterModel()
|
SortFilterModel::~SortFilterModel()
|
||||||
@ -118,21 +124,18 @@ DataModel::DataModel(QObject* parent)
|
|||||||
m_dataSource(0)
|
m_dataSource(0)
|
||||||
{
|
{
|
||||||
setObjectName("DataModel");
|
setObjectName("DataModel");
|
||||||
|
connect(this, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
|
||||||
|
this, SIGNAL(countChanged()));
|
||||||
|
connect(this, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
|
||||||
|
this, SIGNAL(countChanged()));
|
||||||
|
connect(this, SIGNAL(modelReset()),
|
||||||
|
this, SIGNAL(countChanged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
DataModel::~DataModel()
|
DataModel::~DataModel()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int DataModel::countItems() const
|
|
||||||
{
|
|
||||||
int count = 0;
|
|
||||||
foreach (const QVector<QVariant> &v, m_items) {
|
|
||||||
count += v.count();
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DataModel::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data)
|
void DataModel::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data)
|
||||||
{
|
{
|
||||||
if (!m_keyRoleFilter.isEmpty()) {
|
if (!m_keyRoleFilter.isEmpty()) {
|
||||||
|
@ -43,6 +43,7 @@ class SortFilterModel : public QSortFilterProxyModel
|
|||||||
Q_PROPERTY(QString filterRole READ filterRole WRITE setFilterRole)
|
Q_PROPERTY(QString filterRole READ filterRole WRITE setFilterRole)
|
||||||
Q_PROPERTY(QString sortRole READ sortRole WRITE setSortRole)
|
Q_PROPERTY(QString sortRole READ sortRole WRITE setSortRole)
|
||||||
Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder)
|
Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder)
|
||||||
|
Q_PROPERTY(int count READ count NOTIFY countChanged)
|
||||||
|
|
||||||
friend class DataModel;
|
friend class DataModel;
|
||||||
|
|
||||||
@ -64,6 +65,11 @@ public:
|
|||||||
|
|
||||||
void setSortOrder(const Qt::SortOrder order);
|
void setSortOrder(const Qt::SortOrder order);
|
||||||
|
|
||||||
|
int count() const {return QSortFilterProxyModel::rowCount();}
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void countChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int roleNameToId(const QString &name);
|
int roleNameToId(const QString &name);
|
||||||
|
|
||||||
@ -81,6 +87,7 @@ class DataModel : public QAbstractItemModel
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QObject *dataSource READ dataSource WRITE setDataSource)
|
Q_PROPERTY(QObject *dataSource READ dataSource WRITE setDataSource)
|
||||||
Q_PROPERTY(QString keyRoleFilter READ keyRoleFilter WRITE setKeyRoleFilter)
|
Q_PROPERTY(QString keyRoleFilter READ keyRoleFilter WRITE setKeyRoleFilter)
|
||||||
|
Q_PROPERTY(int count READ count NOTIFY countChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DataModel(QObject* parent=0);
|
DataModel(QObject* parent=0);
|
||||||
@ -104,6 +111,8 @@ public:
|
|||||||
int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
|
|
||||||
|
int count() const {return countItems();}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setItems(const QString &sourceName, const QVariantList &list);
|
void setItems(const QString &sourceName, const QVariantList &list);
|
||||||
inline int countItems() const;
|
inline int countItems() const;
|
||||||
@ -111,6 +120,7 @@ protected:
|
|||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void modelAboutToBeReset();
|
void modelAboutToBeReset();
|
||||||
void modelReset();
|
void modelReset();
|
||||||
|
void countChanged();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data);
|
void dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data);
|
||||||
@ -124,5 +134,14 @@ private:
|
|||||||
QHash<QString, int> m_roleIds;
|
QHash<QString, int> m_roleIds;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int DataModel::countItems() const
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
foreach (const QVector<QVariant> &v, m_items) {
|
||||||
|
count += v.count();
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user