diff options
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r-- | src/widgets/dialogs/dialogs.pri | 1 | ||||
-rw-r--r-- | src/widgets/dialogs/qcolordialog.cpp | 132 | ||||
-rw-r--r-- | src/widgets/dialogs/qcolordialog.h | 1 | ||||
-rw-r--r-- | src/widgets/dialogs/qcolordialog_p.h | 179 | ||||
-rw-r--r-- | src/widgets/dialogs/qerrormessage.cpp | 81 | ||||
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 38 | ||||
-rw-r--r-- | src/widgets/dialogs/qfilesystemmodel.cpp | 18 | ||||
-rw-r--r-- | src/widgets/dialogs/qfontdialog.cpp | 1 | ||||
-rw-r--r-- | src/widgets/dialogs/qinputdialog.cpp | 1 | ||||
-rw-r--r-- | src/widgets/dialogs/qsidebar.cpp | 16 | ||||
-rw-r--r-- | src/widgets/dialogs/qwizard.cpp | 1 |
11 files changed, 229 insertions, 240 deletions
diff --git a/src/widgets/dialogs/dialogs.pri b/src/widgets/dialogs/dialogs.pri index a5b4883db8..4f4a9b1517 100644 --- a/src/widgets/dialogs/dialogs.pri +++ b/src/widgets/dialogs/dialogs.pri @@ -2,7 +2,6 @@ HEADERS += \ dialogs/qcolordialog.h \ - dialogs/qcolordialog_p.h \ dialogs/qfscompleter_p.h \ dialogs/qdialog.h \ dialogs/qdialog_p.h \ diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index 5f3161f39f..914ee8ec9c 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -31,7 +31,7 @@ ** ****************************************************************************/ -#include "qcolordialog_p.h" +#include "qcolordialog.h" #ifndef QT_NO_COLORDIALOG @@ -49,6 +49,7 @@ #include "qpixmap.h" #include "qpushbutton.h" #include "qsettings.h" +#include "qsharedpointer.h" #include "qstyle.h" #include "qstyleoption.h" #include "qvalidator.h" @@ -58,13 +59,132 @@ #include "qscreen.h" #include "qcursor.h" #include "qtimer.h" +#include "qwindow.h" + +#include "private/qdialog_p.h" #include <algorithm> QT_BEGIN_NAMESPACE +namespace { +class QColorLuminancePicker; +class QColorPicker; +class QColorShower; +class QWellArray; +class QColorPickingEventFilter; +} // unnamed namespace + +class QColorDialogPrivate : public QDialogPrivate +{ + Q_DECLARE_PUBLIC(QColorDialog) + +public: + enum SetColorMode { + ShowColor = 0x1, + SelectColor = 0x2, + SetColorAll = ShowColor | SelectColor + }; + + QColorDialogPrivate() : options(new QColorDialogOptions) +#ifdef Q_OS_WIN32 + , updateTimer(0) +#endif + {} + + QPlatformColorDialogHelper *platformColorDialogHelper() const + { return static_cast<QPlatformColorDialogHelper *>(platformHelper()); } + + void init(const QColor &initial); + void initWidgets(); + QRgb currentColor() const; + QColor currentQColor() const; + void setCurrentColor(const QColor &color, SetColorMode setColorMode = SetColorAll); + void setCurrentRgbColor(QRgb rgb); + void setCurrentQColor(const QColor &color); + bool selectColor(const QColor &color); + QColor grabScreenColor(const QPoint &p); + + int currentAlpha() const; + void setCurrentAlpha(int a); + void showAlpha(bool b); + bool isAlphaVisible() const; + void retranslateStrings(); + + void _q_addCustom(); + + void _q_newHsv(int h, int s, int v); + void _q_newColorTypedIn(QRgb rgb); + void _q_nextCustom(int, int); + void _q_newCustom(int, int); + void _q_newStandard(int, int); + void _q_pickScreenColor(); + void _q_updateColorPicking(); + void updateColorLabelText(const QPoint &); + void updateColorPicking(const QPoint &pos); + void releaseColorPicking(); + bool handleColorPickingMouseMove(QMouseEvent *e); + bool handleColorPickingMouseButtonRelease(QMouseEvent *e); + bool handleColorPickingKeyPress(QKeyEvent *e); + + bool canBeNativeDialog() const Q_DECL_OVERRIDE; + + QWellArray *custom; + QWellArray *standard; + + QDialogButtonBox *buttons; + QVBoxLayout *leftLay; + QColorPicker *cp; + QColorLuminancePicker *lp; + QColorShower *cs; + QLabel *lblBasicColors; + QLabel *lblCustomColors; + QLabel *lblScreenColorInfo; + QPushButton *ok; + QPushButton *cancel; + QPushButton *addCusBt; + QPushButton *screenColorPickerButton; + QColor selectedQColor; + int nextCust; + bool smallDisplay; + bool screenColorPicking; + QColorPickingEventFilter *colorPickingEventFilter; + QRgb beforeScreenColorPicking; + QSharedPointer<QColorDialogOptions> options; + + QPointer<QObject> receiverToDisconnectOnClose; + QByteArray memberToDisconnectOnClose; +#ifdef Q_OS_WIN32 + QTimer *updateTimer; + QWindow dummyTransparentWindow; +#endif + +#ifdef Q_DEAD_CODE_FROM_QT4_MAC + void openCocoaColorPanel(const QColor &initial, + QWidget *parent, const QString &title, QColorDialog::ColorDialogOptions options); + void closeCocoaColorPanel(); + void releaseCocoaColorPanelDelegate(); + void setCocoaPanelColor(const QColor &color); + + inline void done(int result) { q_func()->done(result); } + inline QColorDialog *colorDialog() { return q_func(); } + + void *delegate; + + static bool sharedColorPanelAvailable; + + void _q_macRunNativeAppModalPanel(); + void mac_nativeDialogModalHelp(); +#endif +private: + virtual void initHelper(QPlatformDialogHelper *h) Q_DECL_OVERRIDE; + virtual void helperPrepareShow(QPlatformDialogHelper *h) Q_DECL_OVERRIDE; +}; + //////////// QWellArray BEGIN +namespace { + struct QWellArrayData; class QWellArray : public QWidget @@ -446,6 +566,8 @@ private: QColorDialogPrivate *m_dp; }; +} // unnamed namespace + /*! Returns the number of custom colors supported by QColorDialog. All color dialogs share the same custom colors. @@ -506,6 +628,8 @@ static inline void rgb2hsv(QRgb rgb, int &h, int &s, int &v) c.getHsv(&h, &s, &v); } +namespace { + class QColorWell : public QWellArray { public: @@ -975,8 +1099,8 @@ private: QColorDialog *colorDialog; QGridLayout *gl; - friend class QColorDialog; - friend class QColorDialogPrivate; + friend class QT_PREPEND_NAMESPACE(QColorDialog); + friend class QT_PREPEND_NAMESPACE(QColorDialogPrivate); }; class QColorShowLabel : public QFrame @@ -1265,6 +1389,8 @@ QColorShower::QColorShower(QColorDialog *parent) retranslateStrings(); } +} // unnamed namespace + inline QRgb QColorDialogPrivate::currentColor() const { return cs->currentColor(); } inline int QColorDialogPrivate::currentAlpha() const { return cs->currentAlpha(); } inline void QColorDialogPrivate::setCurrentAlpha(int a) { cs->setCurrentAlpha(a); } diff --git a/src/widgets/dialogs/qcolordialog.h b/src/widgets/dialogs/qcolordialog.h index 16339f56c4..43c7716ef6 100644 --- a/src/widgets/dialogs/qcolordialog.h +++ b/src/widgets/dialogs/qcolordialog.h @@ -113,7 +113,6 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_newStandard(int, int)) Q_PRIVATE_SLOT(d_func(), void _q_pickScreenColor()) Q_PRIVATE_SLOT(d_func(), void _q_updateColorPicking()) - friend class QColorShower; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QColorDialog::ColorDialogOptions) diff --git a/src/widgets/dialogs/qcolordialog_p.h b/src/widgets/dialogs/qcolordialog_p.h deleted file mode 100644 index 1a881eae70..0000000000 --- a/src/widgets/dialogs/qcolordialog_p.h +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** 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. -** -** 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. -** -** 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. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QCOLORDIALOG_P_H -#define QCOLORDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// to version without notice, or even be removed. -// -// We mean it. -// -// - -#include "private/qdialog_p.h" -#include "qcolordialog.h" -#include "qsharedpointer.h" -#include "qwindow.h" - -#ifndef QT_NO_COLORDIALOG - -QT_BEGIN_NAMESPACE - -class QColorLuminancePicker; -class QColorPicker; -class QColorShower; -class QDialogButtonBox; -class QLabel; -class QVBoxLayout; -class QPushButton; -class QWellArray; -class QColorPickingEventFilter; -class QTimer; - -class QColorDialogPrivate : public QDialogPrivate -{ - Q_DECLARE_PUBLIC(QColorDialog) - -public: - enum SetColorMode { - ShowColor = 0x1, - SelectColor = 0x2, - SetColorAll = ShowColor | SelectColor - }; - - QColorDialogPrivate() : options(new QColorDialogOptions) -#ifdef Q_OS_WIN32 - , updateTimer(0) -#endif - {} - - QPlatformColorDialogHelper *platformColorDialogHelper() const - { return static_cast<QPlatformColorDialogHelper *>(platformHelper()); } - - void init(const QColor &initial); - void initWidgets(); - QRgb currentColor() const; - QColor currentQColor() const; - void setCurrentColor(const QColor &color, SetColorMode setColorMode = SetColorAll); - void setCurrentRgbColor(QRgb rgb); - void setCurrentQColor(const QColor &color); - bool selectColor(const QColor &color); - QColor grabScreenColor(const QPoint &p); - - int currentAlpha() const; - void setCurrentAlpha(int a); - void showAlpha(bool b); - bool isAlphaVisible() const; - void retranslateStrings(); - - void _q_addCustom(); - - void _q_newHsv(int h, int s, int v); - void _q_newColorTypedIn(QRgb rgb); - void _q_nextCustom(int, int); - void _q_newCustom(int, int); - void _q_newStandard(int, int); - void _q_pickScreenColor(); - void _q_updateColorPicking(); - void updateColorLabelText(const QPoint &); - void updateColorPicking(const QPoint &pos); - void releaseColorPicking(); - bool handleColorPickingMouseMove(QMouseEvent *e); - bool handleColorPickingMouseButtonRelease(QMouseEvent *e); - bool handleColorPickingKeyPress(QKeyEvent *e); - - bool canBeNativeDialog() const Q_DECL_OVERRIDE; - - QWellArray *custom; - QWellArray *standard; - - QDialogButtonBox *buttons; - QVBoxLayout *leftLay; - QColorPicker *cp; - QColorLuminancePicker *lp; - QColorShower *cs; - QLabel *lblBasicColors; - QLabel *lblCustomColors; - QLabel *lblScreenColorInfo; - QPushButton *ok; - QPushButton *cancel; - QPushButton *addCusBt; - QPushButton *screenColorPickerButton; - QColor selectedQColor; - int nextCust; - bool smallDisplay; - bool screenColorPicking; - QColorPickingEventFilter *colorPickingEventFilter; - QRgb beforeScreenColorPicking; - QSharedPointer<QColorDialogOptions> options; - - QPointer<QObject> receiverToDisconnectOnClose; - QByteArray memberToDisconnectOnClose; -#ifdef Q_OS_WIN32 - QTimer *updateTimer; - QWindow dummyTransparentWindow; -#endif - -#ifdef Q_DEAD_CODE_FROM_QT4_MAC - void openCocoaColorPanel(const QColor &initial, - QWidget *parent, const QString &title, QColorDialog::ColorDialogOptions options); - void closeCocoaColorPanel(); - void releaseCocoaColorPanelDelegate(); - void setCocoaPanelColor(const QColor &color); - - inline void done(int result) { q_func()->done(result); } - inline QColorDialog *colorDialog() { return q_func(); } - - void *delegate; - - static bool sharedColorPanelAvailable; - - void _q_macRunNativeAppModalPanel(); - void mac_nativeDialogModalHelp(); -#endif -private: - virtual void initHelper(QPlatformDialogHelper *h) Q_DECL_OVERRIDE; - virtual void helperPrepareShow(QPlatformDialogHelper *h) Q_DECL_OVERRIDE; -}; - -#endif // QT_NO_COLORDIALOG - -QT_END_NAMESPACE - -#endif // QCOLORDIALOG_P_H diff --git a/src/widgets/dialogs/qerrormessage.cpp b/src/widgets/dialogs/qerrormessage.cpp index 4c3a5497d4..855bae3c9f 100644 --- a/src/widgets/dialogs/qerrormessage.cpp +++ b/src/widgets/dialogs/qerrormessage.cpp @@ -47,9 +47,10 @@ #include "qpixmap.h" #include "qmetaobject.h" #include "qthread.h" -#include "qqueue.h" #include "qset.h" +#include <queue> + #include <stdio.h> #include <stdlib.h> @@ -68,16 +69,18 @@ public: QCheckBox * again; QTextEdit * errors; QLabel * icon; - QQueue<QPair<QString, QString> > pending; + std::queue<QPair<QString, QString> > pending; QSet<QString> doNotShow; QSet<QString> doNotShowType; QString currentMessage; QString currentType; + bool isMessageToBeShown(const QString &message, const QString &type) const; bool nextPending(); void retranslateStrings(); }; +namespace { class QErrorMessageTextView : public QTextEdit { public: @@ -87,6 +90,7 @@ public: virtual QSize minimumSizeHint() const Q_DECL_OVERRIDE; virtual QSize sizeHint() const Q_DECL_OVERRIDE; }; +} // unnamed namespace QSize QErrorMessageTextView::minimumSizeHint() const { @@ -217,29 +221,32 @@ QErrorMessage::QErrorMessage(QWidget * parent) : QDialog(*new QErrorMessagePrivate, parent) { Q_D(QErrorMessage); - QGridLayout * grid = new QGridLayout(this); + d->icon = new QLabel(this); -#ifndef QT_NO_MESSAGEBOX - d->icon->setPixmap(QMessageBox::standardIcon(QMessageBox::Information)); - d->icon->setAlignment(Qt::AlignHCenter | Qt::AlignTop); -#endif - grid->addWidget(d->icon, 0, 0, Qt::AlignTop); d->errors = new QErrorMessageTextView(this); - grid->addWidget(d->errors, 0, 1); d->again = new QCheckBox(this); - d->again->setChecked(true); - grid->addWidget(d->again, 1, 1, Qt::AlignTop); d->ok = new QPushButton(this); + QGridLayout * grid = new QGridLayout(this); + + connect(d->ok, SIGNAL(clicked()), this, SLOT(accept())); + grid->addWidget(d->icon, 0, 0, Qt::AlignTop); + grid->addWidget(d->errors, 0, 1); + grid->addWidget(d->again, 1, 1, Qt::AlignTop); + grid->addWidget(d->ok, 2, 0, 1, 2, Qt::AlignCenter); + grid->setColumnStretch(1, 42); + grid->setRowStretch(0, 42); +#ifndef QT_NO_MESSAGEBOX + d->icon->setPixmap(QMessageBox::standardIcon(QMessageBox::Information)); + d->icon->setAlignment(Qt::AlignHCenter | Qt::AlignTop); +#endif + d->again->setChecked(true); #if defined(Q_OS_WINCE) d->ok->setFixedSize(0,0); #endif - connect(d->ok, SIGNAL(clicked()), this, SLOT(accept())); d->ok->setFocus(); - grid->addWidget(d->ok, 2, 0, 1, 2, Qt::AlignCenter); - grid->setColumnStretch(1, 42); - grid->setRowStretch(0, 42); + d->retranslateStrings(); } @@ -265,11 +272,13 @@ QErrorMessage::~QErrorMessage() void QErrorMessage::done(int a) { Q_D(QErrorMessage); - if (!d->again->isChecked() && !d->currentMessage.isEmpty() && d->currentType.isEmpty()) { - d->doNotShow.insert(d->currentMessage); - } - if (!d->again->isChecked() && !d->currentType.isEmpty()) { - d->doNotShowType.insert(d->currentType); + if (!d->again->isChecked()) { + if (d->currentType.isEmpty()) { + if (!d->currentMessage.isEmpty()) + d->doNotShow.insert(d->currentMessage); + } else { + d->doNotShowType.insert(d->currentType); + } } d->currentMessage.clear(); d->currentType.clear(); @@ -301,20 +310,27 @@ QErrorMessage * QErrorMessage::qtHandler() /*! \internal */ +bool QErrorMessagePrivate::isMessageToBeShown(const QString &message, const QString &type) const +{ + return !message.isEmpty() + && (type.isEmpty() ? !doNotShow.contains(message) : !doNotShowType.contains(type)); +} + bool QErrorMessagePrivate::nextPending() { - while (!pending.isEmpty()) { - QPair<QString,QString> pendingMessage = pending.dequeue(); - QString message = pendingMessage.first; - QString type = pendingMessage.second; - if (!message.isEmpty() && ((type.isEmpty() && !doNotShow.contains(message)) || (!type.isEmpty() && !doNotShowType.contains(type)))) { + while (!pending.empty()) { + QPair<QString,QString> &pendingMessage = pending.front(); + QString message = qMove(pendingMessage.first); + QString type = qMove(pendingMessage.second); + pending.pop(); + if (isMessageToBeShown(message, type)) { #ifndef QT_NO_TEXTHTMLPARSER errors->setHtml(message); #else errors->setPlainText(message); #endif - currentMessage = message; - currentType = type; + currentMessage = qMove(message); + currentType = qMove(type); return true; } } @@ -333,12 +349,7 @@ bool QErrorMessagePrivate::nextPending() void QErrorMessage::showMessage(const QString &message) { - Q_D(QErrorMessage); - if (d->doNotShow.contains(message)) - return; - d->pending.enqueue(qMakePair(message,QString())); - if (!isVisible() && d->nextPending()) - show(); + showMessage(message, QString()); } /*! @@ -358,9 +369,9 @@ void QErrorMessage::showMessage(const QString &message) void QErrorMessage::showMessage(const QString &message, const QString &type) { Q_D(QErrorMessage); - if (d->doNotShow.contains(message) && d->doNotShowType.contains(type)) + if (!d->isMessageToBeShown(message, type)) return; - d->pending.push_back(qMakePair(message,type)); + d->pending.push(qMakePair(message, type)); if (!isVisible() && d->nextPending()) show(); } diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index d2666026bb..d83f6609b8 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1189,12 +1189,17 @@ QList<QUrl> QFileDialogPrivate::userSelectedFiles() const if (!usingWidgets()) return addDefaultSuffixToUrls(selectedFiles_sys()); - foreach (const QModelIndex &index, qFileDialogUi->listView->selectionModel()->selectedRows()) + const QModelIndexList selectedRows = qFileDialogUi->listView->selectionModel()->selectedRows(); + files.reserve(selectedRows.size()); + foreach (const QModelIndex &index, selectedRows) files.append(QUrl::fromLocalFile(index.data(QFileSystemModel::FilePathRole).toString())); - if (files.isEmpty() && !lineEdit()->text().isEmpty()) - foreach (const QString &path, typedFiles()) + if (files.isEmpty() && !lineEdit()->text().isEmpty()) { + const QStringList typedFilesList = typedFiles(); + files.reserve(typedFilesList.size()); + foreach (const QString &path, typedFilesList) files.append(QUrl::fromLocalFile(path)); + } return files; } @@ -1228,7 +1233,9 @@ QStringList QFileDialogPrivate::addDefaultSuffixToFiles(const QStringList &files QList<QUrl> QFileDialogPrivate::addDefaultSuffixToUrls(const QList<QUrl> &urlsToFix) const { QList<QUrl> urls; - for (int i=0; i<urlsToFix.size(); ++i) { + const int numUrlsToFix = urlsToFix.size(); + urls.reserve(numUrlsToFix); + for (int i = 0; i < numUrlsToFix; ++i) { QUrl url = urlsToFix.at(i); // if the filename has no suffix, add the default suffix const QString defaultSuffix = options->defaultSuffix(); @@ -1252,7 +1259,9 @@ QStringList QFileDialog::selectedFiles() const Q_D(const QFileDialog); QStringList files; - foreach (const QUrl &file, d->userSelectedFiles()) + const QList<QUrl> userSelectedFiles = d->userSelectedFiles(); + files.reserve(userSelectedFiles.size()); + foreach (const QUrl &file, userSelectedFiles) files.append(file.toLocalFile()); if (files.isEmpty() && d->usingWidgets()) { const FileMode fm = fileMode(); @@ -1277,7 +1286,9 @@ QList<QUrl> QFileDialog::selectedUrls() const return d->userSelectedFiles(); } else { QList<QUrl> urls; - foreach (const QString &file, selectedFiles()) + const QStringList selectedFileList = selectedFiles(); + urls.reserve(selectedFileList.size()); + foreach (const QString &file, selectedFileList) urls.append(QUrl::fromLocalFile(file)); return urls; } @@ -1356,7 +1367,9 @@ QStringList qt_strip_filters(const QStringList &filters) { QStringList strippedFilters; QRegExp r(QString::fromLatin1(QPlatformFileDialogHelper::filterRegExp)); - for (int i = 0; i < filters.count(); ++i) { + const int numFilters = filters.count(); + strippedFilters.reserve(numFilters); + for (int i = 0; i < numFilters; ++i) { QString filterName; int index = r.indexIn(filters[i]); if (index >= 0) @@ -1391,7 +1404,9 @@ void QFileDialog::setNameFilters(const QStringList &filters) Q_D(QFileDialog); d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)"))); QStringList cleanedFilters; - for (int i = 0; i < filters.count(); ++i) { + const int numFilters = filters.count(); + cleanedFilters.reserve(numFilters); + for (int i = 0; i < numFilters; ++i) { cleanedFilters << filters[i].simplified(); } d->options->setNameFilters(cleanedFilters); @@ -2186,6 +2201,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, const QStringList schemes = QStringList(QStringLiteral("file")); 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) fileNames << url.toLocalFile(); return fileNames; @@ -2662,7 +2678,9 @@ void QFileDialogPrivate::saveSettings() settings.setValue(QLatin1String("treeViewHeader"), qFileDialogUi->treeView->header()->saveState()); } QStringList historyUrls; - foreach (const QString &path, q->history()) + const QStringList history = q->history(); + historyUrls.reserve(history.size()); + foreach (const QString &path, history) historyUrls << QUrl::fromLocalFile(path).toString(); settings.setValue(QLatin1String("history"), historyUrls); settings.setValue(QLatin1String("lastVisited"), lastVisitedDir()->toString()); @@ -3774,7 +3792,7 @@ QString QFileDialogPrivate::getEnvironmentVariable(const QString &string) { #ifdef Q_OS_UNIX if (string.size() > 1 && string.startsWith(QLatin1Char('$'))) { - return QString::fromLocal8Bit(getenv(string.mid(1).toLatin1().constData())); + return QString::fromLocal8Bit(qgetenv(string.mid(1).toLatin1().constData())); } #else if (string.size() > 2 && string.startsWith(QLatin1Char('%')) && string.endsWith(QLatin1Char('%'))) { diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index 4859231d95..3d767971a4 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -1183,8 +1183,11 @@ void QFileSystemModel::sort(int column, Qt::SortOrder order) emit layoutAboutToBeChanged(); QModelIndexList oldList = persistentIndexList(); QList<QPair<QFileSystemModelPrivate::QFileSystemNode*, int> > oldNodes; - for (int i = 0; i < oldList.count(); ++i) { - QPair<QFileSystemModelPrivate::QFileSystemNode*, int> pair(d->node(oldList.at(i)), oldList.at(i).column()); + const int nodeCount = oldList.count(); + oldNodes.reserve(nodeCount); + for (int i = 0; i < nodeCount; ++i) { + const QModelIndex &oldNode = oldList.at(i); + QPair<QFileSystemModelPrivate::QFileSystemNode*, int> pair(d->node(oldNode), oldNode.column()); oldNodes.append(pair); } @@ -1197,9 +1200,10 @@ void QFileSystemModel::sort(int column, Qt::SortOrder order) d->sortOrder = order; QModelIndexList newList; - for (int i = 0; i < oldNodes.count(); ++i) { - QModelIndex idx = d->index(oldNodes.at(i).first); - idx = idx.sibling(idx.row(), oldNodes.at(i).second); + for (int i = 0; i < nodeCount; ++i) { + const QPair<QFileSystemModelPrivate::QFileSystemNode*, int> &oldNode = oldNodes.at(i); + QModelIndex idx = d->index(oldNode.first); + idx = idx.sibling(idx.row(), oldNode.second); newList.append(idx); } changePersistentIndexList(oldList, newList); @@ -1648,7 +1652,9 @@ QStringList QFileSystemModel::nameFilters() const Q_D(const QFileSystemModel); QStringList filters; #ifndef QT_NO_REGEXP - for (int i = 0; i < d->nameFilters.size(); ++i) { + const int numNameFilters = d->nameFilters.size(); + filters.reserve(numNameFilters); + for (int i = 0; i < numNameFilters; ++i) { filters << d->nameFilters.at(i).pattern(); } #endif diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index d47dd3562f..688e8f5c13 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -619,6 +619,7 @@ void QFontDialogPrivate::updateSizes() int i = 0; int current = -1; QStringList str_sizes; + str_sizes.reserve(sizes.size()); for(QList<int>::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) { str_sizes.append(QString::number(*it)); if (current == -1 && *it == size) diff --git a/src/widgets/dialogs/qinputdialog.cpp b/src/widgets/dialogs/qinputdialog.cpp index 9c78f5e9ac..fb52fa4651 100644 --- a/src/widgets/dialogs/qinputdialog.cpp +++ b/src/widgets/dialogs/qinputdialog.cpp @@ -791,6 +791,7 @@ QStringList QInputDialog::comboBoxItems() const QStringList result; if (d->comboBox) { const int count = d->comboBox->count(); + result.reserve(count); for (int i = 0; i < count; ++i) result.append(d->comboBox->itemText(i)); } diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp index 6fbcce801d..be3c060ba1 100644 --- a/src/widgets/dialogs/qsidebar.cpp +++ b/src/widgets/dialogs/qsidebar.cpp @@ -274,7 +274,9 @@ void QUrlModel::addUrls(const QList<QUrl> &list, int row, bool move) QList<QUrl> QUrlModel::urls() const { QList<QUrl> list; - for (int i = 0; i < rowCount(); ++i) + const int numRows = rowCount(); + list.reserve(numRows); + for (int i = 0; i < numRows; ++i) list.append(data(index(i, 0), UrlRole).toUrl()); return list; } @@ -334,10 +336,12 @@ void QUrlModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &botto void QUrlModel::layoutChanged() { QStringList paths; - for (int i = 0; i < watching.count(); ++i) + const int numPaths = watching.count(); + paths.reserve(numPaths); + for (int i = 0; i < numPaths; ++i) paths.append(watching.at(i).second); watching.clear(); - for (int i = 0; i < paths.count(); ++i) { + for (int i = 0; i < numPaths; ++i) { QString path = paths.at(i); QModelIndex newIndex = fileSystemModel->index(path); watching.append(QPair<QModelIndex, QString>(newIndex, path)); @@ -453,12 +457,14 @@ void QSidebar::removeEntry() { QList<QModelIndex> idxs = selectionModel()->selectedIndexes(); QList<QPersistentModelIndex> indexes; - for (int i = 0; i < idxs.count(); i++) + const int numIndexes = idxs.count(); + for (int i = 0; i < numIndexes; i++) indexes.append(idxs.at(i)); - for (int i = 0; i < indexes.count(); ++i) + for (int i = 0; i < numIndexes; ++i) { if (!indexes.at(i).data(QUrlModel::UrlRole).toUrl().path().isEmpty()) model()->removeRow(indexes.at(i).row()); + } } /*! diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index 139fbc3843..680d29443d 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -751,6 +751,7 @@ void QWizardPrivate::init() updateButtonLayout(); + defaultPropertyTable.reserve(NFallbackDefaultProperties); for (uint i = 0; i < NFallbackDefaultProperties; ++i) defaultPropertyTable.append(QWizardDefaultProperty(fallbackProperties[i].className, fallbackProperties[i].property, |