forked from qt-creator/qt-creator
VcsBaseDiffEditorController: Make post processing reusable
Move creating the post process task into vcs base class and reuse it in subclasses. Change-Id: Ibd81d1640524980c0554a5d0ddc41b96ecd7f73f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -51,6 +51,8 @@ public:
|
||||
int m_vscTimeoutS;
|
||||
QPointer<VcsCommand> m_command;
|
||||
QFutureWatcher<QList<FileData>> *m_processWatcher = nullptr;
|
||||
|
||||
const Tasking::TreeStorage<QString> m_inputStorage;
|
||||
};
|
||||
|
||||
VcsBaseDiffEditorControllerPrivate::~VcsBaseDiffEditorControllerPrivate()
|
||||
@@ -134,6 +136,32 @@ VcsBaseDiffEditorController::~VcsBaseDiffEditorController()
|
||||
delete d;
|
||||
}
|
||||
|
||||
Tasking::TreeStorage<QString> VcsBaseDiffEditorController::inputStorage() const
|
||||
{
|
||||
return d->m_inputStorage;
|
||||
}
|
||||
|
||||
Tasking::TaskItem VcsBaseDiffEditorController::postProcessTask()
|
||||
{
|
||||
using namespace Tasking;
|
||||
|
||||
const auto setupDiffProcessor = [this](AsyncTask<QList<FileData>> &async) {
|
||||
const QString *storage = inputStorage().activeStorage();
|
||||
QTC_ASSERT(storage, qWarning("Using postProcessTask() requires putting inputStorage() "
|
||||
"into task tree's root group."));
|
||||
const QString inputData = storage ? *storage : QString();
|
||||
async.setAsyncCallData(readPatch, inputData);
|
||||
async.setFutureSynchronizer(Internal::VcsPlugin::futureSynchronizer());
|
||||
};
|
||||
const auto onDiffProcessorDone = [this](const AsyncTask<QList<FileData>> &async) {
|
||||
setDiffFiles(async.result());
|
||||
};
|
||||
const auto onDiffProcessorError = [this](const AsyncTask<QList<FileData>> &) {
|
||||
setDiffFiles({});
|
||||
};
|
||||
return Async<QList<FileData>>(setupDiffProcessor, onDiffProcessorDone, onDiffProcessorError);
|
||||
}
|
||||
|
||||
void VcsBaseDiffEditorController::setupCommand(QtcProcess &process, const QStringList &args) const
|
||||
{
|
||||
process.setEnvironment(d->m_processEnvironment);
|
||||
@@ -141,13 +169,6 @@ void VcsBaseDiffEditorController::setupCommand(QtcProcess &process, const QStrin
|
||||
process.setCommand({d->m_vcsBinary, args});
|
||||
}
|
||||
|
||||
void VcsBaseDiffEditorController::setupDiffProcessor(AsyncTask<QList<FileData>> &processor,
|
||||
const QString &patch) const
|
||||
{
|
||||
processor.setAsyncCallData(readPatch, patch);
|
||||
processor.setFutureSynchronizer(Internal::VcsPlugin::futureSynchronizer());
|
||||
}
|
||||
|
||||
void VcsBaseDiffEditorController::runCommand(const QList<QStringList> &args, RunFlags flags, QTextCodec *codec)
|
||||
{
|
||||
// Cancel the possible ongoing reload without the commandFinished() nor
|
||||
|
||||
Reference in New Issue
Block a user