summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@theqtcompany.com>2015-06-16 16:23:32 +0300
committerSamuli Piippo <samuli.piippo@theqtcompany.com>2015-06-16 16:23:32 +0300
commitf8738120d5085e13752e69fa9eb46bb10fcc8111 (patch)
tree933c3ae0a03354a0e7e17832956672db040602a4
parent0e0f5e8bb841c588d323b76042c970745d0904c6 (diff)
parentfc10269ca529489dd38a99320dee6046c441074c (diff)
Merge remote-tracking branch 'origin/stable' into dev
* origin/stable: Doc: Bump version to 4.2.0 Doc: ChangeLog for release 4.2.0 doc: simpler uboot command for colibri vf doc: Update colibri vf instructions b2qt-flashing-wizard: Remove unused variables b2qt-flashing-wizard: Files are now located at a different location b2qt-flashing-wizard: Script standard error in red color b2qt-flashing-wizard: Hints for users to find error messages more easily Doc: ChangeLog: Update 4.1.0 release date Doc: Update minimal hardware requirements Doc: Fix issues in Wifi module documentation Doc: Bump version to 4.1.0 Doc: Update the list of required packages for BYOS Doc: Rename instances of 'Digia' to 'The Qt Company' Doc: Move Toradex Colibri VF61 to Supported Device Group 1 Doc: Updated copyright license holder in documentation footer Doc: Add table of contents in the sidebar Doc: Move 'Value-Add Components' list to the overview page Doc: ChangeLog for 4.1.0 release b2qt-flashing-wizard: Disable next page when no platforms found Conflicts: src/doc/config/b2qt.qdocconf src/doc/src/devices/qtee-supported-devices.qdoc src/doc/src/qtee-changelog.qdoc src/doc/src/qtee-index.qdoc src/wifi/qwifimanager.cpp Change-Id: I00ecc61a1e9eea6dd26ecc9a568f07cd64a6296a
-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
-rw-r--r--src/doc/src/devices/qtee-supported-devices.qdoc7
-rw-r--r--src/doc/src/devices/qtee-toradex-colibri-vf.qdoc7
-rw-r--r--src/doc/src/qtee-changelog.qdoc25
-rw-r--r--src/doc/src/qtee-index.qdoc16
10 files changed, 121 insertions, 38 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 609a5aa..ea51966 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);
diff --git a/src/doc/src/devices/qtee-supported-devices.qdoc b/src/doc/src/devices/qtee-supported-devices.qdoc
index 1b4cd4f..c11fd73 100644
--- a/src/doc/src/devices/qtee-supported-devices.qdoc
+++ b/src/doc/src/devices/qtee-supported-devices.qdoc
@@ -60,9 +60,12 @@
\list
\li 256 MB of RAM
\li 500 MHz CPU, 1 GHz preferred for 60-FPS velvet-smooth UI
- \li OpenGL ES 2.0 support
+ \li OpenGL ES 2.0 support *
\endlist
+ * On GPU-less hardware, \l {Qt Quick 2D Renderer} can replace the
+ OpenGL ES 2.0 requirement (with some limitations on graphics capabilities).
+
\section1 Supported Device Groups
The reference devices are divided into three groups, based on level
@@ -186,7 +189,7 @@
\li HDMI
\li HW Accelerated \br Video Playback
\li Virtual Keyboard
- \li Qt WiFi Module
+ \li B2Qt WiFi Module
\li B2Qt Utils Module
\li OpenGL ES 2.0
\li Qt Quick \br 2D Renderer
diff --git a/src/doc/src/devices/qtee-toradex-colibri-vf.qdoc b/src/doc/src/devices/qtee-toradex-colibri-vf.qdoc
index 5c01753..5753256 100644
--- a/src/doc/src/devices/qtee-toradex-colibri-vf.qdoc
+++ b/src/doc/src/devices/qtee-toradex-colibri-vf.qdoc
@@ -56,15 +56,14 @@
sudo Boot2Qt-4.x/colibri-vf-eLinux/images/deploy.sh /dev/<device_name>
\endcode
- By default, the Toradex Colibri-VF devices boot from their internal eMMC. In order to boot from
+ By default, the Toradex Colibri VF devices boot from their internal NAND memory. In order to boot from
an external SD card, the U-Boot needs to be modified. Connect a serial cable
to the device and enter into the U-Boot environment by pressing any key before the autoboot.
Enter following commands into U-Boot:
\badcode
- set bootcmd 'run sdboot; run ubiboot; run nfsboot;'
- set sdboot 'run setup; setenv bootargs ${defargs} ${mmcargs} ${mtdparts} ${setupargs} ${vidargs}; echo Booting from MMC/SD card...; mmc part 0; fatload mmc 0:1 ${loadaddr} zImage && bootz'
- save
+ run setupdate
+ run update_uboot
\endcode
Reset or power cycle the device to continue.
diff --git a/src/doc/src/qtee-changelog.qdoc b/src/doc/src/qtee-changelog.qdoc
index 8f90948..bfaa919 100644
--- a/src/doc/src/qtee-changelog.qdoc
+++ b/src/doc/src/qtee-changelog.qdoc
@@ -23,9 +23,32 @@
\previouspage qtee-customization.html
\nextpage qtee-troubleshooting.html
+ \section1 Boot to Qt 4.2.0
+ \list
+ \li Release date: Jun 02, 2015
+ \endlist
+
+ \section2 Changes
+
+ \b{New Features}:
+ \list
+ \li \B2Q stack was updated to use Qt 5.4.2 on embedded Android
+ and Linux.
+ \li \l {Qt Virtual Keyboard} was updated to version 1.3.0.
+ \li Enabled Chinese (Pinyin), Korean (Hangul) and Japanese (OpenWnn)
+ input methods for Qt Virtual Keyboard.
+ \endlist
+
+ \b {Improvements}:
+ \list
+ \li Boot to Qt Flashing Wizard: Improved error messages for flashing failures.
+ \li Toradex Colibri VF and Apalis iMX6 images updated to use the latest
+ release (v2.3).
+ \endlist
+
\section1 \B2Q 4.1.0
\list
- \li Release date: Feb 19, 2015
+ \li Release date: Feb 24, 2015
\endlist
\section2 Changes
diff --git a/src/doc/src/qtee-index.qdoc b/src/doc/src/qtee-index.qdoc
index 7deac5e..64635d7 100644
--- a/src/doc/src/qtee-index.qdoc
+++ b/src/doc/src/qtee-index.qdoc
@@ -99,24 +99,26 @@
For overview about Qt libraries see the \l {Qt reference documentation}.
- \section1 Additional Embedded Libraries and Value-Adds
+ \section1 Additional Embedded Libraries and Value-Add Components
In addition to the Boot to Qt stack and a comprehensive development
- environment, \SDK comes with a set of components that speed up the creation
- of responsive embedded applications with modern UI:
+ environment, \SDK comes with a set of components that bring new features and
+ speed up the creation of high-performing, modern UI embedded applications:
\list
\li \l {Qt Virtual Keyboard} - complete virtual keyboard solution with
- word-prediction and multiple languages support.
+ word-prediction and multiple languages supported.
\li \l {Qt Quick Enterprise Controls} - a set of advanced UI controls
with an industry-specific look-and-feel.
- \li \l {Qt Quick Compiler} - a QML complier that helps in securing the
- code assets, and enables improved load time.
+ \li \l {Qt Quick Compiler} - enables compiling .qml source files into
+ application binaries, improving load times and security for code
+ assets.
\li \l {Qt Charts} - UI Components for displaying visually pleasing
charts, driven by static or dynamic data models.
\li \l {Qt Data Visualization} - UI Components for creating stunning 3D
data visualizations.
- \li \l {Qt Quick 2D Renderer} - Qt Quick renderer for GPU-less devices.
+ \li \l {Qt Quick 2D Renderer} - enables Qt Quick UIs on GPU-less
+ devices.
\endlist
\section1 About the Development Environment