code_app/modules/saneui/dialog_twain_source_select.cpp

65 lines
1.7 KiB
C++

#include "dialog_twain_source_select.h"
#include "ui_dialog_twain_source_select.h"
Dialog_Twain_Source_Select::Dialog_Twain_Source_Select(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog_Twain_Source_Select)
{
ui->setupUi(this);
m_vSource.clear();
m_dsmProc = dsmProc;
memcpy(&m_appId, appId, sizeof(TW_IDENTITY));
memset(&m_ds, 0, sizeof(TW_IDENTITY));
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
TW_IDENTITY ds;
if (TWRC_SUCCESS == m_dsmProc(&m_appId, NULL, DG_CONTROL, DAT_IDENTITY, MSG_GETFIRST, &ds))
{
m_vSource.push_back(ds);
char name[256];
sprintf(name, "%s %u.%u", ds.ProductName, ds.Version.MajorNum, ds.Version.MinorNum);
ui->listWidget->addItem(name);
while (TWRC_SUCCESS == m_dsmProc(&m_appId, NULL, DG_CONTROL, DAT_IDENTITY, MSG_GETNEXT, &ds))
{
m_vSource.push_back(ds);
char name[256];
sprintf(name, "%s %u.%u", ds.ProductName, ds.Version.MajorNum, ds.Version.MinorNum);
ui->listWidget->addItem(name);
}
}
if (!m_vSource.empty())
{
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::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();
}