diff --git a/src/plugins/bazaar/clonewizard.cpp b/src/plugins/bazaar/clonewizard.cpp index 76c5425b56a..054b40d9c87 100644 --- a/src/plugins/bazaar/clonewizard.cpp +++ b/src/plugins/bazaar/clonewizard.cpp @@ -52,6 +52,11 @@ CloneWizardFactory::CloneWizardFactory() setDisplayName(tr("Bazaar Clone (Or Branch)")); } +VcsBase::BaseCheckoutWizard *CloneWizardFactory::create(const QList ¶meterPages, QWidget *parent) const +{ + return new CloneWizard(parameterPages, parent); +} + QList CloneWizardFactory::createParameterPages(const QString &path) { QList wizardPageList; @@ -103,3 +108,11 @@ VcsBase::Command *CloneWizardFactory::createCommand(const QList & command->addJob(args, -1); return command; } + +// -------------------------------------------------------------------- +// CloneWizard: +// -------------------------------------------------------------------- + +CloneWizard::CloneWizard(const QList ¶meterPages, QWidget *parent) : + VcsBase::BaseCheckoutWizard(parameterPages, parent) +{ } diff --git a/src/plugins/bazaar/clonewizard.h b/src/plugins/bazaar/clonewizard.h index c60946f2b21..6f7e1f4dd6f 100644 --- a/src/plugins/bazaar/clonewizard.h +++ b/src/plugins/bazaar/clonewizard.h @@ -31,6 +31,7 @@ #define CLONEWIZARD_H #include +#include #include @@ -44,12 +45,22 @@ class CloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory public: CloneWizardFactory(); + VcsBase::BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const; + private: QList createParameterPages(const QString &path); VcsBase::Command *createCommand(const QList ¶meterPages, QString *checkoutPath); }; +class CloneWizard : public VcsBase::BaseCheckoutWizard +{ + Q_OBJECT + +public: + CloneWizard(const QList ¶meterPages, QWidget *parent = 0); +}; + } // namespace Internal } // namespace Bazaar diff --git a/src/plugins/cvs/checkoutwizard.cpp b/src/plugins/cvs/checkoutwizard.cpp index c86d9aa5d85..d80ce3653a5 100644 --- a/src/plugins/cvs/checkoutwizard.cpp +++ b/src/plugins/cvs/checkoutwizard.cpp @@ -48,6 +48,11 @@ CheckoutWizardFactory::CheckoutWizardFactory() setDisplayName(tr("CVS Checkout")); } +VcsBase::BaseCheckoutWizard *CheckoutWizardFactory::create(const QList ¶meterPages, QWidget *parent) const +{ + return new CheckoutWizard(parameterPages, parent); +} + QList CheckoutWizardFactory::createParameterPages(const QString &path) { QList rc; @@ -81,5 +86,13 @@ VcsBase::Command *CheckoutWizardFactory::createCommand(const QList return command; } +// -------------------------------------------------------------------- +// CheckoutWizard: +// -------------------------------------------------------------------- + +CheckoutWizard::CheckoutWizard(const QList ¶meterPages, QWidget *parent) : + VcsBase::BaseCheckoutWizard(parameterPages, parent) +{ } + } // namespace Internal } // namespace Cvs diff --git a/src/plugins/cvs/checkoutwizard.h b/src/plugins/cvs/checkoutwizard.h index aa0bb97ce23..0115ed5673f 100644 --- a/src/plugins/cvs/checkoutwizard.h +++ b/src/plugins/cvs/checkoutwizard.h @@ -31,6 +31,7 @@ #define CHECKOUTWIZARD_H #include +#include namespace Cvs { namespace Internal { @@ -42,6 +43,8 @@ class CheckoutWizardFactory : public VcsBase::BaseCheckoutWizardFactory public: CheckoutWizardFactory(); + VcsBase::BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const; + private: // BaseCheckoutWizard QList createParameterPages(const QString &path); @@ -49,6 +52,14 @@ private: QString *checkoutPath); }; +class CheckoutWizard : public VcsBase::BaseCheckoutWizard +{ + Q_OBJECT + +public: + CheckoutWizard(const QList ¶meterPages, QWidget *parent = 0); +}; + } // namespace Internal } // namespace Cvs diff --git a/src/plugins/git/clonewizard.cpp b/src/plugins/git/clonewizard.cpp index b61906fef36..6a062e426cb 100644 --- a/src/plugins/git/clonewizard.cpp +++ b/src/plugins/git/clonewizard.cpp @@ -49,6 +49,11 @@ CloneWizardFactory::CloneWizardFactory() setDisplayName(tr("Git Repository Clone")); } +VcsBase::BaseCheckoutWizard *CloneWizardFactory::create(const QList ¶meterPages, QWidget *parent) const +{ + return new CloneWizard(parameterPages, parent); +} + QList CloneWizardFactory::createParameterPages(const QString &path) { QList rc; @@ -76,5 +81,13 @@ VcsBase::Command *CloneWizardFactory::createCommand(const QList &p return cwp->createCheckoutJob(checkoutPath); } +// -------------------------------------------------------------------- +// CloneWizard: +// -------------------------------------------------------------------- + +CloneWizard::CloneWizard(const QList ¶meterPages, QWidget *parent) : + VcsBase::BaseCheckoutWizard(parameterPages, parent) +{ } + } // namespace Internal } // namespace Git diff --git a/src/plugins/git/clonewizard.h b/src/plugins/git/clonewizard.h index 15f8dea3d72..743b095d21d 100644 --- a/src/plugins/git/clonewizard.h +++ b/src/plugins/git/clonewizard.h @@ -31,6 +31,7 @@ #define CLONEWIZARD_H #include +#include namespace Git { namespace Internal { @@ -42,6 +43,8 @@ class CloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory public: CloneWizardFactory(); + VcsBase::BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const; + private: // BaseCheckoutWizard QList createParameterPages(const QString &path); @@ -49,6 +52,14 @@ private: QString *checkoutPath); }; +class CloneWizard : public VcsBase::BaseCheckoutWizard +{ + Q_OBJECT + +public: + CloneWizard(const QList ¶meterPages, QWidget *parent = 0); +}; + } // namespace Internal } // namespace Git diff --git a/src/plugins/git/gitorious/gitoriousclonewizard.cpp b/src/plugins/git/gitorious/gitoriousclonewizard.cpp index c14103f5223..36b0f2a5b5a 100644 --- a/src/plugins/git/gitorious/gitoriousclonewizard.cpp +++ b/src/plugins/git/gitorious/gitoriousclonewizard.cpp @@ -77,6 +77,11 @@ GitoriousCloneWizardFactory::GitoriousCloneWizardFactory() setDisplayName(tr("Gitorious Repository Clone")); } +VcsBase::BaseCheckoutWizard *GitoriousCloneWizardFactory::create(const QList ¶meterPages, QWidget *parent) const +{ + return new GitoriousCloneWizard(parameterPages, parent); +} + QList GitoriousCloneWizardFactory::createParameterPages(const QString &path) { QList rc; @@ -102,5 +107,13 @@ VcsBase::Command *GitoriousCloneWizardFactory::createCommand(const QListcreateCheckoutJob(checkoutPath); } +// -------------------------------------------------------------------- +// GitoriousCloneWizard: +// -------------------------------------------------------------------- + +GitoriousCloneWizard::GitoriousCloneWizard(const QList ¶meterPages, QWidget *parent) : + VcsBase::BaseCheckoutWizard(parameterPages, parent) +{ } + } // namespace Internal } // namespace Gitorius diff --git a/src/plugins/git/gitorious/gitoriousclonewizard.h b/src/plugins/git/gitorious/gitoriousclonewizard.h index f7163f348f5..d4070504941 100644 --- a/src/plugins/git/gitorious/gitoriousclonewizard.h +++ b/src/plugins/git/gitorious/gitoriousclonewizard.h @@ -31,6 +31,7 @@ #define GITORIOUSCLONEWIZARD_H #include +#include namespace Gitorious { namespace Internal { @@ -44,6 +45,8 @@ class GitoriousCloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory public: GitoriousCloneWizardFactory(); + VcsBase::BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const; + private: // BaseCheckoutWizard QList createParameterPages(const QString &path); @@ -51,6 +54,15 @@ private: QString *checkoutPath); }; +class GitoriousCloneWizard : public VcsBase::BaseCheckoutWizard +{ + Q_OBJECT + +public: + GitoriousCloneWizard(const QList ¶meterPages, QWidget *parent = 0); +}; + + } // namespace Internal } // namespace Gitorious diff --git a/src/plugins/mercurial/clonewizard.cpp b/src/plugins/mercurial/clonewizard.cpp index 6d316c4d242..00142cea6a6 100644 --- a/src/plugins/mercurial/clonewizard.cpp +++ b/src/plugins/mercurial/clonewizard.cpp @@ -49,6 +49,11 @@ CloneWizardFactory::CloneWizardFactory() setDisplayName(tr("Mercurial Clone")); } +BaseCheckoutWizard *CloneWizardFactory::create(const QList ¶meterPages, QWidget *parent) const +{ + return new CloneWizard(parameterPages, parent); +} + QList CloneWizardFactory::createParameterPages(const QString &path) { QList wizardPageList; @@ -82,3 +87,11 @@ Command *CloneWizardFactory::createCommand(const QList ¶meter command->addJob(args, -1); return command; } + +// -------------------------------------------------------------------- +// CloneWizard: +// -------------------------------------------------------------------- + +CloneWizard::CloneWizard(const QList ¶meterPages, QWidget *parent) : + VcsBase::BaseCheckoutWizard(parameterPages, parent) +{ } diff --git a/src/plugins/mercurial/clonewizard.h b/src/plugins/mercurial/clonewizard.h index d7ca8221728..42bbd10f9a3 100644 --- a/src/plugins/mercurial/clonewizard.h +++ b/src/plugins/mercurial/clonewizard.h @@ -31,6 +31,7 @@ #define CLONEWIZARD_H #include +#include #include @@ -44,6 +45,8 @@ class CloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory public: CloneWizardFactory(); + VcsBase::BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const; + protected: QList createParameterPages(const QString &path); VcsBase::Command *createCommand(const QList ¶meterPages, @@ -53,6 +56,14 @@ private: const QIcon m_icon; }; +class CloneWizard : public VcsBase::BaseCheckoutWizard +{ + Q_OBJECT + +public: + CloneWizard(const QList ¶meterPages, QWidget *parent = 0); +}; + } //namespace Internal } //namespace Mercurial diff --git a/src/plugins/subversion/checkoutwizard.cpp b/src/plugins/subversion/checkoutwizard.cpp index bb66cea7ef1..50e81c20781 100644 --- a/src/plugins/subversion/checkoutwizard.cpp +++ b/src/plugins/subversion/checkoutwizard.cpp @@ -87,5 +87,13 @@ VcsBase::Command *CheckoutWizardFactory::createCommand(const QList return command; } +// -------------------------------------------------------------------- +// CheckoutWizard: +// -------------------------------------------------------------------- + +CheckoutWizard::CheckoutWizard(const QList ¶meterPages, QWidget *parent) : + VcsBase::BaseCheckoutWizard(parameterPages, parent) +{ } + } // namespace Internal } // namespace Subversion diff --git a/src/plugins/subversion/checkoutwizard.h b/src/plugins/subversion/checkoutwizard.h index f4633f3959c..e14082a2017 100644 --- a/src/plugins/subversion/checkoutwizard.h +++ b/src/plugins/subversion/checkoutwizard.h @@ -31,6 +31,7 @@ #define CHECKOUTWIZARD_H #include +#include namespace Subversion { namespace Internal { @@ -42,6 +43,8 @@ class CheckoutWizardFactory : public VcsBase::BaseCheckoutWizardFactory public: CheckoutWizardFactory(); + VcsBase::BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const; + private: // BaseCheckoutWizard QList createParameterPages(const QString &path); @@ -49,6 +52,14 @@ private: QString *checkoutPath); }; +class CheckoutWizard : public VcsBase::BaseCheckoutWizard +{ + Q_OBJECT + +public: + CheckoutWizard(const QList ¶meterPages, QWidget *parent = 0); +}; + } // namespace Internal } // namespace Subversion diff --git a/src/plugins/vcsbase/basecheckoutwizard.h b/src/plugins/vcsbase/basecheckoutwizard.h index 06726ae3211..a9f3bd57a9c 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.h +++ b/src/plugins/vcsbase/basecheckoutwizard.h @@ -45,8 +45,7 @@ class VCSBASE_EXPORT BaseCheckoutWizard : public Utils::Wizard Q_OBJECT public: - explicit BaseCheckoutWizard(const QList ¶meterPages, - QWidget *parent = 0); + explicit BaseCheckoutWizard(const QList ¶meterPages, QWidget *parent = 0); void setTitle(const QString &title); void setStartedStatus(const QString &title); diff --git a/src/plugins/vcsbase/basecheckoutwizardfactory.cpp b/src/plugins/vcsbase/basecheckoutwizardfactory.cpp index ca1d0e5584e..16e31ccfc79 100644 --- a/src/plugins/vcsbase/basecheckoutwizardfactory.cpp +++ b/src/plugins/vcsbase/basecheckoutwizardfactory.cpp @@ -78,6 +78,7 @@ public: void BaseCheckoutWizardFactoryPrivate::clear() { parameterPages.clear(); + delete wizard; wizard = 0; checkoutPath.clear(); } @@ -107,15 +108,15 @@ void BaseCheckoutWizardFactory::runWizard(const QString &path, QWidget *parent, // Create dialog and launch d->parameterPages = createParameterPages(path); - BaseCheckoutWizard wizard(d->parameterPages, parent); + BaseCheckoutWizard *wizard = create(d->parameterPages, parent); if (!d->progressTitle.isEmpty()) - wizard.setTitle(d->progressTitle); + wizard->setTitle(d->progressTitle); if (!d->startedStatus.isEmpty()) - wizard.setStartedStatus(d->startedStatus); - d->wizard = &wizard; - connect(&wizard, SIGNAL(progressPageShown()), this, SLOT(slotProgressPageShown())); - wizard.setWindowTitle(displayName()); - if (wizard.exec() != QDialog::Accepted) + wizard->setStartedStatus(d->startedStatus); + d->wizard = wizard; + connect(wizard, SIGNAL(progressPageShown()), this, SLOT(slotProgressPageShown())); + wizard->setWindowTitle(displayName()); + if (wizard->exec() != QDialog::Accepted) return; // Now try to find the project file and open const QString checkoutPath = d->checkoutPath; diff --git a/src/plugins/vcsbase/basecheckoutwizardfactory.h b/src/plugins/vcsbase/basecheckoutwizardfactory.h index 1493b7cc890..255cdab40d3 100644 --- a/src/plugins/vcsbase/basecheckoutwizardfactory.h +++ b/src/plugins/vcsbase/basecheckoutwizardfactory.h @@ -43,6 +43,7 @@ QT_END_NAMESPACE namespace VcsBase { namespace Internal { class BaseCheckoutWizardFactoryPrivate; } +class BaseCheckoutWizard; class Command; class VCSBASE_EXPORT BaseCheckoutWizardFactory : public Core::IWizardFactory @@ -57,6 +58,8 @@ public: static QString openProject(const QString &path, QString *errorMessage); + virtual BaseCheckoutWizard *create(const QList ¶meterPages, QWidget *parent = 0) const = 0; + protected: void setCustomLabels(const QString &progressTitle, const QString &startedStatus); virtual QList createParameterPages(const QString &path) = 0;