diff options
author | Rainer Keller <rainer.keller@digia.com> | 2014-11-06 13:56:23 +0100 |
---|---|---|
committer | Rainer Keller <rainer.keller@theqtcompany.com> | 2014-11-06 15:27:37 +0200 |
commit | 34dda314cbb920ab85ce908c5f326d9a1491d070 (patch) | |
tree | 9a167c4caee09349635220045cc17862944b2a05 /src/b2qt-flashing-wizard/progress_page.cpp | |
parent | c428253ed91fa62c4ccb1ae676f58a4ba9821ca7 (diff) |
Add b2qt-flashing-wizard
Change-Id: I2aec410a9c27b3d1f8df88b983e55cd3d890bdf2
Reviewed-by: Rainer Keller <rainer.keller@theqtcompany.com>
Diffstat (limited to 'src/b2qt-flashing-wizard/progress_page.cpp')
-rw-r--r-- | src/b2qt-flashing-wizard/progress_page.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/b2qt-flashing-wizard/progress_page.cpp b/src/b2qt-flashing-wizard/progress_page.cpp new file mode 100644 index 0000000..de23942 --- /dev/null +++ b/src/b2qt-flashing-wizard/progress_page.cpp @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ + +#include "progress_page.h" +#include "actor.h" +#include <QDebug> +#include <QProgressBar> +#include <QLayout> +#include <QPushButton> +#include <QTextEdit> +#include <QTimer> + +ProgressPage::ProgressPage(QWidget *parent) + : QWizardPage(parent) + , mProgress(new QProgressBar(this)) + , mActor(0) + , mFinished(false) + , mTextEdit(new QTextEdit(this)) + , mNextProgress(0) + , mTimer(new QTimer(this)) +{ + setTitle("Disk creation"); + setSubTitle("Progress of writing the disk"); + setLayout(new QVBoxLayout(this)); + layout()->addWidget(mProgress); + mProgress->setMaximum(0); + mProgress->setMinimum(0); + QPushButton *button = new QPushButton(this); + button->setText("Show details"); + layout()->addWidget(button); + layout()->addWidget(mTextEdit); + QPushButton *copy = new QPushButton(this); + copy->setText("Copy to clipboard"); + layout()->addWidget(copy); + + connect(mTimer, &QTimer::timeout, this, &ProgressPage::progressTimeout); +} + +ProgressPage::~ProgressPage() +{ +} + +bool ProgressPage::isComplete() const +{ + return mFinished; +} + +void ProgressPage::initializePage() +{ + qDebug() << Q_FUNC_INFO; + Q_ASSERT(mActor); + mActor->start(); +} + +void ProgressPage::progressTimeout() +{ + int value = mProgress->value(); + ++value; + if (value > mNextProgress) + value = mNextProgress; + + mProgress->setValue(value); +} + +void ProgressPage::progress(unsigned int progress, unsigned int nextProgress, unsigned int milliseconds) +{ + if (nextProgress < progress) + qFatal("Error"); + + mNextProgress = nextProgress; + mProgress->setMaximum(100); + + if (milliseconds && nextProgress != progress) { + mTimer->setInterval(milliseconds / (nextProgress-progress)); + mTimer->start(); + } else + mTimer->stop(); + + qDebug() << "progress" << progress; + mProgress->setValue(progress); +} + +void ProgressPage::finished() +{ + qDebug() << Q_FUNC_INFO; + mFinished = true; + emit completeChanged(); + wizard()->next(); // progress to next page automatically +} + +void ProgressPage::setActor(Actor *actor) +{ + Q_ASSERT(actor); + mActor = actor; + connect(actor, &Actor::progress, this, &ProgressPage::progress); + connect(actor, &Actor::finished, this, &ProgressPage::finished); + connect(actor, &Actor::details, this, &ProgressPage::addDetails); +} + +void ProgressPage::addDetails(QByteArray newData) +{ + newData.replace(0x08 /* backspace */, ' '); + mTextEdit->append(QString::fromLocal8Bit(newData)); +} |