diff --git a/companion/src/process_flash.cpp b/companion/src/process_flash.cpp index 22baa83c6..77a77ea4d 100644 --- a/companion/src/process_flash.cpp +++ b/companion/src/process_flash.cpp @@ -136,10 +136,8 @@ void FlashProcess::onKillTimerElapsed() void FlashProcess::analyseStandardOutput(const QString & text) { - -// qDebug() << text; - currStdoutLine.append(text); + if (currStdoutLine.contains("size = ")) { int pos = currStdoutLine.lastIndexOf("size = "); QString temp = currStdoutLine.mid(pos+7); @@ -147,17 +145,23 @@ void FlashProcess::analyseStandardOutput(const QString & text) int size = temp.left(pos).toInt(); progress->setMaximum(size / 2048); } + if (currStdoutLine.contains("\n")) { int nlPos = currStdoutLine.lastIndexOf("\n"); currStdoutLine = currStdoutLine.mid(nlPos+1); } + if (!currStdoutLine.isEmpty()) { if (currStdoutLine.at(0) == QChar('.')) { int pos = currStdoutLine.lastIndexOf("."); progress->setValue(pos); } else if (currStdoutLine.startsWith("Starting upload: [")) { - int pos = (currStdoutLine.lastIndexOf("#")-19)*100/256; + int pos = (currStdoutLine.lastIndexOf("#") - 19) * 100 / 256; + progress->setValue(pos); + } + else if (currStdoutLine.startsWith("[") && progress->getText().contains("bytes_per_hash=2048")) { + int pos = (currStdoutLine.lastIndexOf("#") - 1) * 2048 / (2 * 1024 * 1024); // TODO depends on bin size progress->setValue(pos); } } diff --git a/companion/src/process_flash.h b/companion/src/process_flash.h index c39be2644..530938590 100644 --- a/companion/src/process_flash.h +++ b/companion/src/process_flash.h @@ -53,10 +53,10 @@ protected: void analyseStandardError(const QString &text); void errorWizard(); void addReadFuses(); - ProgressWidget *progress; + ProgressWidget * progress; const QString cmd; const QStringList args; - QProcess *process; + QProcess * process; bool hasErrors; QString currStdoutLine; QString currStderrLine;