diff options
Diffstat (limited to 'src/widgets/dialogs/qfiledialog.cpp')
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 66 |
1 files changed, 34 insertions, 32 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index bdfa27282f..62022e6ef2 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -976,7 +976,7 @@ void QFileDialog::setDirectoryUrl(const QUrl &directory) d->setDirectory_sys(directory); else if (directory.isLocalFile()) setDirectory(directory.toLocalFile()); - else if (d->usingWidgets()) + else if (Q_UNLIKELY(d->usingWidgets())) qWarning("Non-native QFileDialog supports only local files"); } @@ -1104,7 +1104,7 @@ Q_AUTOTEST_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded } else { QString userName = tokens.first(); userName.remove(0, 1); -#if defined(Q_OS_VXWORKS) +#if defined(Q_OS_VXWORKS) || defined(Q_OS_INTEGRITY) const QString homePath = QDir::homePath(); #elif defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) passwd pw; @@ -1187,13 +1187,13 @@ QList<QUrl> QFileDialogPrivate::userSelectedFiles() const const QModelIndexList selectedRows = qFileDialogUi->listView->selectionModel()->selectedRows(); files.reserve(selectedRows.size()); - foreach (const QModelIndex &index, selectedRows) + for (const QModelIndex &index : selectedRows) files.append(QUrl::fromLocalFile(index.data(QFileSystemModel::FilePathRole).toString())); if (files.isEmpty() && !lineEdit()->text().isEmpty()) { const QStringList typedFilesList = typedFiles(); files.reserve(typedFilesList.size()); - foreach (const QString &path, typedFilesList) + for (const QString &path : typedFilesList) files.append(QUrl::fromLocalFile(path)); } @@ -1257,7 +1257,7 @@ QStringList QFileDialog::selectedFiles() const QStringList files; const QList<QUrl> userSelectedFiles = d->userSelectedFiles(); files.reserve(userSelectedFiles.size()); - foreach (const QUrl &file, userSelectedFiles) + for (const QUrl &file : userSelectedFiles) files.append(file.toLocalFile()); if (files.isEmpty() && d->usingWidgets()) { const FileMode fm = fileMode(); @@ -1284,7 +1284,7 @@ QList<QUrl> QFileDialog::selectedUrls() const QList<QUrl> urls; const QStringList selectedFileList = selectedFiles(); urls.reserve(selectedFileList.size()); - foreach (const QString &file, selectedFileList) + for (const QString &file : selectedFileList) urls.append(QUrl::fromLocalFile(file)); return urls; } @@ -1554,7 +1554,7 @@ void QFileDialog::setMimeTypeFilters(const QStringList &filters) { Q_D(QFileDialog); QStringList nameFilters; - foreach (const QString &mimeType, filters) { + for (const QString &mimeType : filters) { const QString text = nameFilterForMime(mimeType); if (!text.isEmpty()) nameFilters.append(text); @@ -2218,7 +2218,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, const QList<QUrl> selectedUrls = getOpenFileUrls(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes); QStringList fileNames; fileNames.reserve(selectedUrls.size()); - foreach (const QUrl &url, selectedUrls) + for (const QUrl &url : selectedUrls) fileNames << url.toLocalFile(); return fileNames; } @@ -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 " @@ -2696,7 +2696,7 @@ void QFileDialogPrivate::saveSettings() QStringList historyUrls; const QStringList history = q->history(); historyUrls.reserve(history.size()); - foreach (const QString &path, history) + for (const QString &path : history) historyUrls << QUrl::fromLocalFile(path).toString(); settings.setValue(QLatin1String("history"), historyUrls); settings.setValue(QLatin1String("lastVisited"), lastVisitedDir()->toString()); @@ -2730,7 +2730,8 @@ bool QFileDialogPrivate::restoreFromSettings() return true; QStringList history; - foreach (const QString &urlStr, settings.value(QLatin1String("history")).toStringList()) { + const auto urlStrings = settings.value(QLatin1String("history")).toStringList(); + for (const QString &urlStr : urlStrings) { QUrl url(urlStr); if (url.isLocalFile()) history << url.toLocalFile(); @@ -2760,8 +2761,10 @@ bool QFileDialogPrivate::restoreWidgetState(QStringList &history, int splitterPo } qFileDialogUi->sidebar->setUrls(sidebarUrls); - while (history.count() > 5) - history.pop_front(); + + static const int MaxHistorySize = 5; + if (history.size() > MaxHistorySize) + history.erase(history.begin(), history.end() - MaxHistorySize); q->setHistory(history); QHeaderView *headerView = qFileDialogUi->treeView->header(); @@ -2998,7 +3001,8 @@ void QFileDialogPrivate::createWidgets() q->setHistory(options->history()); if (options->initiallySelectedFiles().count() == 1) q->selectFile(options->initiallySelectedFiles().first().fileName()); - foreach (const QUrl &url, options->initiallySelectedFiles()) + const auto initiallySelectedFiles = options->initiallySelectedFiles(); + for (const QUrl &url : initiallySelectedFiles) q->selectUrl(url); lineEdit()->selectAll(); _q_updateOkButton(); @@ -3442,15 +3446,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) @@ -3477,7 +3479,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('\\'))) { @@ -3536,10 +3538,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; @@ -3680,14 +3682,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) { @@ -3755,7 +3757,7 @@ void QFileDialogPrivate::_q_emitUrlsSelected(const QList<QUrl> &files) Q_Q(QFileDialog); emit q->urlsSelected(files); QStringList localFiles; - foreach (const QUrl &file, files) + for (const QUrl &file : files) if (file.isLocalFile()) localFiles.append(file.toLocalFile()); if (!localFiles.isEmpty()) |