#include "dialog_twain_source_select.h" #include "ui_dialog_twain_source_select.h" Dialog_Twain_Source_Select::Dialog_Twain_Source_Select(const std::vector &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(); }