72 lines
1.8 KiB
C++
72 lines
1.8 KiB
C++
#include "dialog_twain_source_select.h"
|
|
#include "ui_dialog_twain_source_select.h"
|
|
|
|
Dialog_Twain_Source_Select::Dialog_Twain_Source_Select(const std::vector<TW_IDENTITY> &vds,
|
|
const std::string &defDSName, QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::Dialog_Twain_Source_Select)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
m_vSource = vds;
|
|
memset(&m_ds, 0, sizeof(TW_IDENTITY));
|
|
|
|
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
|
|
|
for (int i = 0; i < m_vSource.size(); ++i)
|
|
{
|
|
char name[256];
|
|
sprintf(name, "%s %u.%u", m_vSource[i].ProductName, m_vSource[i].Version.MajorNum, m_vSource[i].Version.MinorNum);
|
|
ui->listWidget->addItem(name);
|
|
|
|
if (0 == strcmp(m_vSource[i].ProductName, defDSName.c_str()))
|
|
{
|
|
ui->listWidget->setCurrentItem(ui->listWidget->item(i));
|
|
}
|
|
}
|
|
|
|
QListWidgetItem *item = ui->listWidget->currentItem();
|
|
if (item == nullptr)
|
|
ui->listWidget->setCurrentRow(0);
|
|
}
|
|
|
|
Dialog_Twain_Source_Select::~Dialog_Twain_Source_Select()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void Dialog_Twain_Source_Select::GetIdentify(TW_IDENTITY *ds)
|
|
{
|
|
memcpy(ds, &m_ds, sizeof(TW_IDENTITY));
|
|
}
|
|
|
|
void Dialog_Twain_Source_Select::keyPressEvent(QKeyEvent *e)
|
|
{
|
|
if (e->key() == Qt::Key_Escape)
|
|
{
|
|
e->ignore();
|
|
}
|
|
}
|
|
|
|
void Dialog_Twain_Source_Select::on_pushButton_OK_clicked()
|
|
{
|
|
int index = ui->listWidget->currentRow();
|
|
if (index < 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
memcpy(&m_ds, &m_vSource[index], sizeof(TW_IDENTITY));
|
|
accept();
|
|
}
|
|
|
|
void Dialog_Twain_Source_Select::on_pushButton_Cancel_clicked()
|
|
{
|
|
reject();
|
|
}
|
|
|
|
void Dialog_Twain_Source_Select::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
|
|
{
|
|
on_pushButton_OK_clicked();
|
|
}
|