Vcs: Add method to create a Wizard to the WizardFactory and use it

Implement it in all VCS that support this type of wizard

Change-Id: I78b0e4a37e6bf6b25d8cee4b1e96bcc76188047a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Tobias Hunger
2014-05-05 16:17:21 +02:00
parent 67c2c77a99
commit e9526eadb8
15 changed files with 152 additions and 9 deletions

View File

@@ -52,6 +52,11 @@ CloneWizardFactory::CloneWizardFactory()
setDisplayName(tr("Bazaar Clone (Or Branch)")); setDisplayName(tr("Bazaar Clone (Or Branch)"));
} }
VcsBase::BaseCheckoutWizard *CloneWizardFactory::create(const QList<QWizardPage *> &parameterPages, QWidget *parent) const
{
return new CloneWizard(parameterPages, parent);
}
QList<QWizardPage *> CloneWizardFactory::createParameterPages(const QString &path) QList<QWizardPage *> CloneWizardFactory::createParameterPages(const QString &path)
{ {
QList<QWizardPage *> wizardPageList; QList<QWizardPage *> wizardPageList;
@@ -103,3 +108,11 @@ VcsBase::Command *CloneWizardFactory::createCommand(const QList<QWizardPage *> &
command->addJob(args, -1); command->addJob(args, -1);
return command; return command;
} }
// --------------------------------------------------------------------
// CloneWizard:
// --------------------------------------------------------------------
CloneWizard::CloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent) :
VcsBase::BaseCheckoutWizard(parameterPages, parent)
{ }

View File

@@ -31,6 +31,7 @@
#define CLONEWIZARD_H #define CLONEWIZARD_H
#include <vcsbase/basecheckoutwizardfactory.h> #include <vcsbase/basecheckoutwizardfactory.h>
#include <vcsbase/basecheckoutwizard.h>
#include <QIcon> #include <QIcon>
@@ -44,12 +45,22 @@ class CloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory
public: public:
CloneWizardFactory(); CloneWizardFactory();
VcsBase::BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const;
private: private:
QList<QWizardPage *> createParameterPages(const QString &path); QList<QWizardPage *> createParameterPages(const QString &path);
VcsBase::Command *createCommand(const QList<QWizardPage *> &parameterPages, VcsBase::Command *createCommand(const QList<QWizardPage *> &parameterPages,
QString *checkoutPath); QString *checkoutPath);
}; };
class CloneWizard : public VcsBase::BaseCheckoutWizard
{
Q_OBJECT
public:
CloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
};
} // namespace Internal } // namespace Internal
} // namespace Bazaar } // namespace Bazaar

View File

@@ -48,6 +48,11 @@ CheckoutWizardFactory::CheckoutWizardFactory()
setDisplayName(tr("CVS Checkout")); setDisplayName(tr("CVS Checkout"));
} }
VcsBase::BaseCheckoutWizard *CheckoutWizardFactory::create(const QList<QWizardPage *> &parameterPages, QWidget *parent) const
{
return new CheckoutWizard(parameterPages, parent);
}
QList<QWizardPage*> CheckoutWizardFactory::createParameterPages(const QString &path) QList<QWizardPage*> CheckoutWizardFactory::createParameterPages(const QString &path)
{ {
QList<QWizardPage*> rc; QList<QWizardPage*> rc;
@@ -81,5 +86,13 @@ VcsBase::Command *CheckoutWizardFactory::createCommand(const QList<QWizardPage*>
return command; return command;
} }
// --------------------------------------------------------------------
// CheckoutWizard:
// --------------------------------------------------------------------
CheckoutWizard::CheckoutWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent) :
VcsBase::BaseCheckoutWizard(parameterPages, parent)
{ }
} // namespace Internal } // namespace Internal
} // namespace Cvs } // namespace Cvs

View File

