75 lines
1.6 KiB
C++
75 lines
1.6 KiB
C++
#include "dialog_device_select.h"
|
|
#include "ui_dialog_device_select.h"
|
|
#include <QMessageBox>
|
|
|
|
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"), QString::fromUtf8(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();
|
|
}
|