#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(); }