code_app/app/scantool/dialog_add.cpp

131 lines
4.1 KiB
C++

#include "dialog_add.h"
#include "ui_dialog_add.h"
#include "mainwindow.h"
#include <QMessageBox>
Dialog_Add::Dialog_Add(SANE_Handle devHandle, class MainWindow *mainWnd, const std::string &deviceType, int buttonId)
: QDialog(mainWnd)
, ui(new Ui::Dialog_Add)
, m_mainWnd(mainWnd)
, m_index(-1)
{
ui->setupUi(this);
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
this->setWindowTitle(tr("Add") + " (" + QString(deviceType.c_str()) + ")");
#if defined (x86_64)
ui->comboBoxButtonId->setMinimumWidth(90);
#endif
ui->comboBoxButtonId->addItem(tr("Manual"));
SANE_Int buttonCount = 0;
sane_control_option(devHandle, (SANE_Int)0x886E, SANE_ACTION_GET_VALUE, &buttonCount, NULL);
for (SANE_Int i = 0; i < buttonCount; ++i)
ui->comboBoxButtonId->addItem(tr("Button ") + QString::number(i + 1));
if (buttonId < ui->comboBoxButtonId->count())
ui->comboBoxButtonId->setCurrentIndex(buttonId);
m_scanParam.deviceType = deviceType;
m_scanParam.buttonId = ui->comboBoxButtonId->currentIndex();
m_scanParam.deviceConfigs.clear();
m_scanParam.saveParam = Form_SaveParam::GetDefSaveParam();
m_formDeviceConfig = new Form_DeviceConfig(devHandle, m_scanParam.deviceConfigs, this);
connect(this, SIGNAL(closeDevice()), m_formDeviceConfig, SLOT(on_closeDevice()));
m_formSaveParam = new Form_SaveParam(m_scanParam.saveParam, this);
connect(this, SIGNAL(closeDevice()), m_formSaveParam, SLOT(on_closeDevice()));
ui->stackedWidget->addWidget(m_formDeviceConfig);
ui->stackedWidget->addWidget(m_formSaveParam);
ui->stackedWidget->setCurrentIndex(0);
}
Dialog_Add::Dialog_Add(SANE_Handle devHandle, class MainWindow *mainWnd, const ScanParam &scanParam, int index)
: QDialog(mainWnd)
, ui(new Ui::Dialog_Add)
, m_mainWnd(mainWnd)
, m_index(index)
{
ui->setupUi(this);
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
this->setWindowTitle(tr("Modify") + " (" + QString(scanParam.deviceType.c_str()) + ")");
#if defined (x86_64)
ui->comboBoxButtonId->setMinimumWidth(90);
#endif
ui->comboBoxButtonId->addItem(tr("Manual"));
SANE_Int buttonCount = 0;
sane_control_option(devHandle, (SANE_Int)0x886E, SANE_ACTION_GET_VALUE, &buttonCount, NULL);
for (SANE_Int i = 0; i < buttonCount; ++i)
ui->comboBoxButtonId->addItem(tr("Button ") + QString::number(i + 1));
m_scanParam = scanParam;
ui->comboBoxButtonId->setCurrentIndex(m_scanParam.buttonId);
ui->comboBoxButtonId->setEnabled(false);
m_formDeviceConfig = new Form_DeviceConfig(devHandle, m_scanParam.deviceConfigs, this);
connect(this, SIGNAL(closeDevice()), m_formDeviceConfig, SLOT(on_closeDevice()));
m_formSaveParam = new Form_SaveParam(m_scanParam.saveParam, this);
connect(this, SIGNAL(closeDevice()), m_formSaveParam, SLOT(on_closeDevice()));
ui->stackedWidget->addWidget(m_formDeviceConfig);
ui->stackedWidget->addWidget(m_formSaveParam);
ui->stackedWidget->setCurrentIndex(0);
}
Dialog_Add::~Dialog_Add()
{
delete m_formSaveParam;
m_formSaveParam = nullptr;
disconnect(this, SIGNAL(closeDevice()), m_formDeviceConfig, SLOT(on_closeDevice()));
delete m_formDeviceConfig;
m_formDeviceConfig = nullptr;
delete ui;
}
ScanParam Dialog_Add::GetScanParam()
{
return m_scanParam;
}
void Dialog_Add::on_closeDevice()
{
emit closeDevice();
reject();
}
void Dialog_Add::on_pushButtonDeviceConfig_clicked()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Dialog_Add::on_pushButtonSaveParam_clicked()
{
ui->stackedWidget->setCurrentIndex(1);
}
void Dialog_Add::on_comboBoxButtonId_currentIndexChanged(int index)
{
if (index >= 0)
m_scanParam.buttonId = index;
}
void Dialog_Add::on_pushButtonOK_clicked()
{
if (m_mainWnd->FindScanParam(m_scanParam.deviceType, m_scanParam.buttonId, m_index))
{
QMessageBox::information(this, tr("Tips"), tr("Item find in list"));
return;
}
m_scanParam.deviceConfigs = m_formDeviceConfig->GetDeviceConfigs();
m_scanParam.saveParam = m_formSaveParam->GetSaveParam();
accept();
}
void Dialog_Add::on_pushButtonCancel_clicked()
{
reject();
}