@@ -31,6 +31,7 @@
#define CHECKOUTWIZARD_H #define CHECKOUTWIZARD_H
#include <vcsbase/basecheckoutwizardfactory.h> #include <vcsbase/basecheckoutwizardfactory.h>
#include <vcsbase/basecheckoutwizard.h>
namespace Cvs { namespace Cvs {
namespace Internal { namespace Internal {
@@ -42,6 +43,8 @@ class CheckoutWizardFactory : public VcsBase::BaseCheckoutWizardFactory
public: public:
CheckoutWizardFactory(); CheckoutWizardFactory();
VcsBase::BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const;
private: private:
// BaseCheckoutWizard // BaseCheckoutWizard
QList<QWizardPage*> createParameterPages(const QString &path); QList<QWizardPage*> createParameterPages(const QString &path);
@@ -49,6 +52,14 @@ private:
QString *checkoutPath); QString *checkoutPath);
}; };
class CheckoutWizard : public VcsBase::BaseCheckoutWizard
{
Q_OBJECT
public:
CheckoutWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
};
} // namespace Internal } // namespace Internal
} // namespace Cvs } // namespace Cvs

View File

@@ -49,6 +49,11 @@ CloneWizardFactory::CloneWizardFactory()
setDisplayName(tr("Git Repository Clone")); setDisplayName(tr("Git Repository Clone"));
} }
VcsBase::BaseCheckoutWizard *CloneWizardFactory::create(const QList<QWizardPage *> &parameterPages, QWidget *parent) const
{
return new CloneWizard(parameterPages, parent);
}
QList<QWizardPage*> CloneWizardFactory::createParameterPages(const QString &path) QList<QWizardPage*> CloneWizardFactory::createParameterPages(const QString &path)
{ {
QList<QWizardPage*> rc; QList<QWizardPage*> rc;
@@ -76,5 +81,13 @@ VcsBase::Command *CloneWizardFactory::createCommand(const QList<QWizardPage*> &p
return cwp->createCheckoutJob(checkoutPath); return cwp->createCheckoutJob(checkoutPath);
} }
// --------------------------------------------------------------------
// CloneWizard:
// --------------------------------------------------------------------
CloneWizard::CloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent) :
VcsBase::BaseCheckoutWizard(parameterPages, parent)
{ }
} // namespace Internal } // namespace Internal
} // namespace Git } // namespace Git

View File

@@ -31,6 +31,7 @@
#define CLONEWIZARD_H #define CLONEWIZARD_H
#include <vcsbase/basecheckoutwizardfactory.h> #include <vcsbase/basecheckoutwizardfactory.h>
#include <vcsbase/basecheckoutwizard.h>
namespace Git { namespace Git {
namespace Internal { namespace Internal {
@@ -42,6 +43,8 @@ class CloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory
public: public:
CloneWizardFactory(); CloneWizardFactory();
VcsBase::BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const;
private: private:
// BaseCheckoutWizard // BaseCheckoutWizard
QList<QWizardPage*> createParameterPages(const QString &path); QList<QWizardPage*> createParameterPages(const QString &path);
@@ -49,6 +52,14 @@ private:
QString *checkoutPath); QString *checkoutPath);
}; };
class CloneWizard : public VcsBase::BaseCheckoutWizard
{
Q_OBJECT
public:
CloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
};
} // namespace Internal } // namespace Internal
} // namespace Git } // namespace Git

View File

@@ -77,6 +77,11 @@ GitoriousCloneWizardFactory::GitoriousCloneWizardFactory()
setDisplayName(tr("Gitorious Repository Clone")); setDisplayName(tr("Gitorious Repository Clone"));
} }
VcsBase::BaseCheckoutWizard *GitoriousCloneWizardFactory::create(const QList<QWizardPage *> &parameterPages, QWidget *parent) const
{
return new GitoriousCloneWizard(parameterPages, parent);
}
QList<QWizardPage*> GitoriousCloneWizardFactory::createParameterPages(const QString &path) QList<QWizardPage*> GitoriousCloneWizardFactory::createParameterPages(const QString &path)
{ {
QList<QWizardPage*> rc; QList<QWizardPage*> rc;
@@ -102,5 +107,13 @@ VcsBase::Command *GitoriousCloneWizardFactory::createCommand(const QList<QWizard
return cwp->createCheckoutJob(checkoutPath); return cwp->createCheckoutJob(checkoutPath);
} }
// --------------------------------------------------------------------
// GitoriousCloneWizard:
// --------------------------------------------------------------------
GitoriousCloneWizard::GitoriousCloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent) :
VcsBase::BaseCheckoutWizard(parameterPages, parent)
{ }
} // namespace Internal } // namespace Internal
} // namespace Gitorius } // namespace Gitorius

