diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2014-05-05 17:56:54 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2014-05-26 11:44:43 +0200 |
commit | 8e126df5459f2eea2a1736bd804d6f670bc18ba7 (patch) | |
tree | 6157d9605c7738e253193250e93fe45b0732f86d | |
parent | 719d39d372b2962147e97cdb243b9fb47d8d1fa8 (diff) | |
download | qt-creator-8e126df5459f2eea2a1736bd804d6f670bc18ba7.tar.gz |
BaseCheckoutWizard*: Move createCommand from factory into Wizard
Change-Id: I0dcc931f279b59f0d6cf7afb553a2fed30baae7a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r-- | src/plugins/bazaar/bazaarclient.h | 2 | ||||
-rw-r--r-- | src/plugins/bazaar/clonewizard.cpp | 55 | ||||
-rw-r--r-- | src/plugins/bazaar/clonewizard.h | 7 | ||||
-rw-r--r-- | src/plugins/cvs/checkoutwizard.cpp | 41 | ||||
-rw-r--r-- | src/plugins/cvs/checkoutwizard.h | 8 | ||||
-rw-r--r-- | src/plugins/git/clonewizard.cpp | 27 | ||||
-rw-r--r-- | src/plugins/git/clonewizard.h | 8 | ||||
-rw-r--r-- | src/plugins/git/gitorious/gitoriousclonewizard.cpp | 23 | ||||
-rw-r--r-- | src/plugins/git/gitorious/gitoriousclonewizard.h | 8 | ||||
-rw-r--r-- | src/plugins/mercurial/clonewizard.cpp | 51 | ||||
-rw-r--r-- | src/plugins/mercurial/clonewizard.h | 7 | ||||
-rw-r--r-- | src/plugins/subversion/checkoutwizard.cpp | 42 | ||||
-rw-r--r-- | src/plugins/subversion/checkoutwizard.h | 8 | ||||
-rw-r--r-- | src/plugins/vcsbase/basecheckoutwizard.cpp | 27 | ||||
-rw-r--r-- | src/plugins/vcsbase/basecheckoutwizard.h | 9 | ||||
-rw-r--r-- | src/plugins/vcsbase/basecheckoutwizardfactory.cpp | 16 | ||||
-rw-r--r-- | src/plugins/vcsbase/basecheckoutwizardfactory.h | 7 |
17 files changed, 160 insertions, 186 deletions
diff --git a/src/plugins/bazaar/bazaarclient.h b/src/plugins/bazaar/bazaarclient.h index 06e717b4f4..8896d933fa 100644 --- a/src/plugins/bazaar/bazaarclient.h +++ b/src/plugins/bazaar/bazaarclient.h @@ -76,7 +76,7 @@ protected: StatusItem parseStatusLine(const QString &line) const; private: - friend class CloneWizardFactory; + friend class CloneWizard; }; } // namespace Internal diff --git a/src/plugins/bazaar/clonewizard.cpp b/src/plugins/bazaar/clonewizard.cpp index d6226e0096..ec89f684eb 100644 --- a/src/plugins/bazaar/clonewizard.cpp +++ b/src/plugins/bazaar/clonewizard.cpp @@ -56,22 +56,39 @@ VcsBase::BaseCheckoutWizard *CloneWizardFactory::create(const QString &path, QWi return new CloneWizard(path, parent); } -VcsBase::Command *CloneWizardFactory::createCommand(const QList<QWizardPage *> ¶meterPages, - QString *checkoutPath) +// -------------------------------------------------------------------- +// CloneWizard: +// -------------------------------------------------------------------- + +CloneWizard::CloneWizard(const QString &path, QWidget *parent) : + VcsBase::BaseCheckoutWizard(path, parent) +{ + setTitle(tr("Cloning")); + setStartedStatus(tr("Cloning started...")); + + const Core::IVersionControl *vc = BazaarPlugin::instance()->versionControl(); + if (!vc->isConfigured()) + addPage(new VcsBase::VcsConfigurationPage(vc)); + CloneWizardPage *page = new CloneWizardPage; + page->setPath(path); + addPage(page); +} + +VcsBase::Command *CloneWizard::createCommand(QString *checkoutDir) { - const CloneWizardPage *page = 0; - foreach (QWizardPage *p, parameterPages) { - if ((page = qobject_cast<const CloneWizardPage *>(p))) + const CloneWizardPage *cwp = 0; + foreach (int pageId, pageIds()) { + if ((cwp = qobject_cast<const CloneWizardPage *>(page(pageId)))) break; } - if (!page) + if (!cwp) return 0; const BazaarSettings &settings = BazaarPlugin::instance()->settings(); - *checkoutPath = page->path() + QLatin1Char('/') + page->directory(); + *checkoutDir = cwp->path() + QLatin1Char('/') + cwp->directory(); - const CloneOptionsPanel *panel = page->cloneOptionsPanel(); + const CloneOptionsPanel *panel = cwp->cloneOptionsPanel(); QStringList extraOptions; if (panel->isUseExistingDirectoryOptionEnabled()) extraOptions += QLatin1String("--use-existing-dir"); @@ -92,28 +109,10 @@ VcsBase::Command *CloneWizardFactory::createCommand(const QList<QWizardPage *> & const BazaarClient *client = BazaarPlugin::instance()->client(); QStringList args; args << client->vcsCommandString(BazaarClient::CloneCommand) - << extraOptions << page->repository() << page->directory(); + << extraOptions << cwp->repository() << cwp->directory(); - VcsBase::Command *command = new VcsBase::Command(settings.binaryPath(), page->path(), + VcsBase::Command *command = new VcsBase::Command(settings.binaryPath(), cwp->path(), client->processEnvironment()); command->addJob(args, -1); return command; } - -// -------------------------------------------------------------------- -// CloneWizard: -// -------------------------------------------------------------------- - -CloneWizard::CloneWizard(const QString &path, QWidget *parent) : - VcsBase::BaseCheckoutWizard(path, parent) -{ - setTitle(tr("Cloning")); - setStartedStatus(tr("Cloning started...")); - - const Core::IVersionControl *vc = BazaarPlugin::instance()->versionControl(); - if (!vc->isConfigured()) - addPage(new VcsBase::VcsConfigurationPage(vc)); - CloneWizardPage *page = new CloneWizardPage; - page->setPath(path); - addPage(page); -} diff --git a/src/plugins/bazaar/clonewizard.h b/src/plugins/bazaar/clonewizard.h index e374646863..b0bf361693 100644 --- a/src/plugins/bazaar/clonewizard.h +++ b/src/plugins/bazaar/clonewizard.h @@ -46,10 +46,6 @@ public: CloneWizardFactory(); VcsBase::BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const; - -private: - VcsBase::Command *createCommand(const QList<QWizardPage *> ¶meterPages, - QString *checkoutPath); }; class CloneWizard : public VcsBase::BaseCheckoutWizard @@ -58,6 +54,9 @@ class CloneWizard : public VcsBase::BaseCheckoutWizard public: CloneWizard(const QString &path, QWidget *parent = 0); + +protected: + VcsBase::Command *createCommand(QString *checkoutDir); }; } // namespace Internal diff --git a/src/plugins/cvs/checkoutwizard.cpp b/src/plugins/cvs/checkoutwizard.cpp index 0a53683647..d37aeff212 100644 --- a/src/plugins/cvs/checkoutwizard.cpp +++ b/src/plugins/cvs/checkoutwizard.cpp @@ -53,24 +53,40 @@ VcsBase::BaseCheckoutWizard *CheckoutWizardFactory::create(const QString &path, return new CheckoutWizard(path, parent); } -VcsBase::Command *CheckoutWizardFactory::createCommand(const QList<QWizardPage*> ¶meterPages, - QString *checkoutPath) +// -------------------------------------------------------------------- +// CheckoutWizard: +// -------------------------------------------------------------------- + +CheckoutWizard::CheckoutWizard(const QString &path, QWidget *parent) : + VcsBase::BaseCheckoutWizard(path, parent) +{ + const Core::IVersionControl *vc = CvsPlugin::instance()->versionControl(); + if (!vc->isConfigured()) + addPage(new VcsBase::VcsConfigurationPage(vc)); + CheckoutWizardPage *cwp = new CheckoutWizardPage; + cwp->setPath(path); + addPage(cwp); +} + +VcsBase::Command *CheckoutWizard::createCommand(QString *checkoutDir) { // Collect parameters for the checkout command. // CVS does not allow for checking out into a different directory. const CheckoutWizardPage *cwp = 0; - foreach (QWizardPage *p, parameterPages) { - if ((cwp = qobject_cast<const CheckoutWizardPage *>(p))) + foreach (int pageId, pageIds()) { + if ((cwp = qobject_cast<const CheckoutWizardPage *>(page(pageId)))) break; } + QTC_ASSERT(cwp, return 0); const CvsSettings settings = CvsPlugin::instance()->settings(); const QString binary = settings.binaryPath(); QStringList args; + const QString repository = cwp->repository(); args << QLatin1String("checkout") << repository; const QString workingDirectory = cwp->path(); - *checkoutPath = workingDirectory + QLatin1Char('/') + repository; + *checkoutDir = workingDirectory + QLatin1Char('/') + repository; VcsBase::Command *command = new VcsBase::Command(binary, workingDirectory, QProcessEnvironment::systemEnvironment()); @@ -78,20 +94,5 @@ VcsBase::Command *CheckoutWizardFactory::createCommand(const QList<QWizardPage*> return command; } -// -------------------------------------------------------------------- -// CheckoutWizard: -// -------------------------------------------------------------------- - -CheckoutWizard::CheckoutWizard(const QString &path, QWidget *parent) : - VcsBase::BaseCheckoutWizard(path, parent) -{ - const Core::IVersionControl *vc = CvsPlugin::instance()->versionControl(); - if (!vc->isConfigured()) - addPage(new VcsBase::VcsConfigurationPage(vc)); - CheckoutWizardPage *cwp = new CheckoutWizardPage; - cwp->setPath(path); - addPage(cwp); -} - } // namespace Internal } // namespace Cvs diff --git a/src/plugins/cvs/checkoutwizard.h b/src/plugins/cvs/checkoutwizard.h index 14c36730cc..b57710ae93 100644 --- a/src/plugins/cvs/checkoutwizard.h +++ b/src/plugins/cvs/checkoutwizard.h @@ -44,11 +44,6 @@ public: CheckoutWizardFactory(); VcsBase::BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const; - -private: - // BaseCheckoutWizard - VcsBase::Command *createCommand(const QList<QWizardPage*> ¶meterPage, - QString *checkoutPath); }; class CheckoutWizard : public VcsBase::BaseCheckoutWizard @@ -57,6 +52,9 @@ class CheckoutWizard : public VcsBase::BaseCheckoutWizard public: CheckoutWizard(const QString &path, QWidget *parent = 0); + +protected: + VcsBase::Command *createCommand(QString *checkoutDir); }; } // namespace Internal diff --git a/src/plugins/git/clonewizard.cpp b/src/plugins/git/clonewizard.cpp index fd99944563..291c857b38 100644 --- a/src/plugins/git/clonewizard.cpp +++ b/src/plugins/git/clonewizard.cpp @@ -53,20 +53,6 @@ VcsBase::BaseCheckoutWizard *CloneWizardFactory::create(const QString &path, QWi return new CloneWizard(path, parent); } -VcsBase::Command *CloneWizardFactory::createCommand(const QList<QWizardPage*> ¶meterPages, - QString *checkoutPath) -{ - // Collect parameters for the clone command. - const CloneWizardPage *cwp = 0; - foreach (QWizardPage *wp, parameterPages) { - if ((cwp = qobject_cast<const CloneWizardPage *>(wp))) - break; - } - - QTC_ASSERT(cwp, return 0); - return cwp->createCheckoutJob(checkoutPath); -} - // -------------------------------------------------------------------- // CloneWizard: // -------------------------------------------------------------------- @@ -85,5 +71,18 @@ CloneWizard::CloneWizard(const QString &path, QWidget *parent) : addPage(cwp); } +VcsBase::Command *CloneWizard::createCommand(QString *checkoutDir) +{ + // Collect parameters for the clone command. + const CloneWizardPage *cwp = 0; + foreach (int pageId, pageIds()) { + if ((cwp = qobject_cast<const CloneWizardPage *>(page(pageId)))) + break; + } + + QTC_ASSERT(cwp, return 0); + return cwp->createCheckoutJob(checkoutDir); +} + } // namespace Internal } // namespace Git diff --git a/src/plugins/git/clonewizard.h b/src/plugins/git/clonewizard.h index dffce65b10..95c62a15da 100644 --- a/src/plugins/git/clonewizard.h +++ b/src/plugins/git/clonewizard.h @@ -44,11 +44,6 @@ public: CloneWizardFactory(); VcsBase::BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const; - -private: - // BaseCheckoutWizard - VcsBase::Command *createCommand(const QList<QWizardPage*> ¶meterPages, - QString *checkoutPath); }; class CloneWizard : public VcsBase::BaseCheckoutWizard @@ -57,6 +52,9 @@ class CloneWizard : public VcsBase::BaseCheckoutWizard public: CloneWizard(const QString &path, QWidget *parent = 0); + +protected: + VcsBase::Command *createCommand(QString *checkoutDir); }; } // namespace Internal diff --git a/src/plugins/git/gitorious/gitoriousclonewizard.cpp b/src/plugins/git/gitorious/gitoriousclonewizard.cpp index 4224a0e4d4..d11051d517 100644 --- a/src/plugins/git/gitorious/gitoriousclonewizard.cpp +++ b/src/plugins/git/gitorious/gitoriousclonewizard.cpp @@ -82,18 +82,6 @@ VcsBase::BaseCheckoutWizard *GitoriousCloneWizardFactory::create(const QString & return new GitoriousCloneWizard(path, parent); } -VcsBase::Command *GitoriousCloneWizardFactory::createCommand(const QList<QWizardPage*> ¶meterPages, - QString *checkoutPath) -{ - const Git::CloneWizardPage *cwp = 0; - foreach (QWizardPage *p, parameterPages) { - if ((cwp = qobject_cast<const Git::CloneWizardPage *>(p))) - break; - } - QTC_ASSERT(cwp, return 0); - return cwp->createCheckoutJob(checkoutPath); -} - // -------------------------------------------------------------------- // GitoriousCloneWizard: // -------------------------------------------------------------------- @@ -120,5 +108,16 @@ GitoriousCloneWizard::GitoriousCloneWizard(const QString &path, QWidget *parent) addPage(clonePage); } +VcsBase::Command *GitoriousCloneWizard::createCommand(QString *checkoutDir) +{ + const Git::CloneWizardPage *cwp = 0; + foreach (int pageId, pageIds()) { + if ((cwp = qobject_cast<const Git::CloneWizardPage *>(page(pageId)))) + break; + } + QTC_ASSERT(cwp, return 0); + return cwp->createCheckoutJob(checkoutDir); +} + } // namespace Internal } // namespace Gitorius diff --git a/src/plugins/git/gitorious/gitoriousclonewizard.h b/src/plugins/git/gitorious/gitoriousclonewizard.h index 7f35f18fb2..22dfac6de6 100644 --- a/src/plugins/git/gitorious/gitoriousclonewizard.h +++ b/src/plugins/git/gitorious/gitoriousclonewizard.h @@ -46,11 +46,6 @@ public: GitoriousCloneWizardFactory(); VcsBase::BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const; - -private: - // BaseCheckoutWizard - VcsBase::Command *createCommand(const QList<QWizardPage*> ¶meterPages, - QString *checkoutPath); }; class GitoriousCloneWizard : public VcsBase::BaseCheckoutWizard @@ -59,6 +54,9 @@ class GitoriousCloneWizard : public VcsBase::BaseCheckoutWizard public: GitoriousCloneWizard(const QString &path, QWidget *parent = 0); + +protected: + VcsBase::Command *createCommand(QString *checkoutDir); }; diff --git a/src/plugins/mercurial/clonewizard.cpp b/src/plugins/mercurial/clonewizard.cpp index d6586b23aa..04a464d699 100644 --- a/src/plugins/mercurial/clonewizard.cpp +++ b/src/plugins/mercurial/clonewizard.cpp @@ -53,32 +53,6 @@ BaseCheckoutWizard *CloneWizardFactory::create(const QString &path, QWidget *par return new CloneWizard(path, parent); } -Command *CloneWizardFactory::createCommand(const QList<QWizardPage *> ¶meterPages, - QString *checkoutPath) -{ - const CloneWizardPage *page = 0; - foreach (QWizardPage *p, parameterPages) { - if ((page = qobject_cast<const CloneWizardPage *>(p))) - break; - } - - if (!page) - return 0; - - const MercurialSettings &settings = MercurialPlugin::settings(); - - QString path = page->path(); - QString directory = page->directory(); - - QStringList args; - args << QLatin1String("clone") << page->repository() << directory; - *checkoutPath = path + QLatin1Char('/') + directory; - VcsBase::Command *command = new VcsBase::Command(settings.binaryPath(), path, - QProcessEnvironment::systemEnvironment()); - command->addJob(args, -1); - return command; -} - // -------------------------------------------------------------------- // CloneWizard: // -------------------------------------------------------------------- @@ -96,3 +70,28 @@ CloneWizard::CloneWizard(const QString &path, QWidget *parent) : page->setPath(path); addPage(page); } + +Command *CloneWizard::createCommand(QString *checkoutDir) +{ + const CloneWizardPage *cwp = 0; + foreach (int pageId, pageIds()) { + if ((cwp = qobject_cast<const CloneWizardPage *>(page(pageId)))) + break; + } + + if (!cwp) + return 0; + + const MercurialSettings &settings = MercurialPlugin::settings(); + + QString path = cwp->path(); + QString directory = cwp->directory(); + + QStringList args; + args << QLatin1String("clone") << cwp->repository() << directory; + *checkoutDir = path + QLatin1Char('/') + directory; + VcsBase::Command *command = new VcsBase::Command(settings.binaryPath(), path, + QProcessEnvironment::systemEnvironment()); + command->addJob(args, -1); + return command; +} diff --git a/src/plugins/mercurial/clonewizard.h b/src/plugins/mercurial/clonewizard.h index 3de79df304..73fdb5beaf 100644 --- a/src/plugins/mercurial/clonewizard.h +++ b/src/plugins/mercurial/clonewizard.h @@ -47,10 +47,6 @@ public: VcsBase::BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const; -protected: - VcsBase::Command *createCommand(const QList<QWizardPage *> ¶meterPages, - QString *checkoutPath); - private: const QIcon m_icon; }; @@ -61,6 +57,9 @@ class CloneWizard : public VcsBase::BaseCheckoutWizard public: CloneWizard(const QString &path, QWidget *parent = 0); + +protected: + VcsBase::Command *createCommand(QString *checkoutDir); }; } //namespace Internal diff --git a/src/plugins/subversion/checkoutwizard.cpp b/src/plugins/subversion/checkoutwizard.cpp index 7802adbeee..f58128e907 100644 --- a/src/plugins/subversion/checkoutwizard.cpp +++ b/src/plugins/subversion/checkoutwizard.cpp @@ -56,23 +56,40 @@ VcsBase::BaseCheckoutWizard *CheckoutWizardFactory::create(const QString &path, return new CheckoutWizard(path, parent); } -VcsBase::Command *CheckoutWizardFactory::createCommand(const QList<QWizardPage*> ¶meterPages, - QString *checkoutPath) +// -------------------------------------------------------------------- +// CheckoutWizard: +// -------------------------------------------------------------------- + +CheckoutWizard::CheckoutWizard(const QString &path, QWidget *parent) : + VcsBase::BaseCheckoutWizard(path, parent) +{ + const Core::IVersionControl *vc = SubversionPlugin::instance()->versionControl(); + if (!vc->isConfigured()) + addPage(new VcsBase::VcsConfigurationPage(vc)); + CheckoutWizardPage *cwp = new CheckoutWizardPage; + cwp->setPath(path); + addPage(cwp); +} + +VcsBase::Command *CheckoutWizard::createCommand(QString *checkoutDir) { // Collect parameters for the checkout command. const CheckoutWizardPage *cwp = 0; - foreach (const QWizardPage *p, parameterPages) { - if ((cwp = qobject_cast<const CheckoutWizardPage *>(p))) + foreach (int pageId, pageIds()) { + if ((cwp = qobject_cast<const CheckoutWizardPage *>(page(pageId)))) break; } QTC_ASSERT(cwp, return 0); + const SubversionSettings settings = SubversionPlugin::instance()->settings(); const QString binary = settings.binaryPath(); const QString directory = cwp->directory(); QStringList args; args << QLatin1String("checkout") << cwp->repository() << directory; const QString workingDirectory = cwp->path(); - *checkoutPath = workingDirectory + QLatin1Char('/') + directory; + + *checkoutDir = workingDirectory + QLatin1Char('/') + directory; + if (settings.hasAuthentication()) { const QString user = settings.stringValue(SubversionSettings::userKey); const QString pwd = settings.stringValue(SubversionSettings::passwordKey); @@ -84,20 +101,5 @@ VcsBase::Command *CheckoutWizardFactory::createCommand(const QList<QWizardPage*> return command; } -// -------------------------------------------------------------------- -// CheckoutWizard: -// -------------------------------------------------------------------- - -CheckoutWizard::CheckoutWizard(const QString &path, QWidget *parent) : - VcsBase::BaseCheckoutWizard(path, parent) -{ - const Core::IVersionControl *vc = SubversionPlugin::instance()->versionControl(); - if (!vc->isConfigured()) - addPage(new VcsBase::VcsConfigurationPage(vc)); - CheckoutWizardPage *cwp = new CheckoutWizardPage; - cwp->setPath(path); - addPage(cwp); -} - } // namespace Internal } // namespace Subversion diff --git a/src/plugins/subversion/checkoutwizard.h b/src/plugins/subversion/checkoutwizard.h index 26c99c7236..305ef0af30 100644 --- a/src/plugins/subversion/checkoutwizard.h +++ b/src/plugins/subversion/checkoutwizard.h @@ -44,11 +44,6 @@ public: CheckoutWizardFactory(); VcsBase::BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const; - -private: - // BaseCheckoutWizard - VcsBase::Command *createCommand(const QList<QWizardPage*> ¶meterPage, - QString *checkoutPath); }; class CheckoutWizard : public VcsBase::BaseCheckoutWizard @@ -57,6 +52,9 @@ class CheckoutWizard : public VcsBase::BaseCheckoutWizard public: CheckoutWizard(const QString &path, QWidget *parent = 0); + +protected: + VcsBase::Command *createCommand(QString *checkoutDir); }; } // namespace Internal diff --git a/src/plugins/vcsbase/basecheckoutwizard.cpp b/src/plugins/vcsbase/basecheckoutwizard.cpp index 67a432a911..4c15b8a272 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.cpp +++ b/src/plugins/vcsbase/basecheckoutwizard.cpp @@ -33,6 +33,8 @@ #include <coreplugin/basefilewizard.h> +#include <utils/qtcassert.h> + #include <QPushButton> /*! @@ -66,8 +68,15 @@ void BaseCheckoutWizard::setStartedStatus(const QString &title) void BaseCheckoutWizard::slotPageChanged(int id) { - if (id == m_progressPageId) - emit progressPageShown(); + if (id != m_progressPageId) + return; + + VcsBase::Command *cmd = createCommand(&m_checkoutDir); + QTC_ASSERT(cmd, done(QDialog::Rejected)); + + // No "back" available while running. + button(QWizard::BackButton)->setEnabled(false); + m_progressPage->start(cmd); } void BaseCheckoutWizard::slotTerminated(bool success) @@ -77,17 +86,13 @@ void BaseCheckoutWizard::slotTerminated(bool success) button(QWizard::BackButton)->setEnabled(true); } -void BaseCheckoutWizard::start(Command *command) -{ - // No "back" available while running. - button(QWizard::BackButton)->setEnabled(false); - m_progressPage->start(command); -} - -int BaseCheckoutWizard::exec() +QString BaseCheckoutWizard::run() { m_progressPageId = addPage(m_progressPage); - return Utils::Wizard::exec(); + if (Utils::Wizard::exec() == QDialog::Accepted) + return m_checkoutDir; + else + return QString(); } void BaseCheckoutWizard::reject() diff --git a/src/plugins/vcsbase/basecheckoutwizard.h b/src/plugins/vcsbase/basecheckoutwizard.h index d0269b9916..168424470c 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.h +++ b/src/plugins/vcsbase/basecheckoutwizard.h @@ -49,13 +49,11 @@ public: void setTitle(const QString &title); void setStartedStatus(const QString &title); - void start(VcsBase::Command *command); -public slots: - int exec(); + QString run(); -signals: - void progressPageShown(); +protected: + virtual VcsBase::Command *createCommand(QString *checkoutDir) = 0; private slots: void slotPageChanged(int id); @@ -65,6 +63,7 @@ private slots: private: Internal::CheckoutProgressWizardPage *m_progressPage; int m_progressPageId; + QString m_checkoutDir; }; } // namespace VcsBase diff --git a/src/plugins/vcsbase/basecheckoutwizardfactory.cpp b/src/plugins/vcsbase/basecheckoutwizardfactory.cpp index 8151f74609..632eec4fa4 100644 --- a/src/plugins/vcsbase/basecheckoutwizardfactory.cpp +++ b/src/plugins/vcsbase/basecheckoutwizardfactory.cpp @@ -71,14 +71,12 @@ public: void clear(); BaseCheckoutWizard *wizard; - QString checkoutPath; }; void BaseCheckoutWizardFactoryPrivate::clear() { delete wizard; wizard = 0; - checkoutPath.clear(); } } // namespace Internal @@ -107,14 +105,13 @@ void BaseCheckoutWizardFactory::runWizard(const QString &path, QWidget *parent, // Create dialog and launch d->wizard = create(path, parent); - connect(d->wizard, SIGNAL(progressPageShown()), this, SLOT(slotProgressPageShown())); d->wizard->setWindowTitle(displayName()); - if (d->wizard->exec() != QDialog::Accepted) { + const QString checkoutPath = d->wizard->run(); + if (checkoutPath.isEmpty()) { d->clear(); return; } // Now try to find the project file and open - const QString checkoutPath = d->checkoutPath; d->clear(); QString errorMessage; const QString projectFile = openProject(checkoutPath, &errorMessage); @@ -175,13 +172,4 @@ QString BaseCheckoutWizardFactory::openProject(const QString &path, QString *err return projectFile; } -void BaseCheckoutWizardFactory::slotProgressPageShown() -{ - QList<QWizardPage *> pages; - foreach (int id, d->wizard->pageIds()) - pages << d->wizard->page(id); - Command *command = createCommand(pages, &(d->checkoutPath)); - d->wizard->start(command); -} - } // namespace VcsBase diff --git a/src/plugins/vcsbase/basecheckoutwizardfactory.h b/src/plugins/vcsbase/basecheckoutwizardfactory.h index 7c6e5682c8..8da9522150 100644 --- a/src/plugins/vcsbase/basecheckoutwizardfactory.h +++ b/src/plugins/vcsbase/basecheckoutwizardfactory.h @@ -60,13 +60,6 @@ public: virtual BaseCheckoutWizard *create(const QString &path, QWidget *parent = 0) const = 0; -protected: - virtual Command *createCommand(const QList<QWizardPage *> ¶meterPages, - QString *checkoutPath) = 0; - -private slots: - void slotProgressPageShown(); - private: Internal::BaseCheckoutWizardFactoryPrivate *const d; }; |