forked from qt-creator/qt-creator
GerritModel: Reuse ProcessProgress
Change-Id: I229ab2cbb8137b6e1debe86eaa462110fdcc337e Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user