diff options
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r-- | src/widgets/dialogs/qcolordialog.cpp | 77 | ||||
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 53 | ||||
-rw-r--r-- | src/widgets/dialogs/qfiledialog_p.h | 2 | ||||
-rw-r--r-- | src/widgets/dialogs/qwizard.cpp | 2 |
4 files changed, 48 insertions, 86 deletions
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index 3889a589c7..14c1ce081f 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -1262,9 +1262,17 @@ QColorShower::QColorShower(QColorDialog *parent) lblHtml->setBuddy(htEd); #endif +#if !defined(QT_NO_REGULAREXPRESSION) QRegularExpression regExp(QStringLiteral("#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})")); QRegularExpressionValidator *validator = new QRegularExpressionValidator(regExp, this); htEd->setValidator(validator); +#elif !defined(QT_NO_REGEXP) + QRegExp regExp(QStringLiteral("#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})")); + QRegExpValidator *validator = new QRegExpValidator(regExp, this); + htEd->setValidator(validator); +#else + htEd->setReadOnly(true); +#endif lblHtml->setAlignment(Qt::AlignRight|Qt::AlignVCenter); gl->addWidget(lblHtml, 5, 1); @@ -1460,38 +1468,46 @@ void QColorDialogPrivate::setCurrentQColor(const QColor &color) } } +// size of standard and custom color selector +enum { + colorColumns = 8, + standardColorRows = 6, + customColorRows = 2 +}; + bool QColorDialogPrivate::selectColor(const QColor &col) { QRgb color = col.rgb(); - int i = 0, j = 0; // Check standard colors if (standard) { const QRgb *standardColors = QColorDialogOptions::standardColors(); - for (i = 0; i < 6; i++) { - for (j = 0; j < 8; j++) { - if (color == standardColors[i + j*6]) { - _q_newStandard(i, j); - standard->setCurrent(i, j); - standard->setSelected(i, j); - standard->setFocus(); - return true; - } - } + const QRgb *standardColorsEnd = standardColors + standardColorRows * colorColumns; + const QRgb *match = std::find(standardColors, standardColorsEnd, color); + if (match != standardColorsEnd) { + const int index = int(match - standardColors); + const int row = index / standardColorRows; + const int column = index % standardColorRows; + _q_newStandard(row, column); + standard->setCurrent(row, column); + standard->setSelected(row, column); + standard->setFocus(); + return true; } } // Check custom colors if (custom) { const QRgb *customColors = QColorDialogOptions::customColors(); - for (i = 0; i < 2; i++) { - for (j = 0; j < 8; j++) { - if (color == customColors[i + j*2]) { - _q_newCustom(i, j); - custom->setCurrent(i, j); - custom->setSelected(i, j); - custom->setFocus(); - return true; - } - } + const QRgb *customColorsEnd = customColors + customColorRows * colorColumns; + const QRgb *match = std::find(customColors, customColorsEnd, color); + if (match != customColorsEnd) { + const int index = int(match - customColors); + const int row = index / customColorRows; + const int column = index % customColorRows; + _q_newCustom(row, column); + custom->setCurrent(row, column); + custom->setSelected(row, column); + custom->setFocus(); + return true; } } return false; @@ -1519,12 +1535,12 @@ void QColorDialogPrivate::_q_newColorTypedIn(QRgb rgb) void QColorDialogPrivate::_q_nextCustom(int r, int c) { - nextCust = r + 2 * c; + nextCust = r + customColorRows * c; } void QColorDialogPrivate::_q_newCustom(int r, int c) { - const int i = r + 2 * c; + const int i = r + customColorRows * c; setCurrentRgbColor(QColorDialogOptions::customColor(i)); if (standard) standard->setSelected(-1,-1); @@ -1545,12 +1561,10 @@ void QColorDialogPrivate::_q_pickScreenColor() q->installEventFilter(colorPickingEventFilter); // If user pushes Escape, the last color before picking will be restored. beforeScreenColorPicking = cs->currentColor(); - /*For some reason, q->grabMouse(Qt::CrossCursor) doesn't change - * the cursor, and therefore I have to change it manually. - */ - q->grabMouse(); #ifndef QT_NO_CURSOR - q->setCursor(Qt::CrossCursor); + q->grabMouse(Qt::CrossCursor); +#else + q->grabMouse(); #endif q->grabKeyboard(); /* With setMouseTracking(true) the desired color can be more precisedly picked up, @@ -1575,9 +1589,6 @@ void QColorDialogPrivate::releaseColorPicking() q->removeEventFilter(colorPickingEventFilter); q->releaseMouse(); q->releaseKeyboard(); -#ifndef QT_NO_CURSOR - q->setCursor(Qt::ArrowCursor); -#endif q->setMouseTracking(false); lblScreenColorInfo->setText(QLatin1String("\n")); addCusBt->setDisabled(false); @@ -1635,7 +1646,7 @@ void QColorDialogPrivate::initWidgets() } if (!smallDisplay) { - standard = new QColorWell(q, 6, 8, QColorDialogOptions::standardColors()); + standard = new QColorWell(q, standardColorRows, colorColumns, QColorDialogOptions::standardColors()); lblBasicColors = new QLabel(q); #ifndef QT_NO_SHORTCUT lblBasicColors->setBuddy(standard); @@ -1657,7 +1668,7 @@ void QColorDialogPrivate::initWidgets() leftLay->addStretch(); #endif - custom = new QColorWell(q, 2, 8, QColorDialogOptions::customColors()); + custom = new QColorWell(q, customColorRows, colorColumns, QColorDialogOptions::customColors()); custom->setAcceptDrops(true); q->connect(custom, SIGNAL(selected(int,int)), SLOT(_q_newCustom(int,int))); diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 6349bdc301..e3e4a58333 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -39,6 +39,8 @@ ** ****************************************************************************/ +#define QT_NO_URL_CAST_FROM_STRING + #include <qvariant.h> #include <private/qwidgetitemdata_p.h> #include "qfiledialog.h" @@ -2028,26 +2030,6 @@ QString QFileDialog::labelText(DialogLabel label) const return QString(); } -/* - For the native file dialogs -*/ - -#if defined(Q_WS_WIN) -extern QString qt_win_get_open_file_name(const QFileDialogArgs &args, - QString *initialDirectory, - QString *selectedFilter); - -extern QString qt_win_get_save_file_name(const QFileDialogArgs &args, - QString *initialDirectory, - QString *selectedFilter); - -extern QStringList qt_win_get_open_file_names(const QFileDialogArgs &args, - QString *initialDirectory, - QString *selectedFilter); - -extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); -#endif - /*! This is a convenience static function that returns an existing file selected by the user. If the user presses Cancel, it returns a null string. @@ -2110,13 +2092,7 @@ QString QFileDialog::getOpenFileName(QWidget *parent, args.filter = filter; args.mode = ExistingFile; args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog)) { - return qt_win_get_open_file_name(args, &(args.directory), selectedFilter); - } -#endif - // create a qt dialog QFileDialog dialog(args); if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); @@ -2239,13 +2215,6 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, args.mode = ExistingFiles; args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog)) { - return qt_win_get_open_file_names(args, &(args.directory), selectedFilter); - } -#endif - - // create a qt dialog QFileDialog dialog(args); if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); @@ -2371,13 +2340,6 @@ QString QFileDialog::getSaveFileName(QWidget *parent, args.mode = AnyFile; args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog)) { - return qt_win_get_save_file_name(args, &(args.directory), selectedFilter); - } -#endif - - // create a qt dialog QFileDialog dialog(args); dialog.setAcceptMode(AcceptSave); if (selectedFilter && !selectedFilter->isEmpty()) @@ -2483,17 +2445,6 @@ QString QFileDialog::getExistingDirectory(QWidget *parent, args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory); args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog) && (options & ShowDirsOnly) -#if defined(Q_OS_WINCE) - && qt_priv_ptr_valid -#endif - ) { - return qt_win_get_existing_directory(args); - } -#endif - - // create a qt dialog QFileDialog dialog(args); if (dialog.exec() == QDialog::Accepted) { return dialog.selectedFiles().value(0); diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h index 632bbca5a4..c20dd36953 100644 --- a/src/widgets/dialogs/qfiledialog_p.h +++ b/src/widgets/dialogs/qfiledialog_p.h @@ -369,7 +369,7 @@ inline QUrl QFileDialogPrivate::directory_sys() const { if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) return helper->directory(); - return QString(); + return QUrl(); } inline void QFileDialogPrivate::selectFile_sys(const QUrl &filename) diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index b294e98c30..15f922a5b8 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -1475,7 +1475,7 @@ void QWizardPrivate::updateButtonTexts() void QWizardPrivate::updateButtonLayout() { if (buttonsHaveCustomLayout) { - QVarLengthArray<QWizard::WizardButton> array(buttonsCustomLayout.count()); + QVarLengthArray<QWizard::WizardButton, QWizard::NButtons> array(buttonsCustomLayout.count()); for (int i = 0; i < buttonsCustomLayout.count(); ++i) array[i] = buttonsCustomLayout.at(i); setButtonLayout(array.constData(), array.count()); |