code_production/app/HGProductionTool/dialog_inputserialnum.cpp

118 lines
2.9 KiB
C++

#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"));
}
}