summaryrefslogtreecommitdiffstats
path: root/src/b2qt-flashing-wizard
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@theqtcompany.com>2015-06-17 10:29:59 +0300
committerQt Gerrit Server <srv.gerrit-noreply@digia.com>2015-06-17 10:29:59 +0300
commitb8b197a757c4cc7cf013d169c82d77f2832ebc71 (patch)
tree5665526b6a4a2fdc5db4d231c253ed7e45679e6d /src/b2qt-flashing-wizard
parent544a762ca529bf25ab8f475dab3d696faba6bdfe (diff)
parentf8738120d5085e13752e69fa9eb46bb10fcc8111 (diff)
Merge "Merge remote-tracking branch 'origin/stable' into dev" into dev
Diffstat (limited to 'src/b2qt-flashing-wizard')
-rw-r--r--src/b2qt-flashing-wizard/actor.h1
-rw-r--r--src/b2qt-flashing-wizard/platform_page.cpp17
-rw-r--r--src/b2qt-flashing-wizard/progress_page.cpp66
-rw-r--r--src/b2qt-flashing-wizard/progress_page.h5
-rw-r--r--src/b2qt-flashing-wizard/scriptwriter.cpp12
-rw-r--r--src/b2qt-flashing-wizard/scriptwriter.h3
6 files changed, 80 insertions, 24 deletions
diff --git a/src/b2qt-flashing-wizard/actor.h b/src/b2qt-flashing-wizard/actor.h
index 51e856d..9af55fe 100644
--- a/src/b2qt-flashing-wizard/actor.h
+++ b/src/b2qt-flashing-wizard/actor.h
@@ -37,6 +37,7 @@ signals:
void finished();
void failed(const QString &message);
void details(const QByteArray &);
+ void errorDetails(const QByteArray &);
};
#endif // ACTOR_H
diff --git a/src/b2qt-flashing-wizard/platform_page.cpp b/src/b2qt-flashing-wizard/platform_page.cpp
index 49cb5bd..6437933 100644
--- a/src/b2qt-flashing-wizard/platform_page.cpp
+++ b/src/b2qt-flashing-wizard/platform_page.cpp
@@ -66,6 +66,8 @@ PlatformPage::~PlatformPage()
bool PlatformPage::isComplete() const
{
+ if (mButtons.isEmpty() || buttonData().name.isEmpty())
+ return false;
return true;
}
@@ -125,16 +127,19 @@ void PlatformPage::initializePage()
QDir dir(G_SDKDIR);
foreach (const QString i, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
- if (!i.startsWith("Boot2Qt-"))
- continue;
-
QDir dir2(dir.absoluteFilePath(i));
+
+ if (i.startsWith("Boot2Qt-")) {
+ // nothing
+ } else if (dir2.exists("Boot2Qt")) {
+ dir2 = dir2.absoluteFilePath("Boot2Qt");
+ } else {
+ continue;
+ }
+
foreach (const QString j, dir2.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
if (j.startsWith("emulator-"))
continue;
- QStringList token = j.split('-');
- QString os = token.takeLast();
- QString name = token.join("-");
loadDeployConfig(dir2.absoluteFilePath(j) + "/images/deploy.conf", i);
}
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()
diff --git a/src/b2qt-flashing-wizard/progress_page.h b/src/b2qt-flashing-wizard/progress_page.h
index f99f11b..393619d 100644
--- a/src/b2qt-flashing-wizard/progress_page.h
+++ b/src/b2qt-flashing-wizard/progress_page.h
@@ -25,6 +25,7 @@ class QLabel;
class Actor;
class QTextEdit;
class QPushButton;
+class QProgressBar;
class ProgressPage : public QWizardPage
{
@@ -41,6 +42,9 @@ public slots:
void finished();
void failed(const QString &step);
void addDetails(QByteArray newData);
+ void addErrorDetails(QByteArray newData);
+ void showDetails();
+ void hideDetails();
void toggleDetails();
void copyDetailsToClipboard();
@@ -51,6 +55,7 @@ private:
QTextEdit *mTextEdit;
QPushButton *mToggleDetailsButton;
QPushButton *mCopyToClipboardButton;
+ QProgressBar *mProgressBar;
};
#endif // PROGRESS_PAGE_H
diff --git a/src/b2qt-flashing-wizard/scriptwriter.cpp b/src/b2qt-flashing-wizard/scriptwriter.cpp
index 594aecc..4e38bdd 100644
--- a/src/b2qt-flashing-wizard/scriptwriter.cpp
+++ b/src/b2qt-flashing-wizard/scriptwriter.cpp
@@ -34,7 +34,6 @@ ScriptWriter::ScriptWriter(QObject *parent)
, mDebug(false)
, mRoot(false)
{
- mProcess.setProcessChannelMode(QProcess::MergedChannels);
mDebug = qEnvironmentVariableIsSet("DEBUG");
}
@@ -81,7 +80,8 @@ bool ScriptWriter::ready(QString &error) const
void ScriptWriter::start()
{
- connect(&mProcess, &QProcess::readyReadStandardOutput, this, &ScriptWriter::readOutput);
+ connect(&mProcess, &QProcess::readyReadStandardOutput, this, &ScriptWriter::readStandardOutput);
+ connect(&mProcess, &QProcess::readyReadStandardError, this, &ScriptWriter::readStandardError);
connect(&mProcess, (void (QProcess::*)(QProcess::ProcessError))&QProcess::error, this, &ScriptWriter::processError);
connect(&mProcess, (void (QProcess::*)(int, QProcess::ExitStatus))&QProcess::finished, this, &ScriptWriter::processFinished);
@@ -99,7 +99,7 @@ void ScriptWriter::start()
qFatal("Failed to start script");
}
-void ScriptWriter::readOutput()
+void ScriptWriter::readStandardOutput()
{
QByteArray ba = mProcess.readAllStandardOutput();
QList<QByteArray> baList = ba.split('\n');
@@ -112,6 +112,12 @@ void ScriptWriter::readOutput()
emit details(ba);
}
+void ScriptWriter::readStandardError()
+{
+ QByteArray ba = mProcess.readAllStandardError();
+ emit errorDetails(ba);
+}
+
void ScriptWriter::processFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
if (exitStatus != QProcess::NormalExit || exitCode != 0) {
diff --git a/src/b2qt-flashing-wizard/scriptwriter.h b/src/b2qt-flashing-wizard/scriptwriter.h
index 68a7684..a984577 100644
--- a/src/b2qt-flashing-wizard/scriptwriter.h
+++ b/src/b2qt-flashing-wizard/scriptwriter.h
@@ -39,7 +39,8 @@ public:
void setRootFlag(bool);
private slots:
- void readOutput();
+ void readStandardOutput();
+ void readStandardError();
void processFinished(int, QProcess::ExitStatus);
void processError(QProcess::ProcessError);