From 1fd2269753fcf5ac4498916b2f341dd901108913 Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Sun, 6 Aug 2023 14:14:47 +0200 Subject: [PATCH] onAppendText() only appends text. onReplaceLast() replaces the last line in the text edit window. --- mainwindow.cpp | 51 ++++++++++++++++++++++++++++++++++---------------- mainwindow.h | 3 ++- worker.cpp | 16 ++++++++++++++-- worker.h | 3 ++- 4 files changed, 53 insertions(+), 20 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index fd5f34d..38f11fa 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -12,10 +12,10 @@ MainWindow::MainWindow(Worker *worker, QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) , m_worker(worker) - , m_width(52) { + , m_width(70) { ui->setupUi(this); - ui->updateProgress->setRange(1, 100); + ui->updateProgress->setRange(0, 100); ui->updateProgress->reset(); QStringList lst; @@ -57,6 +57,7 @@ MainWindow::MainWindow(Worker *worker, QWidget *parent) connect(m_worker, SIGNAL(restartExitTimer()), this, SLOT(onRestartExitTimer())); connect(m_worker, SIGNAL(appendText(QString, QString)), this, SLOT(onAppendText(QString, QString))); connect(m_worker, SIGNAL(showErrorMessage(QString,QString)), this, SLOT(onShowErrorMessage(QString,QString))); + connect(m_worker, SIGNAL(replaceLast(QString, QString)), this, SLOT(onReplaceLast(QString,QString))); ui->updateStatus->setText(lst.join('\n')); ui->updateStatus->setEnabled(true); @@ -71,7 +72,11 @@ MainWindow::~MainWindow() { void MainWindow::customEvent(QEvent *event) { if (event->type() == ProgressEvent::type()) { int progress = ((ProgressEvent *)(event))->progressPercent(); - ui->updateProgress->setValue(progress); + if (progress > 0) { + ui->updateProgress->setValue(progress); + } else { + ui->updateProgress->reset(); + } } } @@ -100,22 +105,36 @@ void MainWindow::onQuit() { void MainWindow::onAppendText(QString text, QString suffix) { QString editText = ui->updateStatus->toPlainText(); + if (suffix.size() > 0) { + editText += QString("\n").leftJustified(m_width-3, '='); + editText += " "; + editText += (QString("\n") + text).leftJustified(m_width - (2 + suffix.size()) ) + suffix; + } else { + editText += text.leftJustified(m_width-9); + } + QStringList lines = editText.split('\n'); for (int i=0; iupdateStatus->setPlainText(editText); + ui->updateStatus->setEnabled(true); +} + +void MainWindow::onReplaceLast(QString text, QString suffix) { + QString editText = ui->updateStatus->toPlainText(); + QStringList lines = editText.split('\n'); + if (lines.size() > 0) { + lines.removeLast(); + lines += text.leftJustified(m_width-10) + suffix; } - if (suffix.contains("[SUCCESS]")) { - editText += QString("\n").leftJustified(m_width-3, '='); - editText += QString("\n").leftJustified(m_width-12) + " [SUCCESS]"; - } else - if (suffix.contains(" [fail]")) { - editText += QString("\n").leftJustified(m_width-3, '='); - editText += QString("\n").leftJustified(m_width-9) + " [fail]"; - } else { - editText += text.leftJustified(m_width-9) + suffix; - ui->updateStatus->setPlainText(editText); - } - ui->updateStatus->setText(editText); + + for (int i=0; iupdateStatus->setText(lines.join('\n')); ui->updateStatus->setEnabled(true); } diff --git a/mainwindow.h b/mainwindow.h index 46e5ef9..e71ed78 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -21,7 +21,8 @@ public: ~MainWindow(); public slots: - void onAppendText(QString, QString); + void onAppendText(QString, QString suffix = ""); + void onReplaceLast(QString, QString); void onShowErrorMessage(QString, QString); void onStopStartTimer(); void onRestartExitTimer(); diff --git a/worker.cpp b/worker.cpp index cc25155..b45efdb 100644 --- a/worker.cpp +++ b/worker.cpp @@ -26,7 +26,7 @@ QString const Worker::UPDATE_STEP_OK(" [ ok]"); QString const Worker::UPDATE_STEP_DONE(" [done]"); -QString const Worker::UPDATE_STEP_FAIL(" [fail]"); +QString const Worker::UPDATE_STEP_FAIL(" [FAIL]"); QString const Worker::UPDATE_STEP_SUCCESS(" [SUCCESS]"); Worker::Worker(hwinf *hw, @@ -130,6 +130,18 @@ void Worker::privateUpdate() { QPushButton *start = qobject_cast(QObject::sender()); start->setEnabled(false); + //emit appendText("\nConnecting backend ..."); + // + //for (int i=0;i <= 100; ++i) { + // setProgress(i); + // QThread::msleep(100); + //} + //emit replaceLast("Connecting backend ...", UPDATE_STEP_OK); + //emit appendText(QString("UPDATE "), UPDATE_STEP_SUCCESS); + //emit appendText(QString("UPDATE "), UPDATE_STEP_FAIL); + // setProgress(0); + // return; + emit stopStartTimer(); emit disableExit(); m_updateProcessRunning = true; @@ -211,7 +223,7 @@ void Worker::privateUpdate() { progress = 90; setProgress(progress); m_ismasClient.setProgressInPercent(progress); - emit appendText(QString(""), UPDATE_STEP_SUCCESS); + emit appendText(QString("Update process "), UPDATE_STEP_SUCCESS); IsmasClient::sendRequestReceiveResponse(IsmasClient::APISM::DB_PORT, QString("#M=APISM#C=CMD_EVENT#J=") + diff --git a/worker.h b/worker.h index 348b5b6..5daea58 100644 --- a/worker.h +++ b/worker.h @@ -180,7 +180,8 @@ public: //} signals: - void appendText(QString, QString); + void appendText(QString, QString suffix = ""); + void replaceLast(QString, QString); void showErrorMessage(QString title, QString description); void stopStartTimer(); void restartExitTimer();