VCSBase: Add common functionality, make checkout use page lists.

Move GitClient::filterUntrackedFilesOfProject into submit editor.
Make checkout wizards use page lists for greater flexibility.
This commit is contained in:
Friedemann Kleint
2009-07-21 11:14:48 +02:00
parent 8908c33398
commit 9e2f12c737
13 changed files with 71 additions and 61 deletions

View File

@@ -60,18 +60,20 @@ QString CloneWizard::name() const
return tr("Git Repository Clone");
}
QWizardPage *CloneWizard::createParameterPage(const QString &path)
QList<QWizardPage*> CloneWizard::createParameterPages(const QString &path)
{
CloneWizardPage *cwp = new CloneWizardPage;
cwp->setPath(path);
return cwp;
QList<QWizardPage*> rc;
rc.push_back(cwp);
return rc;
}
QSharedPointer<VCSBase::AbstractCheckoutJob> CloneWizard::createJob(const QWizardPage *parameterPage,
QSharedPointer<VCSBase::AbstractCheckoutJob> CloneWizard::createJob(const QList<QWizardPage*> &parameterPages,
QString *checkoutPath)
{
// Collect parameters for the clone command.
const CloneWizardPage *cwp = qobject_cast<const CloneWizardPage *>(parameterPage);
const CloneWizardPage *cwp = qobject_cast<const CloneWizardPage *>(parameterPages.front());
QTC_ASSERT(cwp, return QSharedPointer<VCSBase::AbstractCheckoutJob>())
const GitClient *client = GitPlugin::instance()->gitClient();
QStringList args = client->binary();

View File

@@ -47,8 +47,8 @@ public:
protected:
// BaseCheckoutWizard
virtual QWizardPage *createParameterPage(const QString &path);
virtual QSharedPointer<VCSBase::AbstractCheckoutJob> createJob(const QWizardPage *parameterPage,
virtual QList<QWizardPage*> createParameterPages(const QString &path);
virtual QSharedPointer<VCSBase::AbstractCheckoutJob> createJob(const QList<QWizardPage*> &parameterPages,
QString *checkoutPath);
};

View File

@@ -684,25 +684,6 @@ GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory,
return StatusChanged;
}
// Filter out untracked files that are not part of the project
static void filterUntrackedFilesOfProject(const QString &repoDir, QStringList *l)
{
if (l->empty())
return;
const QStringList nativeProjectFiles = VCSBase::VCSBaseSubmitEditor::currentProjectFiles(true);
if (nativeProjectFiles.empty())
return;
const QDir repoDirectory(repoDir);
for (QStringList::iterator it = l->begin(); it != l->end(); ) {
const QString path = QDir::toNativeSeparators(repoDirectory.absoluteFilePath(*it));
if (nativeProjectFiles.contains(path)) {
++it;
} else {
it = l->erase(it);
}
}
}
bool GitClient::getCommitData(const QString &workingDirectory,
QString *commitTemplate,
CommitData *d,
@@ -771,7 +752,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
return false;
}
// Filter out untracked files that are not part of the project
filterUntrackedFilesOfProject(repoDirectory, &d->untrackedFiles);
VCSBase::VCSBaseSubmitEditor::filterUntrackedFilesOfProject(repoDirectory, &d->untrackedFiles);
if (d->filesEmpty()) {
*errorMessage = msgNoChangedFiles();
return false;