GerritModel: Reuse ProcessProgress

Change-Id: I229ab2cbb8137b6e1debe86eaa462110fdcc337e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Jarek Kobus
2023-01-04 18:29:18 +01:00
parent 330a748f17
commit 850d5e6a06

View File

@@ -5,30 +5,27 @@
#include "../gitclient.h" #include "../gitclient.h"
#include "../gittr.h" #include "../gittr.h"
#include <coreplugin/progressmanager/progressmanager.h> #include <coreplugin/progressmanager/processprogress.h>
#include <coreplugin/progressmanager/futureprogress.h>
#include <vcsbase/vcsoutputwindow.h> #include <vcsbase/vcsoutputwindow.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/processinterface.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <QApplication>
#include <QDebug>
#include <QJsonArray> #include <QJsonArray>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QJsonValue> #include <QJsonValue>
#include <QStringList>
#include <QProcess>
#include <QVariant>
#include <QTextStream>
#include <QMessageBox> #include <QMessageBox>
#include <QPushButton> #include <QPushButton>
#include <QDebug> #include <QStringList>
#include <QScopedPointer> #include <QTextStream>
#include <QTimer> #include <QTimer>
#include <QApplication>
#include <QFutureWatcher>
#include <QUrl> #include <QUrl>
#include <QVariant>
enum { debug = 0 }; enum { debug = 0 };
@@ -235,8 +232,6 @@ private:
FilePath m_binary; FilePath m_binary;
QByteArray m_output; QByteArray m_output;
QString m_error; QString m_error;
QFutureInterface<void> m_progress;
QFutureWatcher<void> m_watcher;
QStringList m_arguments; QStringList m_arguments;
}; };
@@ -273,10 +268,7 @@ QueryContext::QueryContext(const QString &query,
m_output.append(m_process.readAllStandardOutput()); m_output.append(m_process.readAllStandardOutput());
}); });
connect(&m_process, &QtcProcess::done, this, &QueryContext::processDone); connect(&m_process, &QtcProcess::done, this, &QueryContext::processDone);
connect(&m_watcher, &QFutureWatcherBase::canceled, this, &QueryContext::terminate);
m_watcher.setFuture(m_progress.future());
m_process.setEnvironment(Git::Internal::GitClient::instance()->processEnvironment()); m_process.setEnvironment(Git::Internal::GitClient::instance()->processEnvironment());
m_progress.setProgressRange(0, 1);
m_timer.setInterval(timeOutMS); m_timer.setInterval(timeOutMS);
m_timer.setSingleShot(true); m_timer.setSingleShot(true);
@@ -285,32 +277,26 @@ QueryContext::QueryContext(const QString &query,
QueryContext::~QueryContext() QueryContext::~QueryContext()
{ {
if (m_progress.isRunning())
m_progress.reportFinished();
if (m_timer.isActive()) if (m_timer.isActive())
m_timer.stop(); m_timer.stop();
m_process.disconnect(this);
terminate();
} }
void QueryContext::start() void QueryContext::start()
{ {
Core::FutureProgress *fp = Core::ProgressManager::addTask(m_progress.future(), Git::Tr::tr("Querying Gerrit"),
"gerrit-query");
fp->setKeepOnFinish(Core::FutureProgress::HideOnFinish);
m_progress.reportStarted();
// Order: synchronous call to error handling if something goes wrong. // Order: synchronous call to error handling if something goes wrong.
VcsOutputWindow::appendCommand(m_process.workingDirectory(), {m_binary, m_arguments}); const CommandLine commandLine{m_binary, m_arguments};
VcsOutputWindow::appendCommand(m_process.workingDirectory(), commandLine);
m_timer.start(); m_timer.start();
m_process.setCommand({m_binary, m_arguments}); m_process.setCommand(commandLine);
auto progress = new Core::ProcessProgress(&m_process);
progress->setDisplayName(Git::Tr::tr("Querying Gerrit"));
m_process.start(); m_process.start();
} }
void QueryContext::errorTermination(const QString &msg) void QueryContext::errorTermination(const QString &msg)
{ {
if (!m_progress.isCanceled()) if (!m_process.resultData().m_canceledByUser)
VcsOutputWindow::appendError(msg); VcsOutputWindow::appendError(msg);
m_progress.reportCanceled();
} }
void QueryContext::terminate() void QueryContext::terminate()
@@ -336,7 +322,6 @@ void QueryContext::processDone()
else else
emit resultRetrieved(m_output); emit resultRetrieved(m_output);
m_progress.reportFinished();
emit finished(); emit finished();
} }