summaryrefslogtreecommitdiff
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r--src/plugins/git/gitclient.cpp25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 002d603a43..fdc1c9a625 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -791,26 +791,19 @@ private:
QStringList m_files;
};
-class GitProgressParser : public ProgressParser
+class GitProgressParser
{
public:
- static void attachToCommand(VcsCommand *command)
- {
- command->setProgressParser(new GitProgressParser);
+ void operator()(QFutureInterface<void> &fi, const QString &inputText) const {
+ const QRegularExpressionMatch match = m_progressExp.match(inputText);
+ if (match.hasMatch()) {
+ fi.setProgressRange(0, match.captured(2).toInt());
+ fi.setProgressValue(match.captured(1).toInt());
+ }
}
private:
- GitProgressParser() : m_progressExp("\\((\\d+)/(\\d+)\\)") // e.g. Rebasing (7/42)
- { }
-
- void parseProgress(const QString &text) override
- {
- const QRegularExpressionMatch match = m_progressExp.match(text);
- if (match.hasMatch())
- setProgressAndMaximum(match.captured(1).toInt(), match.captured(2).toInt());
- }
-
- const QRegularExpression m_progressExp;
+ const QRegularExpression m_progressExp{"\\((\\d+)/(\\d+)\\)"}; // e.g. Rebasing (7/42)
};
static inline QString msgRepositoryNotFound(const FilePath &dir)
@@ -3404,7 +3397,7 @@ VcsCommand *GitClient::vcsExecAbortable(const FilePath &workingDirectory,
command->addJob({vcsBinary(), arguments}, isRebase ? 0 : vcsTimeoutS());
ConflictHandler::attachToCommand(command, workingDirectory, abortCommand);
if (isRebase)
- GitProgressParser::attachToCommand(command);
+ command->setProgressParser(GitProgressParser());
command->start();
return command;