#include "dialog_scaninfo.h" #include "ui_dialog_scaninfo.h" #include "mainwindow.h" #include 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(); }