#include "dialog_scaninfo.h" #include "ui_dialog_scaninfo.h" #include "dialog_scan.h" #include #include Dialog_ScanInfo::Dialog_ScanInfo(class Dialog_Scan *dlgScan) : QDialog(nullptr) , ui(new Ui::Dialog_ScanInfo) , m_dlgScan(dlgScan) , m_timer(nullptr) , m_error(false) { ui->setupUi(this); setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); m_timer = new QTimer(this); 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() { m_error = false; ui->labelScanInfo->setText(""); ui->labelScanInfo->repaint(); ui->labelScanCount->setText(tr("Scan count: 0")); ui->labelScanCount->repaint(); this->repaint(); ui->pushButtonCancel->setVisible(true); ui->pushButtonOK->setVisible(false); show(); } void Dialog_ScanInfo::SetScanInfo(const QString &info, bool error) { ui->labelScanInfo->setText(info); ui->labelScanInfo->repaint(); this->repaint(); 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) { m_timer->start(1000); connect(m_timer, &QTimer::timeout, this, &Dialog_ScanInfo::on_pushButtonOK_clicked); } } void Dialog_ScanInfo::on_pushButtonOK_clicked() { disconnect(m_timer, &QTimer::timeout, this, &Dialog_ScanInfo::on_pushButtonOK_clicked); hide(); } void Dialog_ScanInfo::on_pushButtonCancel_clicked() { m_dlgScan->StopScan(); }