code_app/app/scantool/dialog_scaninfo.cpp

99 lines
2.1 KiB
C++

#include "dialog_scaninfo.h"
#include "ui_dialog_scaninfo.h"
#include "mainwindow.h"
#include <QDesktopWidget>
Dialog_ScanInfo::Dialog_ScanInfo(class MainWindow *mainWindow)
: QDialog(nullptr)
, ui(new Ui::Dialog_ScanInfo)
, m_mainWindow(mainWindow)
, m_timerId(-1)
, m_error(false)
{
ui->setupUi(this);
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
ui->labelScanInfo->setWordWrap(true);
ui->labelScanInfo->setAlignment(Qt::AlignCenter);
QDesktopWidget *desktop = QApplication::desktop();
QRect workArea = desktop->availableGeometry();
move(workArea.right() - width(), workArea.bottom() - height());
}
Dialog_ScanInfo::~Dialog_ScanInfo()
{
delete ui;
}
void Dialog_ScanInfo::Start()
{
if (-1 != m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
}
m_error = false;
ui->labelScanInfo->setText("");
ui->labelScanCount->setText(tr("Scan count: 0"));
ui->pushButtonCancel->setVisible(true);
ui->pushButtonOK->setVisible(false);
show();
}
void Dialog_ScanInfo::SetScanInfo(const QString &info, bool error)
{
ui->labelScanInfo->setText(info);
m_error = error;
}
void Dialog_ScanInfo::SetScanCount(unsigned int count)
{
ui->labelScanCount->setText(tr("Scan count: ") + QString::number(count));
ui->labelScanCount->repaint();
this->repaint();
}
void Dialog_ScanInfo::Finish()
{
ui->pushButtonCancel->setVisible(false);
ui->pushButtonOK->setVisible(true);
if (!m_error)
{
if (-1 != m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
}
m_timerId = this->startTimer(1000);
}
}
void Dialog_ScanInfo::timerEvent(QTimerEvent* e)
{
if (e->timerId() == m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
hide();
}
}
void Dialog_ScanInfo::on_pushButtonOK_clicked()
{
if (-1 != m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
}
hide();
}
void Dialog_ScanInfo::on_pushButtonCancel_clicked()
{
m_mainWindow->StopScan();
}