summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2014-05-05 17:56:54 +0200
committerTobias Hunger <tobias.hunger@digia.com>2014-05-26 11:44:43 +0200
commit8e126df5459f2eea2a1736bd804d6f670bc18ba7 (patch)
tree6157d9605c7738e253193250e93fe45b0732f86d
parent719d39d372b2962147e97cdb243b9fb47d8d1fa8 (diff)
downloadqt-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.h2
-rw-r--r--src/plugins/bazaar/clonewizard.cpp55
-rw-r--r--src/plugins/bazaar/clonewizard.h7
-rw-r--r--src/plugins/cvs/checkoutwizard.cpp41
-rw-r--r--src/plugins/cvs/checkoutwizard.h8
-rw-r--r--src/plugins/git/clonewizard.cpp27
-rw-r--r--src/plugins/git/clonewizard.h8
-rw-r--r--src/plugins/git/gitorious/gitoriousclonewizard.cpp23
-rw-r--r--src/plugins/git/gitorious/gitoriousclonewizard.h8
-rw-r--r--src/plugins/mercurial/clonewizard.cpp51
-rw-r--r--src/plugins/mercurial/clonewizard.h7
-rw-r--r--src/plugins/subversion/checkoutwizard.cpp42
-rw-r--r--src/plugins/subversion/checkoutwizard.h8
-rw-r--r--src/plugins/vcsbase/basecheckoutwizard.cpp27
-rw-r--r--src/plugins/vcsbase/basecheckoutwizard.h9
-rw-r--r--src/plugins/vcsbase/basecheckoutwizardfactory.cpp16
-rw-r--r--src/plugins/vcsbase/basecheckoutwizardfactory.h7
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 *> &parameterPages,
- 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 *> &parameterPages,
- 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*> &parameterPages,
- 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*> &parameterPage,
- 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*> &parameterPages,
- 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*> &parameterPages,
- 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*> &parameterPages,
- 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*> &parameterPages,
- 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 *> &parameterPages,
- 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 *> &parameterPages,
- 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*> &parameterPages,
- 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*> &parameterPage,
- 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 *> &parameterPages,
- QString *checkoutPath) = 0;
-
-private slots:
- void slotProgressPageShown();
-
private:
Internal::BaseCheckoutWizardFactoryPrivate *const d;
};