From 9a6b005b53c7ee0f55230be5d1f21d8cc0eeb51d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 8 Oct 2013 13:31:19 +0200 Subject: QWizard: give all buttons an objectName Only Commit, Finish and Cancel didn't have an object name, yet. Also Extract Method on the switch statement, add a test, and use QStringBuilder. Task-number: QTBUG-29924 Reported-by: Leo Arias Change-Id: I8c29606bc53e9d4caab631da2089e971a9da2d75 Reviewed-by: Friedemann Kleint (cherry picked from qtbase/1ea191276ea49ce2334d21b1f4a2c66ee8889466) --- src/gui/dialogs/qwizard.cpp | 29 ++++++++++++++------------ tests/auto/qwizard/tst_qwizard.cpp | 42 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/src/gui/dialogs/qwizard.cpp b/src/gui/dialogs/qwizard.cpp index fbc7a79..20c9edc 100644 --- a/src/gui/dialogs/qwizard.cpp +++ b/src/gui/dialogs/qwizard.cpp @@ -1350,6 +1350,21 @@ void QWizardPrivate::updateCurrentPage() updateButtonTexts(); } +static QString object_name_for_button(QWizard::WizardButton which) +{ + switch (which) { + case QWizard::CommitButton: + return QLatin1String("qt_wizard_") + QLatin1String("commit"); + case QWizard::FinishButton: + return QLatin1String("qt_wizard_") + QLatin1String("finish"); + case QWizard::CancelButton: + return QLatin1String("qt_wizard_") + QLatin1String("cancel"); + default: + // Make navigation buttons detectable as passive interactor in designer + return QLatin1String("__qt__passive_wizardbutton") + QString::number(which); + } +} + bool QWizardPrivate::ensureButton(QWizard::WizardButton which) const { Q_Q(const QWizard); @@ -1361,19 +1376,7 @@ bool QWizardPrivate::ensureButton(QWizard::WizardButton which) const QStyle *style = q->style(); if (style != QApplication::style()) // Propagate style pushButton->setStyle(style); - // Make navigation buttons detectable as passive interactor in designer - switch (which) { - case QWizard::CommitButton: - case QWizard::FinishButton: - case QWizard::CancelButton: - break; - default: { - QString objectName = QLatin1String("__qt__passive_wizardbutton"); - objectName += QString::number(which); - pushButton->setObjectName(objectName); - } - break; - } + pushButton->setObjectName(object_name_for_button(which)); #ifdef Q_WS_MAC pushButton->setAutoDefault(false); #endif diff --git a/tests/auto/qwizard/tst_qwizard.cpp b/tests/auto/qwizard/tst_qwizard.cpp index 54693b8..0439bd9 100644 --- a/tests/auto/qwizard/tst_qwizard.cpp +++ b/tests/auto/qwizard/tst_qwizard.cpp @@ -57,6 +57,8 @@ //TESTED_CLASS= //TESTED_FILES= +Q_DECLARE_METATYPE(QWizard::WizardButton); + static QImage grabWidget(QWidget *window) { return QPixmap::grabWidget(window).toImage(); @@ -105,6 +107,8 @@ private slots: void setWizardStyle(); void removePage(); void sideWidget(); + void objectNames_data(); + void objectNames(); // task-specific tests below me: void task161660_buttonSpacing(); @@ -2414,6 +2418,44 @@ void tst_QWizard::task161660_buttonSpacing() #endif } +void tst_QWizard::objectNames_data() +{ + QTest::addColumn("wizardButton"); + QTest::addColumn("buttonName"); + + QTest::newRow("BackButton") << QWizard::BackButton << QString::fromLatin1("__qt__passive_wizardbutton0"); + QTest::newRow("NextButton") << QWizard::NextButton << QString::fromLatin1("__qt__passive_wizardbutton1"); + QTest::newRow("CommitButton") << QWizard::CommitButton << QString::fromLatin1("qt_wizard_commit"); + QTest::newRow("FinishButton") << QWizard::FinishButton << QString::fromLatin1("qt_wizard_finish"); + QTest::newRow("CancelButton") << QWizard::CancelButton << QString::fromLatin1("qt_wizard_cancel"); + QTest::newRow("HelpButton") << QWizard::HelpButton << QString::fromLatin1("__qt__passive_wizardbutton5"); + QTest::newRow("CustomButton1") << QWizard::CustomButton1 << QString::fromLatin1("__qt__passive_wizardbutton6"); + QTest::newRow("CustomButton2") << QWizard::CustomButton2 << QString::fromLatin1("__qt__passive_wizardbutton7"); + QTest::newRow("CustomButton3") << QWizard::CustomButton3 << QString::fromLatin1("__qt__passive_wizardbutton8"); +} + +void tst_QWizard::objectNames() +{ + QFETCH(QWizard::WizardButton, wizardButton); + QFETCH(QString, buttonName); + + QWizard wizard; + QList buttons = QList() + << QWizard::BackButton + << QWizard::NextButton + << QWizard::CommitButton + << QWizard::FinishButton + << QWizard::CancelButton + << QWizard::HelpButton + << QWizard::CustomButton1 + << QWizard::CustomButton2 + << QWizard::CustomButton3 + ; + QVERIFY(buttons.contains(wizardButton)); + QVERIFY(wizard.button(wizardButton)); + QCOMPARE(wizard.button(wizardButton)->objectName(), buttonName); +} + class task177716_CommitPage : public QWizardPage { Q_OBJECT -- cgit v0.12