2023-03-30 10:20:26 +00:00
|
|
|
#include "dialog_device_select.hpp"
|
2023-03-28 10:38:35 +00:00
|
|
|
#include "ui_dialog_device_select.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
2023-04-03 09:13:53 +00:00
|
|
|
Dialog_Device_Select::Dialog_Device_Select(const SANEAPI* saneApi, QWidget *parent) :
|
2023-03-28 10:38:35 +00:00
|
|
|
QDialog(parent),
|
|
|
|
ui(new Ui::Dialog_Device_Select)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
2023-03-29 08:16:19 +00:00
|
|
|
|
2023-03-29 10:04:59 +00:00
|
|
|
memcpy(&m_saneAPI, saneApi, sizeof(SANEAPI));
|
|
|
|
m_devHandle = nullptr;
|
|
|
|
m_devName.clear();
|
|
|
|
m_vDevName.clear();
|
|
|
|
|
2023-04-03 03:06:14 +00:00
|
|
|
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
|
|
|
|
2023-03-29 08:16:19 +00:00
|
|
|
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)
|
|
|
|
{
|
2023-03-29 10:04:59 +00:00
|
|
|
m_vDevName.push_back((*p)->name);
|
2023-03-29 08:16:19 +00:00
|
|
|
ui->listWidget->addItem((*p)->name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-29 10:04:59 +00:00
|
|
|
if (!m_vDevName.empty())
|
|
|
|
{
|
|
|
|
ui->listWidget->setCurrentRow(0);
|
|
|
|
}
|
2023-03-28 10:38:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Dialog_Device_Select::~Dialog_Device_Select()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
}
|
|
|
|
|
2023-03-29 08:16:19 +00:00
|
|
|
SANE_Handle Dialog_Device_Select::GetDevHandle()
|
|
|
|
{
|
|
|
|
return m_devHandle;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string Dialog_Device_Select::GetDevName()
|
|
|
|
{
|
|
|
|
return m_devName;
|
|
|
|
}
|
|
|
|
|
2023-03-29 10:04:59 +00:00
|
|
|
void Dialog_Device_Select::on_pushButton_OK_clicked()
|
2023-03-28 10:38:35 +00:00
|
|
|
{
|
2023-03-29 10:04:59 +00:00
|
|
|
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;
|
|
|
|
}
|
2023-03-28 10:38:35 +00:00
|
|
|
|
2023-03-29 10:04:59 +00:00
|
|
|
m_devHandle = dev;
|
|
|
|
m_devName = m_vDevName[index];
|
|
|
|
accept();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Dialog_Device_Select::on_pushButton_Cancel_clicked()
|
|
|
|
{
|
|
|
|
reject();
|
2023-03-28 10:38:35 +00:00
|
|
|
}
|