#include "dialog_device_select.hpp" #include "ui_dialog_device_select.h" #include Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_Device_Select) { ui->setupUi(this); memcpy(&m_saneAPI, saneApi, sizeof(SANEAPI)); m_devHandle = nullptr; m_devName.clear(); m_vDevName.clear(); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); const SANE_Device** device_list; if (SANE_STATUS_GOOD == saneApi->sane_get_devices_api(&device_list, SANE_TRUE)) { const SANE_Device** p; for (p = device_list; *p != nullptr; ++p) { m_vDevName.push_back((*p)->name); ui->listWidget->addItem((*p)->name); } } if (!m_vDevName.empty()) { ui->listWidget->setCurrentRow(0); } } Dialog_Device_Select::~Dialog_Device_Select() { delete ui; } SANE_Handle Dialog_Device_Select::GetDevHandle() { return m_devHandle; } std::string Dialog_Device_Select::GetDevName() { return m_devName; } void Dialog_Device_Select::on_pushButton_OK_clicked() { int index = ui->listWidget->currentRow(); if (index < 0) { return; } SANE_Handle dev = nullptr; SANE_Status ret = m_saneAPI.sane_open_api(m_vDevName[index].c_str(), &dev); if (SANE_STATUS_GOOD != ret) { QMessageBox::information(this, tr("tips"), tr(m_saneAPI.sane_strstatus_api(ret))); return; } m_devHandle = dev; m_devName = m_vDevName[index]; accept(); } void Dialog_Device_Select::on_pushButton_Cancel_clicked() { reject(); }