diff --git a/src/libs/utils/wizard.cpp b/src/libs/utils/wizard.cpp index 90d7a1746b2a744c22357673a82c5b4156535e3c..2c6340e1184848f6bf659c4d2f7e8d47da56eb20 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 94993deb30aec23905048cdca6bee73216b32157..e116637a449877ae65fe9743030c4dfb5fef4e21 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 dfb3ff6b50c47d7018b4cabb131bd78be432f014..ed63b5351b0ad24a41e3a25b85cf7ffda4401e2b 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 32f47d96e35bf999f2916d1058f577b70c611dd8..7dc8d1b0d9b68cdec652a6b1c363984a284b4513 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 dbc6878f5206d1abd0848b203c913a983f562ea8..6037198d1123be2cd209efeb27a42de0ba57c7db 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 4ebaf0f557fe4e587f7aa2c94e7b2485ebda092d..63b2461b0829362bb83a383e6441b6d5ccf4e332 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 8ada0a6ddd188245e0ae7bd3a67fde0ac59f6b5c..e7807197ce4ae1799b44cd5befe4d44669be68fb 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 25c43e6048ec9ca7dd33cd46ff4a04b65531b786..7bd2b84f5f461ebc8a93cd91b7de67a19fd29742 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))); }