code_app/modules/twainui/dialog_twain_source_select.cpp

72 lines
1.8 KiB
C++
Raw Normal View History

#include "dialog_twain_source_select.h"
#include "ui_dialog_twain_source_select.h"
2023-05-30 11:11:24 +00:00
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);
2023-05-30 11:11:24 +00:00
m_vSource = vds;
memset(&m_ds, 0, sizeof(TW_IDENTITY));
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
2023-05-30 11:11:24 +00:00
for (int i = 0; i < m_vSource.size(); ++i)
{
2023-04-13 07:12:17 +00:00
char name[256];
2023-05-30 11:11:24 +00:00
sprintf(name, "%s %u.%u", m_vSource[i].ProductName, m_vSource[i].Version.MajorNum, m_vSource[i].Version.MinorNum);
2023-04-13 07:12:17 +00:00
ui->listWidget->addItem(name);
2023-05-30 11:11:24 +00:00
if (0 == strcmp(m_vSource[i].ProductName, defDSName.c_str()))
2023-05-20 11:43:02 +00:00
{
2023-05-30 11:11:24 +00:00
ui->listWidget->setCurrentItem(ui->listWidget->item(i));
2023-05-20 11:43:02 +00:00
}
}
2023-05-30 11:11:24 +00:00
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();
}
2023-05-20 11:43:02 +00:00
void Dialog_Twain_Source_Select::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
on_pushButton_OK_clicked();
}