118 lines
2.9 KiB
C++
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"));
|
|
}
|
|
}
|