summaryrefslogtreecommitdiffstats
path: root/src/b2qt-flashing-wizard/progress_page.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/b2qt-flashing-wizard/progress_page.cpp')
-rw-r--r--src/b2qt-flashing-wizard/progress_page.cpp66
1 files changed, 52 insertions, 14 deletions
diff --git a/src/b2qt-flashing-wizard/progress_page.cpp b/src/b2qt-flashing-wizard/progress_page.cpp
index 567d986..e9203b3 100644
--- a/src/b2qt-flashing-wizard/progress_page.cpp
+++ b/src/b2qt-flashing-wizard/progress_page.cpp
@@ -26,6 +26,7 @@
#include <QLayout>
#include <QProgressBar>
#include <QPushButton>
+#include <QScrollBar>
#include <QTextEdit>
#include <QTimer>
@@ -37,13 +38,14 @@ ProgressPage::ProgressPage(QWidget *parent)
, mTextEdit(new QTextEdit(this))
, mToggleDetailsButton(new QPushButton(this))
, mCopyToClipboardButton(new QPushButton(this))
+ , mProgressBar(0)
{
setTitle(tr("Disk Creation"));
setSubTitle(tr("Writing the hardware platform image to the disk"));
setLayout(new QVBoxLayout(this));
- QProgressBar *progressBar = new QProgressBar(this);
- progressBar->setRange(0, 0);
- layout()->addWidget(progressBar);
+ mProgressBar = new QProgressBar(this);
+ mProgressBar->setRange(0, 0);
+ layout()->addWidget(mProgressBar);
mProgress->setWordWrap(true);
mProgress->setText(tr("Preparing the disk device..."));
layout()->addWidget(mProgress);
@@ -91,6 +93,14 @@ void ProgressPage::failed(const QString &message)
{
mFinished = false;
emit completeChanged();
+ showDetails();
+ mProgressBar->setEnabled(false);
+ mProgressBar->setRange(0, 100);
+ mProgressBar->setValue(100);
+ mProgressBar->setFormat("");
+
+ // Scroll to bottom
+ mTextEdit->verticalScrollBar()->setValue(mTextEdit->verticalScrollBar()->maximum());
mProgress->setText(message);
}
@@ -101,26 +111,54 @@ void ProgressPage::setActor(Actor *actor)
connect(actor, &Actor::finished, this, &ProgressPage::finished);
connect(actor, &Actor::failed, this, &ProgressPage::failed);
connect(actor, &Actor::details, this, &ProgressPage::addDetails);
+ connect(actor, &Actor::errorDetails, this, &ProgressPage::addErrorDetails);
connect(actor, &Actor::progress, this, &ProgressPage::progress);
}
+static void commonDetailReplacements(QByteArray &data)
+{
+ data.replace(0x08 /* backspace */, ' ');
+}
+
void ProgressPage::addDetails(QByteArray newData)
{
- newData.replace(0x08 /* backspace */, ' ');
- mTextEdit->append(QString::fromLocal8Bit(newData));
+ commonDetailReplacements(newData);
+ mTextEdit->insertPlainText(QString::fromLocal8Bit(newData));
}
-void ProgressPage::toggleDetails()
+void ProgressPage::addErrorDetails(QByteArray newData)
{
- if (mTextEdit->isHidden()) {
- mTextEdit->show();
- mCopyToClipboardButton->show();
- mToggleDetailsButton->setText(tr("Hide details"));
- } else {
- mTextEdit->hide();
- mCopyToClipboardButton->hide();
- mToggleDetailsButton->setText(tr("Show details"));
+ if (newData.startsWith('+')) {
+ addDetails(newData);
+ return;
}
+ commonDetailReplacements(newData);
+ QColor c = mTextEdit->textColor();
+ mTextEdit->setTextColor(Qt::red);
+ mTextEdit->insertPlainText(QString::fromLocal8Bit(newData));
+ mTextEdit->setTextColor(c);
+}
+
+void ProgressPage::showDetails()
+{
+ mTextEdit->show();
+ mCopyToClipboardButton->show();
+ mToggleDetailsButton->setText(tr("Hide details"));
+}
+
+void ProgressPage::hideDetails()
+{
+ mTextEdit->hide();
+ mCopyToClipboardButton->hide();
+ mToggleDetailsButton->setText(tr("Show details"));
+}
+
+void ProgressPage::toggleDetails()
+{
+ if (mTextEdit->isHidden())
+ showDetails();
+ else
+ hideDetails();
}
void ProgressPage::copyDetailsToClipboard()