View File

@@ -31,6 +31,7 @@
#define GITORIOUSCLONEWIZARD_H #define GITORIOUSCLONEWIZARD_H
#include <vcsbase/basecheckoutwizardfactory.h> #include <vcsbase/basecheckoutwizardfactory.h>
#include <vcsbase/basecheckoutwizard.h>
namespace Gitorious { namespace Gitorious {
namespace Internal { namespace Internal {
@@ -44,6 +45,8 @@ class GitoriousCloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory
public: public:
GitoriousCloneWizardFactory(); GitoriousCloneWizardFactory();
VcsBase::BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const;
private: private:
// BaseCheckoutWizard // BaseCheckoutWizard
QList<QWizardPage*> createParameterPages(const QString &path); QList<QWizardPage*> createParameterPages(const QString &path);
@@ -51,6 +54,15 @@ private:
QString *checkoutPath); QString *checkoutPath);
}; };
class GitoriousCloneWizard : public VcsBase::BaseCheckoutWizard
{
Q_OBJECT
public:
GitoriousCloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
};
} // namespace Internal } // namespace Internal
} // namespace Gitorious } // namespace Gitorious

View File

@@ -49,6 +49,11 @@ CloneWizardFactory::CloneWizardFactory()
setDisplayName(tr("Mercurial Clone")); setDisplayName(tr("Mercurial Clone"));
} }
BaseCheckoutWizard *CloneWizardFactory::create(const QList<QWizardPage *> &parameterPages, QWidget *parent) const
{
return new CloneWizard(parameterPages, parent);
}
QList<QWizardPage *> CloneWizardFactory::createParameterPages(const QString &path) QList<QWizardPage *> CloneWizardFactory::createParameterPages(const QString &path)
{ {
QList<QWizardPage *> wizardPageList; QList<QWizardPage *> wizardPageList;
@@ -82,3 +87,11 @@ Command *CloneWizardFactory::createCommand(const QList<QWizardPage *> &parameter
command->addJob(args, -1); command->addJob(args, -1);
return command; return command;
} }
// --------------------------------------------------------------------
// CloneWizard:
// --------------------------------------------------------------------
CloneWizard::CloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent) :
VcsBase::BaseCheckoutWizard(parameterPages, parent)
{ }

View File

@@ -31,6 +31,7 @@
#define CLONEWIZARD_H #define CLONEWIZARD_H
#include <vcsbase/basecheckoutwizardfactory.h> #include <vcsbase/basecheckoutwizardfactory.h>
#include <vcsbase/basecheckoutwizard.h>
#include <QIcon> #include <QIcon>
@@ -44,6 +45,8 @@ class CloneWizardFactory : public VcsBase::BaseCheckoutWizardFactory
public: public:
CloneWizardFactory(); CloneWizardFactory();
VcsBase::BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const;
protected: protected:
QList<QWizardPage *> createParameterPages(const QString &path); QList<QWizardPage *> createParameterPages(const QString &path);
VcsBase::Command *createCommand(const QList<QWizardPage *> &parameterPages, VcsBase::Command *createCommand(const QList<QWizardPage *> &parameterPages,
@@ -53,6 +56,14 @@ private:
const QIcon m_icon; const QIcon m_icon;
}; };
class CloneWizard : public VcsBase::BaseCheckoutWizard
{
Q_OBJECT
public:
CloneWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
};
} //namespace Internal } //namespace Internal
} //namespace Mercurial } //namespace Mercurial

View File

@@ -87,5 +87,13 @@ VcsBase::Command *CheckoutWizardFactory::createCommand(const QList<QWizardPage*>
return command; return command;
} }
// --------------------------------------------------------------------
// CheckoutWizard:
// --------------------------------------------------------------------
CheckoutWizard::CheckoutWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent) :
VcsBase::BaseCheckoutWizard(parameterPages, parent)
{ }
} // namespace Internal } // namespace Internal
} // namespace Subversion } // namespace Subversion

View File

