132 lines
3.8 KiB
C++
132 lines
3.8 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);
|
|
}
|
|
}
|
|
|
|
QString source = getCfgValue("twain", "source", QString(""));
|
|
if (!source.isEmpty())
|
|
{
|
|
int count = ui->listWidget->count();
|
|
for (int i = 0; i < count; ++i)
|
|
{
|
|
filterTwainSource(i);
|
|
|
|
if (ui->listWidget->item(i)->text() == source)
|
|
{
|
|
ui->listWidget->setCurrentItem(ui->listWidget->item(i));
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
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::filterTwainSource(int index)
|
|
{
|
|
#if !defined(OEM_HANWANG) && !defined(OEM_LISICHENG) && !defined(OEM_CANGTIAN) && !defined(OEM_ZHONGJING) && !defined(OEM_ZIGUANG) && !defined(OEM_NEUTRAL)
|
|
if (!ui->listWidget->item(index)->text().contains("HUAGOSCAN"))
|
|
{
|
|
ui->listWidget->item(index)->setHidden(true);
|
|
}
|
|
#elif defined(OEM_HANWANG)
|
|
{
|
|
if (!ui->listWidget->item(index)->text().contains("Hanvon"))
|
|
{
|
|
ui->listWidget->item(index)->setHidden(true);
|
|
}
|
|
}
|
|
#elif defined(OEM_LISICHENG)
|
|
{
|
|
if (!ui->listWidget->item(index)->text().contains("LANXUMSCAN"))
|
|
{
|
|
ui->listWidget->item(index)->setHidden(true);
|
|
}
|
|
}
|
|
#elif defined(OEM_CANGTIAN)
|
|
{
|
|
if (!ui->listWidget->item(index)->text().contains("CUMTENN"))
|
|
{
|
|
ui->listWidget->item(index)->setHidden(true);
|
|
}
|
|
}
|
|
#elif defined(OEM_ZHONGJING)
|
|
{
|
|
if (!ui->listWidget->item(index)->text().contains("Microtek"))
|
|
{
|
|
ui->listWidget->item(index)->setHidden(true);
|
|
}
|
|
}
|
|
#elif defined(OEM_ZIGUANG)
|
|
{
|
|
if (!ui->listWidget->item(index)->text().contains("Uniscan"))
|
|
{
|
|
ui->listWidget->item(index)->setHidden(true);
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Dialog_Twain_Source_Select::on_pushButton_OK_clicked()
|
|
{
|
|
QString source = ui->listWidget->currentItem()->text();
|
|
saveCfgValue("twain", "source", source);
|
|
|
|
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();
|
|
}
|