#include "dialog_add.h" #include "ui_dialog_add.h" #include "mainwindow.h" #include 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()) + ")"); 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 (buttonCount >= buttonId) 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); 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()) + ")"); 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); 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); 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(); }