#include "dialog_inputserialnum.h" #include "ui_dialog_inputserialnum.h" #include "mainwindow.h" Dialog_InputSerialNum::Dialog_InputSerialNum(class MainWindow *mainWnd, const QString &devName, SANE_Handle handle, const QString &serialNum, const QString &devType) : QDialog(mainWnd), ui(new Ui::Dialog_InputSerialNum), m_mainWnd(mainWnd), m_handle(handle), m_valid(true), m_serialNum(serialNum), m_devType(devType) , m_devName(devName) { ui->setupUi(this); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); QFont ft; ft.setPointSize(15); this->setFont(ft); ui->lineEdit_sn->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z0-9]+$"))); if (handle != nullptr) { ui->cbox_devType->setEnabled(false); ui->cbox_devType->setCurrentText(devType); ui->lineEdit_sn->setText(serialNum); ui->lineEdit_sn->selectAll(); } else { ui->cbox_devType->setCurrentIndex(0); ui->lineEdit_sn->setText(""); ui->pbtn_setSn->setEnabled(false); } } Dialog_InputSerialNum::~Dialog_InputSerialNum() { delete ui; } QString Dialog_InputSerialNum::GetSn() { return ui->lineEdit_sn->text(); } QString Dialog_InputSerialNum::GetDevType() { return ui->cbox_devType->currentText(); } void Dialog_InputSerialNum::Invalid(const QString &devName) { if (devName == m_devName) { sane_close(m_handle); m_handle = nullptr; m_valid = false; reject(); } } void Dialog_InputSerialNum::on_pbtn_ok_clicked() { if (!m_valid) { QMessageBox::information(this, tr("tips"), tr("device is lost")); reject(); return; } if (ui->lineEdit_sn->text().isEmpty()) { QMessageBox::information(this, tr("tips"), tr("Serial num is empty")); return; } QString str = ui->lineEdit_sn->text(); for (int i = 0; i < str.size(); ++i) { if ((str.at(i) < '0' && str.at(i) > '9') || (str.at(i) < 'A' && str.at(i) > 'Z')) { QMessageBox::information(this, tr("tips"), tr("sn is illegal")); return; } } if (m_mainWnd->FindInterface(ui->lineEdit_sn->text()) != nullptr) { QMessageBox::information(this, tr("tips"), tr("The device is testing")); return; } accept(); } void Dialog_InputSerialNum::on_pbtn_cancel_clicked() { reject(); } void Dialog_InputSerialNum::on_pbtn_setSn_clicked() { QString sn = ui->lineEdit_sn->text(); std::string serialNum = sn.toStdString(); if(SANE_STATUS_GOOD != sane_io_control(m_handle, IO_CTRL_CODE_SET_SERIAL, &serialNum[0], nullptr)) { QMessageBox::information(this, tr("tips"), tr("set sn failed")); } else { ui->lineEdit_sn->setText(m_mainWnd->getDevSn(m_handle)); QMessageBox::information(this, tr("tips"), tr("set sn succeed")); } }