twain3.0/huagao/CBasicPage.cpp

309 lines
6.8 KiB
C++

// CBasicPage.cpp: 实现文件
//
#include "stdafx.h"
#include "CBasicPage.h"
#include "afxdialogex.h"
#include "resource.h"
#include "CAboutDlg.h"
#include "CTwainUI.h"
#include "CDiscardBlankSetting.h"
#include "CcardblankDlg.h"
#include <vector>
static std::vector<CString> color_Modes = {
_T("24位彩色"),
_T("256级灰度"),
_T("黑白"),
_T("颜色自动识别")
};
#ifdef G200
static std::vector<CString> surportStyles = {
_T("A3"),//pass
_T("8开"),
_T("A4"),
_T("A4横向"),
_T("16开"),
_T("16开横向"),
_T("A5"),
_T("A5横向"),
_T("A6"),
_T("A6横向"),
_T("B4"),
_T("B5"),
_T("B5横向"),
_T("B6"),
_T("B6横向"),
_T("Letter"),
_T("Letter横向"),
_T("Double Letter"),//pass
_T("LEGAL"),
_T("匹配原始尺寸"),
_T("最大扫描尺寸自动裁切"),
_T("最大扫描尺寸"),
_T("三联试卷"),
};
#endif
#ifdef G300
static std::vector<CString> surportStyles = {
_T("A4"),
_T("16开"),
_T("A5"),
_T("A6"),
//_T("B4"),
_T("B5"),
_T("B6"),
_T("Letter"),
_T("LEGAL"),
_T("匹配原始尺寸"),
};
#endif
#ifdef G400
static std::vector<CString> surportStyles = {
_T("A3"),//pass
_T("8开"),
_T("A4"),
_T("A4横向"),
_T("16开"),
_T("16开横向"),
_T("A5"),
_T("A5横向"),
_T("A6"),
_T("A6横向"),
_T("B4"),
_T("B5"),
_T("B5横向"),
_T("B6"),
_T("B6横向"),
_T("Letter"),
_T("Letter横向"),
_T("Double Letter"),//pass
_T("LEGAL"),
_T("匹配原始尺寸"),
_T("最大扫描尺寸自动裁切"),
_T("最大扫描尺寸"),
_T("三联试卷"),
};
#endif // G400
//static std::vector<CString> reslutions{
// _T("100"),
// _T("150"),
// _T("200"),
// _T("240"),
// _T("300"),
//#ifndef LANXUM
// //_T("600")
//#endif // LANXUM
//};
static std::vector<CString> duplexs
{
_T("单面"),
_T("双面"),
_T("跳过空白页(通用)"),
_T("跳过空白页(发票纸)"),
_T("对折")
};
// CBasicPage 对话框
IMPLEMENT_DYNAMIC(CBasicPage, CTabPageSSL)
CBasicPage::CBasicPage(std::function<void()> dataChange, CWnd* pParent /*=nullptr*/)
: CTabPageSSL(IDD_PAGEBASIC, pParent)
, m_dataChange(dataChange)
, AreaNum(8)
, DevnMax(200)
, m_bswitchfrontback(FALSE)
, discardblank_percent(10)
{
}
CBasicPage::~CBasicPage()
{
}
void CBasicPage::DoDataExchange(CDataExchange* pDX)
{
CTabPageSSL::DoDataExchange(pDX);
DDX_Check(pDX, IDC_CKBSWITCHFRONTBACK, m_bswitchfrontback);
DDX_Check(pDX, IDC_CKBSIZEDETECT, m_enableSizeCheck);
DDX_Control(pDX, IDC_SLIDERDPI, m_Slider_Dpi);
DDX_Control(pDX, IDC_EDITDPI, m_Edit_Dpi);
DDX_Check(pDX, IDC_CKBENABLEUV, m_bUV);
}
BOOL CBasicPage::OnInitDialog()
{
CTabPageSSL::OnInitDialog();
m_cmBoxColorMode = (CComboBox*)GetDlgItem(IDC_CMBCOLORTYPE);
m_cmBoxSS = (CComboBox*)GetDlgItem(IDC_CMBSS);
m_cmBoxDuplex = (CComboBox*)GetDlgItem(IDC_CMBDUPLEX);
m_Edit_Dpi.SetSlideLink(this, IDC_SLIDERDPI);
m_Edit_Dpi.SetParams(100, 300, 10);
m_Edit_Dpi.SetValue(200);
for (const CString& colorMode : color_Modes)
m_cmBoxColorMode->AddString(colorMode);
for (int i = 0; i < surportStyles.size(); i++)
m_cmBoxSS->InsertString(i, surportStyles[i]);
for (int i = 0; i < duplexs.size(); i++)
m_cmBoxDuplex->InsertString(i,duplexs[i]);
m_cmBoxSS->SetCurSel(0);
m_cmBoxColorMode->SetCurSel(0);
m_cmBoxDuplex->SetCurSel(0);
#ifndef UV
GetDlgItem(IDC_CKBENABLEUV)->ShowWindow(FALSE);
#endif
return true;
}
BEGIN_MESSAGE_MAP(CBasicPage, CTabPageSSL)
ON_BN_CLICKED(IDC_BTNABOUT, &CBasicPage::OnBnClickedBtnabout)
ON_CBN_SELCHANGE(IDC_CMBCOLORTYPE, &CBasicPage::OnCbnSelchangeCmbcolortype)
ON_CBN_SELCHANGE(IDC_CMBSS, &CBasicPage::OnCbnSelchangeCmbss)
ON_CBN_SELCHANGE(IDC_CMBRESLUTION, &CBasicPage::OnCbnSelchangeCmbreslution)
ON_CBN_SELCHANGE(IDC_CMBDUPLEX, &CBasicPage::OnCbnSelchangeCmbduplex)
ON_BN_CLICKED(IDC_BTNDISCARDSETTING, &CBasicPage::OnClickedBtndiscardsetting)
END_MESSAGE_MAP()
// CBasicPage 消息处理程序
void CBasicPage::OnBnClickedBtnabout()
{
CAboutDlg dlg(m_hdVersion, m_serialNum,this);
dlg.DoModal();
}
void CBasicPage::OnCbnSelchangeCmbcolortype()
{
// TODO: 在此添加控件通知处理程序代码
updateCmbDuplex(TRUE);
m_dataChange();
}
void CBasicPage::OnCbnSelchangeCmbss()
{
// TODO: 在此添加控件通知处理程序代码
int sleIndex = m_cmBoxSS->GetCurSel();
if (sleIndex == -1)
{
sleIndex = 0;
}
updateCmbDuplex(TRUE);
m_dataChange();
}
void CBasicPage::OnCbnSelchangeCmbreslution()
{
// TODO: 在此添加控件通知处理程序代码
updateCmbDuplex(TRUE);
}
void CBasicPage::OnCbnSelchangeCmbduplex()
{
// TODO: 在此添加控件通知处理程序代码
int index = m_cmBoxDuplex->GetCurSel();
//if (index > 1) {
//AreaNum = index == 2? 8 : 20 ;
//DevnMax = index == 2 ? 200 : 300;
m_dataChange();
//}
if (m_cmBoxDuplex->GetCurSel() == 2 || m_cmBoxDuplex->GetCurSel() == 3)
this->GetDlgItem(IDC_BTNDISCARDSETTING)->EnableWindow(true);
else
this->GetDlgItem(IDC_BTNDISCARDSETTING)->EnableWindow(false);
updateCmbDuplex(TRUE);
}
//跳过空白页设置页面
void CBasicPage::OnClickedBtndiscardsetting()
{
// TODO: 在此添加控件通知处理程序代码
//JsonConfig jc;
//CONFIGPARAMS params = jc.ReadDefaultConfig();
//CDiscardBlankSetting dbs(this, params.DBlank_AreaNum, params.DBlank_DevnMax);
//int nRet = dbs.DoModal();
//if (nRet == IDOK) {
// dbs.GetParams(AreaNum, DevnMax);
//}
CcardblankDlg settingdlg(discardblank_percent,this);
settingdlg.DoModal();
discardblank_percent = settingdlg.discardblank_percent;
}
void CBasicPage::SetScannerInfo(std::string hdVersion, std::string serialNum)
{
m_hdVersion = hdVersion;
m_serialNum = serialNum;
}
void CBasicPage::updateCmbDuplex(BOOL insert)
{
//m_cmBoxDuplex->GetCurSel();
int tmp_colorindex=m_cmBoxColorMode->GetCurSel();
int tmp_paperindex = m_cmBoxSS->GetCurSel();
int tmp_duplexindex = m_cmBoxDuplex->GetCurSel();
//int tmp_resindex = m_cmBoxResultion->GetCurSel();
int tmp_resindex = m_Slider_Dpi.m_iPosition;
int totalcount = m_cmBoxDuplex->GetCount();
if (tmp_colorindex == 0 && tmp_paperindex > 19 && tmp_resindex >= 300) {
if (m_cmBoxDuplex->GetCurSel() == 4)
{
m_cmBoxDuplex->SetCurSel(1);
}
m_cmBoxDuplex->DeleteString(4);
//m_cmBoxDuplex->SetCurSel(1);
}
else {
if (totalcount != 5) {
m_cmBoxDuplex->InsertString(4, TEXT("对折"));
}
}
#ifndef G300
if (tmp_paperindex == 19 || tmp_paperindex == 20 || tmp_paperindex == 21 || tmp_paperindex == 22 || tmp_paperindex == 1|| tmp_paperindex == 4|| tmp_paperindex == 5){
(((CButton*)GetDlgItem(IDC_CKBSIZEDETECT)))->SetCheck(false);
GetDlgItem(IDC_CKBSIZEDETECT)->EnableWindow(false);
}
else{
GetDlgItem(IDC_CKBSIZEDETECT)->EnableWindow(true);
}
#else
if (tmp_paperindex == 8|| tmp_paperindex == 1) {
(((CButton*)GetDlgItem(IDC_CKBSIZEDETECT)))->SetCheck(false);
GetDlgItem(IDC_CKBSIZEDETECT)->EnableWindow(false);
}
else {
GetDlgItem(IDC_CKBSIZEDETECT)->EnableWindow(true);
}
#endif // G200
}