diff options
Diffstat (limited to 'src/gui/itemmodels/qstandarditemmodel.cpp')
-rw-r--r-- | src/gui/itemmodels/qstandarditemmodel.cpp | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp index 25b82b94b5..6f30f0ea25 100644 --- a/src/gui/itemmodels/qstandarditemmodel.cpp +++ b/src/gui/itemmodels/qstandarditemmodel.cpp @@ -1,31 +1,37 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtGui module of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL21$ +** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** @@ -51,6 +57,11 @@ QT_BEGIN_NAMESPACE +static inline QString qStandardItemModelDataListMimeType() +{ + return QStringLiteral("application/x-qstandarditemmodeldatalist"); +} + class QStandardItemModelLessThan { public: @@ -192,19 +203,17 @@ void QStandardItemPrivate::setItemData(const QMap<int, QVariant> &roles) //let's build the vector of new values QVector<QStandardItemData> newValues; - QMap<int, QVariant>::const_iterator it; - for (it = roles.begin(); it != roles.end(); ++it) { - QVariant value = it.value(); + for (auto it = roles.begin(), end = roles.end(); it != end; ++it) { + const QVariant &value = it.value(); if (value.isValid()) { int role = it.key(); role = (role == Qt::EditRole) ? Qt::DisplayRole : role; - QStandardItemData wid(role,it.value()); - newValues.append(wid); + newValues.append(QStandardItemData(role, value)); } } if (values!=newValues) { - values=newValues; + values.swap(newValues); if (model) model->d_func()->itemChanged(q); } @@ -2164,6 +2173,7 @@ void QStandardItemModel::clear() Q_D(QStandardItemModel); beginResetModel(); d->root.reset(new QStandardItem); + d->root->setFlags(Qt::ItemIsDropEnabled); d->root->d_func()->setModel(this); qDeleteAll(d->columnHeaderItems); d->columnHeaderItems.clear(); @@ -2972,7 +2982,7 @@ void QStandardItemModel::sort(int column, Qt::SortOrder order) */ QStringList QStandardItemModel::mimeTypes() const { - return QAbstractItemModel::mimeTypes() << QLatin1String("application/x-qstandarditemmodeldatalist"); + return QAbstractItemModel::mimeTypes() << qStandardItemModelDataListMimeType(); } /*! @@ -2984,7 +2994,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const if(!data) return 0; - QString format = QLatin1String("application/x-qstandarditemmodeldatalist"); + const QString format = qStandardItemModelDataListMimeType(); if (!mimeTypes().contains(format)) return data; QByteArray encoded; @@ -2999,7 +3009,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const itemsSet << item; stack.push(item); } else { - qWarning() << "QStandardItemModel::mimeData: No item associated with invalid index"; + qWarning("QStandardItemModel::mimeData: No item associated with invalid index"); return 0; } } @@ -3028,9 +3038,8 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const } stack.reserve(itemsSet.count()); - foreach (QStandardItem *item, itemsSet) { + for (QStandardItem *item : qAsConst(itemsSet)) stack.push(item); - } //stream everything recursively while (!stack.isEmpty()) { @@ -3080,7 +3089,7 @@ bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction acti if (!data || !(action == Qt::CopyAction || action == Qt::MoveAction)) return false; // check if the format is supported - QString format = QLatin1String("application/x-qstandarditemmodeldatalist"); + const QString format = qStandardItemModelDataListMimeType(); if (!data->hasFormat(format)) return QAbstractItemModel::dropMimeData(data, action, row, column, parent); |