UpdatePTUDevCtrl/mainwindow.cpp

98 lines
3.4 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "worker.h"
#include "utils.h"
#include <QDateTime>
#include <QMessageBox>
#include <QDebug>
MainWindow::MainWindow(Worker *worker, QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, m_worker(worker)
, m_width(52) {
ui->setupUi(this);
ui->updateProgress->setRange(1, 100);
ui->updateProgress->reset();
m_startTimer = new QTimer(this);
connect(m_startTimer, SIGNAL(timeout()), ui->start, SLOT(click()));
m_startTimer->setSingleShot(true);
m_startTimer->start(5 * 1000);
m_exitTimer = new QTimer(this);
connect(m_exitTimer, SIGNAL(timeout()), ui->exit, SLOT(click()));
m_exitTimer->setSingleShot(true);
m_exitTimer->start(1800 * 1000);
connect(m_startTimer, SIGNAL(timeout()), ui->start, SLOT(click()));
connect(m_exitTimer, SIGNAL(timeout()), ui->exit, SLOT(click()));
connect(ui->start, SIGNAL(clicked()), m_worker, SLOT(update()));
connect(ui->exit, SIGNAL(clicked()), this, SLOT(onQuit()));
connect(m_worker, SIGNAL(stopStartTimer()), this, SLOT(onStopStartTimer()));
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(setProgress(quint8)), this, SLOT(onSetProgress(quint8)));
QStringList lst;
QString start = QDateTime::currentDateTime().toString(Qt::ISODate);
lst << QString("Start: ") + start.leftJustified(m_width-10);
lst << QString("").leftJustified(m_width-3, '=');
lst << QString("Machine number : %1 ").arg(m_worker->machineNr()).leftJustified(m_width-3);
lst << QString("Customer number : %1 ").arg(m_worker->customerNr()).leftJustified(m_width-3);
lst << QString("Zone number : %1 (%2)").arg(m_worker->zoneNr()).arg(Utils::zoneName(m_worker->zoneNr())).leftJustified(m_width-3);
lst << QString("").leftJustified(m_width-3, '=');
ui->updateStatus->setText(lst.join('\n'));
ui->updateStatus->setEnabled(true);
}
MainWindow::~MainWindow() {
delete m_startTimer;
delete m_exitTimer;
delete ui;
}
void MainWindow::onStopStartTimer() {
m_startTimer->stop();
}
void MainWindow::onRestartExitTimer() {
m_exitTimer->stop();
m_exitTimer->start(5 * 1000);
}
void MainWindow::onQuit() {
if (!m_worker->updateProcessRunning()) {
qApp->quit();
}
}
void MainWindow::onSetProgress(quint8 v) {
ui->updateProgress->setValue(v);
}
void MainWindow::onAppendText(QString text, QString suffix) {
QString editText = ui->updateStatus->toPlainText();
QStringList lines = editText.split('\n');
for (int i=0; i<lines.size(); ++i) {
qCritical() << lines.at(i);
}
if (!suffix.contains("[SUCCESS]")) {
editText += text.leftJustified(m_width-9) + suffix;
ui->updateStatus->setPlainText(editText);
} else {
editText += QString("\n").leftJustified(m_width-3, '=');
editText += QString("\n").leftJustified(m_width-12) + " [SUCCESS]";
}
ui->updateStatus->setText(editText);
ui->updateStatus->setEnabled(true);
}
void MainWindow::onShowErrorMessage(QString title, QString text) {
QMessageBox::critical(this, title, text, QMessageBox::Ok);
}