@@ -31,6 +31,7 @@
#define CHECKOUTWIZARD_H #define CHECKOUTWIZARD_H
#include <vcsbase/basecheckoutwizardfactory.h> #include <vcsbase/basecheckoutwizardfactory.h>
#include <vcsbase/basecheckoutwizard.h>
namespace Subversion { namespace Subversion {
namespace Internal { namespace Internal {
@@ -42,6 +43,8 @@ class CheckoutWizardFactory : public VcsBase::BaseCheckoutWizardFactory
public: public:
CheckoutWizardFactory(); CheckoutWizardFactory();
VcsBase::BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const;
private: private:
// BaseCheckoutWizard // BaseCheckoutWizard
QList<QWizardPage*> createParameterPages(const QString &path); QList<QWizardPage*> createParameterPages(const QString &path);
@@ -49,6 +52,14 @@ private:
QString *checkoutPath); QString *checkoutPath);
}; };
class CheckoutWizard : public VcsBase::BaseCheckoutWizard
{
Q_OBJECT
public:
CheckoutWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
};
} // namespace Internal } // namespace Internal
} // namespace Subversion } // namespace Subversion

View File

@@ -45,8 +45,7 @@ class VCSBASE_EXPORT BaseCheckoutWizard : public Utils::Wizard
Q_OBJECT Q_OBJECT
public: public:
explicit BaseCheckoutWizard(const QList<QWizardPage *> &parameterPages, explicit BaseCheckoutWizard(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0);
QWidget *parent = 0);
void setTitle(const QString &title); void setTitle(const QString &title);
void setStartedStatus(const QString &title); void setStartedStatus(const QString &title);

View File

@@ -78,6 +78,7 @@ public:
void BaseCheckoutWizardFactoryPrivate::clear() void BaseCheckoutWizardFactoryPrivate::clear()
{ {
parameterPages.clear(); parameterPages.clear();
delete wizard;
wizard = 0; wizard = 0;
checkoutPath.clear(); checkoutPath.clear();
} }
@@ -107,15 +108,15 @@ void BaseCheckoutWizardFactory::runWizard(const QString &path, QWidget *parent,
// Create dialog and launch // Create dialog and launch
d->parameterPages = createParameterPages(path); d->parameterPages = createParameterPages(path);
BaseCheckoutWizard wizard(d->parameterPages, parent); BaseCheckoutWizard *wizard = create(d->parameterPages, parent);
if (!d->progressTitle.isEmpty()) if (!d->progressTitle.isEmpty())
wizard.setTitle(d->progressTitle); wizard->setTitle(d->progressTitle);
if (!d->startedStatus.isEmpty()) if (!d->startedStatus.isEmpty())
wizard.setStartedStatus(d->startedStatus); wizard->setStartedStatus(d->startedStatus);
d->wizard = &wizard; d->wizard = wizard;
connect(&wizard, SIGNAL(progressPageShown()), this, SLOT(slotProgressPageShown())); connect(wizard, SIGNAL(progressPageShown()), this, SLOT(slotProgressPageShown()));
wizard.setWindowTitle(displayName()); wizard->setWindowTitle(displayName());
if (wizard.exec() != QDialog::Accepted) if (wizard->exec() != QDialog::Accepted)
return; return;
// Now try to find the project file and open // Now try to find the project file and open
const QString checkoutPath = d->checkoutPath; const QString checkoutPath = d->checkoutPath;

View File

@@ -43,6 +43,7 @@ QT_END_NAMESPACE
namespace VcsBase { namespace VcsBase {
namespace Internal { class BaseCheckoutWizardFactoryPrivate; } namespace Internal { class BaseCheckoutWizardFactoryPrivate; }
class BaseCheckoutWizard;
class Command; class Command;
class VCSBASE_EXPORT BaseCheckoutWizardFactory : public Core::IWizardFactory class VCSBASE_EXPORT BaseCheckoutWizardFactory : public Core::IWizardFactory
@@ -57,6 +58,8 @@ public:
static QString openProject(const QString &path, QString *errorMessage); static QString openProject(const QString &path, QString *errorMessage);
virtual BaseCheckoutWizard *create(const QList<QWizardPage *> &parameterPages, QWidget *parent = 0) const = 0;
protected: protected:
void setCustomLabels(const QString &progressTitle, const QString &startedStatus); void setCustomLabels(const QString &progressTitle, const QString &startedStatus);
virtual QList<QWizardPage *> createParameterPages(const QString &path) = 0; virtual QList<QWizardPage *> createParameterPages(const QString &path) = 0;