summaryrefslogtreecommitdiffstats
path: root/src/gui/itemmodels/qstandarditemmodel.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2020-07-06 11:55:39 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2020-07-07 20:35:05 +0200
commit471e4fcb226c4523efe93b1bdaf0db026495da94 (patch)
treebb963937b2446eb32d7632568433083a386f2c68 /src/gui/itemmodels/qstandarditemmodel.cpp
parent7f400522c39f6a1abf083dc1af49ea3109635cc8 (diff)
Use QList instead of QVector in gui implementation
Task-number: QTBUG-84469 Change-Id: I366e845249203d80d640355a7780ac2f91a762f1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/gui/itemmodels/qstandarditemmodel.cpp')
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp53
1 files changed, 26 insertions, 27 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index 869994d428..e4d9bcbb71 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -44,7 +44,6 @@
#include <QtCore/qmap.h>
#include <QtCore/qpair.h>
#include <QtCore/qvariant.h>
-#include <QtCore/qvector.h>
#include <QtCore/qstringlist.h>
#include <QtCore/qbitarray.h>
#include <QtCore/qmimedata.h>
@@ -274,11 +273,11 @@ void QStandardItemPrivate::setItemData(const QMap<int, QVariant> &roles)
std::sort(values.begin(), values.end(), byRole);
/*
- Create a vector of QStandardItemData that will contain the original values
+ Create a list of QStandardItemData that will contain the original values
if the matching role is not contained in roles, the new value if it is and
if the new value is an invalid QVariant, it will be removed.
*/
- QVector<QStandardItemData> newValues;
+ QList<QStandardItemData> newValues;
newValues.reserve(values.size());
roleMapStandardItemDataUnion(roles.keyValueBegin(),
roles.keyValueEnd(),
@@ -288,7 +287,7 @@ void QStandardItemPrivate::setItemData(const QMap<int, QVariant> &roles)
if (newValues != values) {
values.swap(newValues);
if (model) {
- QVector<int> roleKeys;
+ QList<int> roleKeys;
roleKeys.reserve(roles.size() + 1);
bool hasEditRole = false;
bool hasDisplayRole = false;
@@ -314,7 +313,7 @@ void QStandardItemPrivate::setItemData(const QMap<int, QVariant> &roles)
const QMap<int, QVariant> QStandardItemPrivate::itemData() const
{
QMap<int, QVariant> result;
- QVector<QStandardItemData>::const_iterator it;
+ QList<QStandardItemData>::const_iterator it;
for (it = values.cbegin(); it != values.cend(); ++it){
// Qt::UserRole - 1 is used internally to store the flags
if (it->role != Qt::UserRole - 1)
@@ -332,8 +331,8 @@ void QStandardItemPrivate::sortChildren(int column, Qt::SortOrder order)
if (column >= columnCount())
return;
- QVector<QPair<QStandardItem*, int> > sortable;
- QVector<int> unsortable;
+ QList<QPair<QStandardItem*, int> > sortable;
+ QList<int> unsortable;
sortable.reserve(rowCount());
unsortable.reserve(rowCount());
@@ -355,7 +354,7 @@ void QStandardItemPrivate::sortChildren(int column, Qt::SortOrder order)
}
QModelIndexList changedPersistentIndexesFrom, changedPersistentIndexesTo;
- QVector<QStandardItem*> sorted_children(children.count());
+ QList<QStandardItem*> sorted_children(children.count());
for (int i = 0; i < rowCount(); ++i) {
int r = (i < sortable.count()
? sortable.at(i).second
@@ -380,7 +379,7 @@ void QStandardItemPrivate::sortChildren(int column, Qt::SortOrder order)
model->changePersistentIndexList(changedPersistentIndexesFrom, changedPersistentIndexesTo);
}
- QVector<QStandardItem*>::iterator it;
+ QList<QStandardItem*>::iterator it;
for (it = children.begin(); it != children.end(); ++it) {
if (*it)
(*it)->d_func()->sortChildren(column, order);
@@ -406,7 +405,7 @@ void QStandardItemPrivate::setModel(QStandardItemModel *mod)
itm->d_func()->model->d_func()->invalidatePersistentIndex(itm->d_func()->model->indexFromItem(itm));
}
itm->d_func()->model = mod;
- const QVector<QStandardItem*> &childList = itm->d_func()->children;
+ const QList<QStandardItem*> &childList = itm->d_func()->children;
for (int i = 0; i < childList.count(); ++i) {
QStandardItem *chi = childList.at(i);
if (chi)
@@ -589,7 +588,7 @@ bool QStandardItemPrivate::insertColumns(int column, int count, const QList<QSta
/*!
\internal
*/
-void QStandardItemModelPrivate::itemChanged(QStandardItem *item, const QVector<int> &roles)
+void QStandardItemModelPrivate::itemChanged(QStandardItem *item, const QList<int> &roles)
{
Q_Q(QStandardItemModel);
Q_ASSERT(item);
@@ -920,17 +919,18 @@ void QStandardItem::setData(const QVariant &value, int role)
{
Q_D(QStandardItem);
role = (role == Qt::EditRole) ? Qt::DisplayRole : role;
- const QVector<int> roles((role == Qt::DisplayRole) ?
- QVector<int>({Qt::DisplayRole, Qt::EditRole}) :
- QVector<int>({role}));
- QVector<QStandardItemData>::iterator it;
- for (it = d->values.begin(); it != d->values.end(); ++it) {
+ const QList<int> roles((role == Qt::DisplayRole) ?
+ QList<int>({Qt::DisplayRole, Qt::EditRole}) :
+ QList<int>({role}));
+ for (auto it = d->values.begin(); it != d->values.end(); ++it) {
if ((*it).role == role) {
if (value.isValid()) {
if ((*it).value.userType() == value.userType() && (*it).value == value)
return;
(*it).value = value;
} else {
+ // Don't need to assign proper it after erase() since we
+ // return unconditionally in this code path.
d->values.erase(it);
}
if (d->model)
@@ -955,7 +955,7 @@ void QStandardItem::clearData()
return;
d->values.clear();
if (d->model)
- d->model->d_func()->itemChanged(this, QVector<int>{});
+ d->model->d_func()->itemChanged(this, QList<int>{});
}
/*!
@@ -968,11 +968,10 @@ void QStandardItem::clearData()
QVariant QStandardItem::data(int role) const
{
Q_D(const QStandardItem);
- role = (role == Qt::EditRole) ? Qt::DisplayRole : role;
- QVector<QStandardItemData>::const_iterator it;
- for (it = d->values.begin(); it != d->values.end(); ++it) {
- if ((*it).role == role)
- return (*it).value;
+ const int r = (role == Qt::EditRole) ? Qt::DisplayRole : role;
+ for (const auto &value : d->values) {
+ if (value.role == r)
+ return value.value;
}
return QVariant();
}
@@ -3111,7 +3110,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
if (seen.hasSeen(itm))
continue;
- const QVector<QStandardItem*> &childList = itm->d_func()->children;
+ const QList<QStandardItem*> &childList = itm->d_func()->children;
for (int i = 0; i < childList.count(); ++i) {
QStandardItem *chi = childList.at(i);
if (chi) {
@@ -3196,8 +3195,8 @@ bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction acti
int left = INT_MAX;
int bottom = 0;
int right = 0;
- QVector<int> rows, columns;
- QVector<QStandardItem *> items;
+ QList<int> rows, columns;
+ QList<QStandardItem *> items;
while (!stream.atEnd()) {
int r, c;
@@ -3220,7 +3219,7 @@ bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction acti
int dragColumnCount = right - left + 1;
// Compute the number of continuous rows upon insertion and modify the rows to match
- QVector<int> rowsToInsert(bottom + 1);
+ QList<int> rowsToInsert(bottom + 1);
for (int i = 0; i < rows.count(); ++i)
rowsToInsert[rows.at(i)] = 1;
for (int i = 0; i < rowsToInsert.count(); ++i) {
@@ -3249,7 +3248,7 @@ bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction acti
if (!parentItem)
parentItem = invisibleRootItem();
- QVector<QPersistentModelIndex> newIndexes(items.size());
+ QList<QPersistentModelIndex> newIndexes(items.size());
// set the data in the table
for (int j = 0; j < items.size(); ++j) {
int relativeRow = rows.at(j) - top;