From 0516487237145ad41b2fd13ecb5f63ba4325c02f Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 30 Nov 2015 12:19:31 +0100 Subject: QtWidgets: replace some index-based for loops with C++11 range-for This needs to be handled a bit carefully, because Qt containers will detach upon being iteratoed over using range-for. In the cases of this patch, that cannot happen, because all containers are marked as const (either by this patch or before). Separate patches will deal with other situations. Apart from being more readable, range-for loops are also the most efficient for loop. This patch shaves almost 2K of text size off an optimized Linux AMD64 GCC 4.9 build. Change-Id: I53810c7b25420b4fd449d20c90c07503c5e76a66 Reviewed-by: Edward Welbourne Reviewed-by: Lars Knoll --- src/widgets/dialogs/qfiledialog.cpp | 34 +++++++++++++++---------------- src/widgets/dialogs/qfileinfogatherer.cpp | 4 ++-- src/widgets/dialogs/qfilesystemmodel.cpp | 28 ++++++++++++------------- src/widgets/dialogs/qmessagebox.cpp | 15 +++++++------- src/widgets/dialogs/qsidebar.cpp | 10 ++++----- src/widgets/dialogs/qwizard.cpp | 5 ++--- 6 files changed, 45 insertions(+), 51 deletions(-) (limited to 'src/widgets/dialogs') diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 1f832abf78..1bf5691837 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -2587,7 +2587,7 @@ void QFileDialog::accept() return; } - QStringList files = selectedFiles(); + const QStringList files = selectedFiles(); if (files.isEmpty()) return; QString lineEditText = d->lineEdit()->text(); @@ -2657,10 +2657,10 @@ void QFileDialog::accept() case ExistingFile: case ExistingFiles: - for (int i = 0; i < files.count(); ++i) { - QFileInfo info(files.at(i)); + for (const auto &file : files) { + QFileInfo info(file); if (!info.exists()) - info = QFileInfo(d->getEnvironmentVariable(files.at(i))); + info = QFileInfo(d->getEnvironmentVariable(file)); if (!info.exists()) { #ifndef QT_NO_MESSAGEBOX QString message = tr("%1\nFile not found.\nPlease verify the " @@ -3444,15 +3444,13 @@ void QFileDialogPrivate::_q_autoCompleteFileName(const QString &text) return; } - QStringList multipleFiles = typedFiles(); + const QStringList multipleFiles = typedFiles(); if (multipleFiles.count() > 0) { QModelIndexList oldFiles = qFileDialogUi->listView->selectionModel()->selectedRows(); QModelIndexList newFiles; - for (int i = 0; i < multipleFiles.count(); ++i) { - QModelIndex idx = model->index(multipleFiles.at(i)); - if (oldFiles.contains(idx)) - oldFiles.removeAll(idx); - else + for (const auto &file : multipleFiles) { + QModelIndex idx = model->index(file); + if (oldFiles.removeAll(idx) == 0) newFiles.append(idx); } for (int i = 0; i < newFiles.count(); ++i) @@ -3479,7 +3477,7 @@ void QFileDialogPrivate::_q_updateOkButton() bool enableButton = true; bool isOpenDirectory = false; - QStringList files = q->selectedFiles(); + const QStringList files = q->selectedFiles(); QString lineEditText = lineEdit()->text(); if (lineEditText.startsWith(QLatin1String("//")) || lineEditText.startsWith(QLatin1Char('\\'))) { @@ -3538,10 +3536,10 @@ void QFileDialogPrivate::_q_updateOkButton() } case QFileDialog::ExistingFile: case QFileDialog::ExistingFiles: - for (int i = 0; i < files.count(); ++i) { - QModelIndex idx = model->index(files.at(i)); + for (const auto &file : files) { + QModelIndex idx = model->index(file); if (!idx.isValid()) - idx = model->index(getEnvironmentVariable(files.at(i))); + idx = model->index(getEnvironmentVariable(file)); if (!idx.isValid()) { enableButton = false; break; @@ -3682,14 +3680,14 @@ void QFileDialogPrivate::_q_useNameFilter(int index) void QFileDialogPrivate::_q_selectionChanged() { const QFileDialog::FileMode fileMode = q_func()->fileMode(); - QModelIndexList indexes = qFileDialogUi->listView->selectionModel()->selectedRows(); + const QModelIndexList indexes = qFileDialogUi->listView->selectionModel()->selectedRows(); bool stripDirs = (fileMode != QFileDialog::DirectoryOnly && fileMode != QFileDialog::Directory); QStringList allFiles; - for (int i = 0; i < indexes.count(); ++i) { - if (stripDirs && model->isDir(mapToSource(indexes.at(i)))) + for (const auto &index : indexes) { + if (stripDirs && model->isDir(mapToSource(index))) continue; - allFiles.append(indexes.at(i).data().toString()); + allFiles.append(index.data().toString()); } if (allFiles.count() > 1) for (int i = 0; i < allFiles.count(); ++i) { diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp index 92d6b8f3be..d99e3df802 100644 --- a/src/widgets/dialogs/qfileinfogatherer.cpp +++ b/src/widgets/dialogs/qfileinfogatherer.cpp @@ -282,8 +282,8 @@ void QFileInfoGatherer::getFileInfos(const QString &path, const QStringList &fil infoList = QDir::drives(); } else { infoList.reserve(files.count()); - for (int i = 0; i < files.count(); ++i) - infoList << QFileInfo(files.at(i)); + for (const auto &file : files) + infoList << QFileInfo(file); } for (int i = infoList.count() - 1; i >= 0; --i) { QString driveName = translateDriveName(infoList.at(i)); diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index 3c154c3dbb..c1d0ecf33b 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -1562,10 +1562,9 @@ void QFileSystemModel::setNameFilters(const QStringList &filters) d->bypassFilters.clear(); // We guarantee that rootPath will stick around QPersistentModelIndex root(index(rootPath())); - QModelIndexList persistantList = persistentIndexList(); - for (int i = 0; i < persistantList.count(); ++i) { - QFileSystemModelPrivate::QFileSystemNode *node; - node = d->node(persistantList.at(i)); + const QModelIndexList persistentList = persistentIndexList(); + for (const auto &persistentIndex : persistentList) { + QFileSystemModelPrivate::QFileSystemNode *node = d->node(persistentIndex); while (node) { if (d->bypassFilters.contains(node)) break; @@ -1579,9 +1578,8 @@ void QFileSystemModel::setNameFilters(const QStringList &filters) d->nameFilters.clear(); const Qt::CaseSensitivity caseSensitive = (filter() & QDir::CaseSensitive) ? Qt::CaseSensitive : Qt::CaseInsensitive; - for (int i = 0; i < filters.size(); ++i) { - d->nameFilters << QRegExp(filters.at(i), caseSensitive, QRegExp::Wildcard); - } + for (const auto &filter : filters) + d->nameFilters << QRegExp(filter, caseSensitive, QRegExp::Wildcard); d->forceSort = true; d->delayedSort(); #endif @@ -1734,9 +1732,9 @@ void QFileSystemModelPrivate::addVisibleFiles(QFileSystemNode *parentNode, const if (parentNode->dirtyChildrenIndex == -1) parentNode->dirtyChildrenIndex = parentNode->visibleChildren.count(); - for (int i = 0; i < newFiles.count(); ++i) { - parentNode->visibleChildren.append(newFiles.at(i)); - parentNode->children.value(newFiles.at(i))->isVisible = true; + for (const auto &newFile : newFiles) { + parentNode->visibleChildren.append(newFile); + parentNode->children.value(newFile)->isVisible = true; } if (!indexHidden) q->endInsertRows(); @@ -1779,10 +1777,10 @@ void QFileSystemModelPrivate::_q_fileSystemChanged(const QString &path, const QV QStringList newFiles; QFileSystemModelPrivate::QFileSystemNode *parentNode = node(path, false); QModelIndex parentIndex = index(parentNode); - for (int i = 0; i < updates.count(); ++i) { - QString fileName = updates.at(i).first; + for (const auto &update : updates) { + QString fileName = update.first; Q_ASSERT(!fileName.isEmpty()); - QExtendedInformation info = fileInfoGatherer.getInfo(updates.at(i).second); + QExtendedInformation info = fileInfoGatherer.getInfo(update.second); bool previouslyHere = parentNode->children.contains(fileName); if (!previouslyHere) { addNode(parentNode, fileName, info.fileInfo()); @@ -1971,8 +1969,8 @@ bool QFileSystemModelPrivate::passNameFilters(const QFileSystemNode *node) const // Check the name regularexpression filters if (!(node->isDir() && (filters & QDir::AllDirs))) { - for (int i = 0; i < nameFilters.size(); ++i) { - QRegExp copy = nameFilters.at(i); + for (const auto &nameFilter : nameFilters) { + QRegExp copy = nameFilter; if (copy.exactMatch(node->fileName)) return true; } diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index 76a9de0f1c..704883b5c6 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -1047,26 +1047,26 @@ void QMessageBoxPrivate::detectEscapeButton() } // if the message box has one RejectRole button, make it the escape button - for (int i = 0; i < buttons.count(); i++) { - if (buttonBox->buttonRole(buttons.at(i)) == QDialogButtonBox::RejectRole) { + for (auto *button : buttons) { + if (buttonBox->buttonRole(button) == QDialogButtonBox::RejectRole) { if (detectedEscapeButton) { // already detected! detectedEscapeButton = 0; break; } - detectedEscapeButton = buttons.at(i); + detectedEscapeButton = button; } } if (detectedEscapeButton) return; // if the message box has one NoRole button, make it the escape button - for (int i = 0; i < buttons.count(); i++) { - if (buttonBox->buttonRole(buttons.at(i)) == QDialogButtonBox::NoRole) { + for (auto *button : buttons) { + if (buttonBox->buttonRole(button) == QDialogButtonBox::NoRole) { if (detectedEscapeButton) { // already detected! detectedEscapeButton = 0; break; } - detectedEscapeButton = buttons.at(i); + detectedEscapeButton = button; } } } @@ -1506,8 +1506,7 @@ void QMessageBox::keyPressEvent(QKeyEvent *e) int key = e->key() & ~Qt::MODIFIER_MASK; if (key) { const QList buttons = d->buttonBox->buttons(); - for (int i = 0; i < buttons.count(); ++i) { - QAbstractButton *pb = buttons.at(i); + for (auto *pb : buttons) { QKeySequence shortcut = pb->shortcut(); if (!shortcut.isEmpty() && key == int(shortcut[0] & ~Qt::MODIFIER_MASK)) { pb->animateClick(); diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp index f883705cc3..58a92800f4 100644 --- a/src/widgets/dialogs/qsidebar.cpp +++ b/src/widgets/dialogs/qsidebar.cpp @@ -103,9 +103,9 @@ Qt::ItemFlags QUrlModel::flags(const QModelIndex &index) const QMimeData *QUrlModel::mimeData(const QModelIndexList &indexes) const { QList list; - for (int i = 0; i < indexes.count(); ++i) { - if (indexes.at(i).column() == 0) - list.append(indexes.at(i).data(UrlRole).toUrl()); + for (const auto &index : indexes) { + if (index.column() == 0) + list.append(index.data(UrlRole).toUrl()); } QMimeData *data = new QMimeData(); data->setUrls(list); @@ -125,8 +125,8 @@ bool QUrlModel::canDrop(QDragEnterEvent *event) return false; const QList list = event->mimeData()->urls(); - for (int i = 0; i < list.count(); ++i) { - QModelIndex idx = fileSystemModel->index(list.at(0).toLocalFile()); + for (const auto &url : list) { + const QModelIndex idx = fileSystemModel->index(url.toLocalFile()); if (!fileSystemModel->isDir(idx)) return false; } diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index c050b5b097..6add83e135 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -3622,9 +3622,8 @@ void QWizardPage::cleanupPage() { Q_D(QWizardPage); if (d->wizard) { - QVector &fields = d->wizard->d_func()->fields; - for (int i = 0; i < fields.count(); ++i) { - const QWizardField &field = fields.at(i); + const QVector &fields = d->wizard->d_func()->fields; + for (const auto &field : fields) { if (field.page == this) field.object->setProperty(field.property, field.initialValue); } -- cgit v1.2.3