From 6954d898933865c993b4f4e0bce4e697a9b1341c Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Wed, 27 Oct 2010 12:51:33 +0200 Subject: [PATCH] Fix replacement of variables in wizard parameters. This was broken in case of no targets page being used, and using the project name variable in default values for wizard parameters in the page following the intro page (like it is done in the hello world wizard). Reviewed-by: Friedemann Kleint --- src/libs/utils/wizard.cpp | 6 ++++++ src/libs/utils/wizard.h | 5 +++++ .../projectexplorer/baseprojectwizarddialog.cpp | 13 +++++-------- .../projectexplorer/baseprojectwizarddialog.h | 4 ++-- .../projectexplorer/customwizard/customwizard.cpp | 4 ++-- .../projectexplorer/customwizard/customwizard.h | 2 +- .../wizards/abstractmobileappwizard.cpp | 2 +- src/plugins/qt4projectmanager/wizards/qtwizard.cpp | 2 +- 8 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/libs/utils/wizard.cpp b/src/libs/utils/wizard.cpp index 90d7a1746b2..2c6340e1184 100644 --- a/src/libs/utils/wizard.cpp +++ b/src/libs/utils/wizard.cpp @@ -337,6 +337,12 @@ WizardProgress *Wizard::wizardProgress() const return d->m_wizardProgress; } +bool Wizard::validateCurrentPage() +{ + emit nextClicked(); + return QWizard::validateCurrentPage(); +} + void Wizard::_q_currentPageChanged(int pageId) { Q_D(Wizard); diff --git a/src/libs/utils/wizard.h b/src/libs/utils/wizard.h index 94993deb30a..e116637a449 100644 --- a/src/libs/utils/wizard.h +++ b/src/libs/utils/wizard.h @@ -57,6 +57,11 @@ public: void setStartId(int pageId); WizardProgress *wizardProgress() const; + virtual bool validateCurrentPage(); + +signals: + void nextClicked(); /* workaround for QWizard behavior where page->initialize is + called before currentIdChanged */ private slots: void _q_currentPageChanged(int pageId); diff --git a/src/plugins/projectexplorer/baseprojectwizarddialog.cpp b/src/plugins/projectexplorer/baseprojectwizarddialog.cpp index dfb3ff6b50c..ed63b5351b0 100644 --- a/src/plugins/projectexplorer/baseprojectwizarddialog.cpp +++ b/src/plugins/projectexplorer/baseprojectwizarddialog.cpp @@ -44,14 +44,12 @@ struct BaseProjectWizardDialogPrivate { const int desiredIntroPageId; Utils::ProjectIntroPage *introPage; int introPageId; - int lastId; }; BaseProjectWizardDialogPrivate::BaseProjectWizardDialogPrivate(Utils::ProjectIntroPage *page, int id) : desiredIntroPageId(id), introPage(page), - introPageId(-1), - lastId(-1) + introPageId(-1) { } @@ -82,7 +80,7 @@ void BaseProjectWizardDialog::init() } wizardProgress()->item(d->introPageId)->setTitle(tr("Location")); connect(this, SIGNAL(accepted()), this, SLOT(slotAccepted())); - connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotBaseCurrentIdChanged(int))); + connect(this, SIGNAL(nextClicked()), this, SLOT(nextClicked())); } BaseProjectWizardDialog::~BaseProjectWizardDialog() @@ -125,12 +123,11 @@ void BaseProjectWizardDialog::slotAccepted() } } -void BaseProjectWizardDialog::slotBaseCurrentIdChanged(int id) +void BaseProjectWizardDialog::nextClicked() { - if (d->lastId == d->introPageId) { - emit introPageLeft(d->introPage->projectName(), d->introPage->path()); + if (currentId() == d->introPageId) { + emit projectParametersChanged(d->introPage->projectName(), d->introPage->path()); } - d->lastId = id; } Utils::ProjectIntroPage *BaseProjectWizardDialog::introPage() const diff --git a/src/plugins/projectexplorer/baseprojectwizarddialog.h b/src/plugins/projectexplorer/baseprojectwizarddialog.h index 32f47d96e35..7dc8d1b0d9b 100644 --- a/src/plugins/projectexplorer/baseprojectwizarddialog.h +++ b/src/plugins/projectexplorer/baseprojectwizarddialog.h @@ -73,14 +73,14 @@ public slots: void setProjectName(const QString &name); signals: - void introPageLeft(const QString &projectName, const QString &path); + void projectParametersChanged(const QString &projectName, const QString &path); protected: Utils::ProjectIntroPage *introPage() const; private slots: void slotAccepted(); - void slotBaseCurrentIdChanged(int); + void nextClicked(); private: void init(); diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp index dbc6878f520..6037198d112 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp @@ -503,7 +503,7 @@ void CustomProjectWizard::initProjectWizardDialog(BaseProjectWizardDialog *w, w->setPath(defaultPath); w->setProjectName(BaseProjectWizardDialog::uniqueProjectName(defaultPath)); - connect(w, SIGNAL(introPageLeft(QString,QString)), this, SLOT(introPageLeft(QString,QString))); + connect(w, SIGNAL(projectParametersChanged(QString,QString)), this, SLOT(projectParametersChanged(QString,QString))); if (CustomWizardPrivate::verbose) qDebug() << "initProjectWizardDialog" << w << w->pageIds(); @@ -549,7 +549,7 @@ bool CustomProjectWizard::postGenerateFiles(const QWizard *, const Core::Generat return CustomProjectWizard::postGenerateOpen(l, errorMessage); } -void CustomProjectWizard::introPageLeft(const QString &project, const QString & path) +void CustomProjectWizard::projectParametersChanged(const QString &project, const QString & path) { // Make '%ProjectName%' available in base replacements. context()->baseReplacements.insert(QLatin1String("ProjectName"), project); diff --git a/src/plugins/projectexplorer/customwizard/customwizard.h b/src/plugins/projectexplorer/customwizard/customwizard.h index 4ebaf0f557f..63b2461b082 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.h +++ b/src/plugins/projectexplorer/customwizard/customwizard.h @@ -170,7 +170,7 @@ protected: const WizardPageList &extensionPages) const; private slots: - void introPageLeft(const QString &project, const QString &path); + void projectParametersChanged(const QString &project, const QString &path); }; } // namespace ProjectExplorer diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp index 8ada0a6ddd1..e7807197ce4 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp @@ -72,7 +72,7 @@ QWizard *AbstractMobileAppWizard::createWizardDialog(QWidget *parent, wdlg->m_optionsPage->setMaemoPngIcon(app()->maemoPngIcon()); wdlg->m_optionsPage->setOrientation(app()->orientation()); wdlg->m_optionsPage->setNetworkEnabled(app()->networkEnabled()); - connect(wdlg, SIGNAL(introPageLeft(QString, QString)), + connect(wdlg, SIGNAL(projectParametersChanged(QString, QString)), SLOT(useProjectPath(QString, QString))); foreach (QWizardPage *p, extensionPages) BaseFileWizard::applyExtensionPageShortTitle(wdlg, wdlg->addPage(p)); diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp index 25c43e6048e..7bd2b84f5f4 100644 --- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp @@ -212,7 +212,7 @@ void BaseQt4ProjectWizardDialog::init(bool showModulesPage) { if (showModulesPage) m_modulesPage = new ModulesPage; - connect(this, SIGNAL(introPageLeft(QString,QString)), + connect(this, SIGNAL(projectParametersChanged(QString,QString)), this, SLOT(generateProfileName(QString,QString))); } -- GitLab