#include "../pch/pch.h" #include "CSettingPageUI.h" #include "../wnd/CChufangSettingWnd.h" #include "../print/CPosPrinter.h" #include "../helper/CComHelper.h" #include "../worker/CChengzhongWorker.h" #include #include "../tool/CFoodHandle.h" CSettingPageUI::CSettingPageUI() { } CSettingPageUI::~CSettingPageUI() { } //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用 void CSettingPageUI::InitShow() { CLabelUI* version = static_cast(this->FindSubControl(_T("setting_version"))); version->SetText((L"版本号:" + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion())).c_str()); CCheckBoxUI* box = NULL; CComboUI* com = NULL; //外卖订单设置 box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_voice"))); if (CSetting::GetInstance()->GetParam("setting_is_new_waimai_voice") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_autoconfirm"))); if (CSetting::GetInstance()->GetParam("setting_is_new_waimai_autoconfirm") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_waimai_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_biaoqian_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_waimai_biaoqian_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_chufang_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_waimai_chufang_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } //店内订单设置 box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_voice"))); if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_voice") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_biaoqian_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_biaoqian_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_chufang_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_chufang_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_saomadiancan_printer"))); if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_saomadiancan_printer") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_diannei_xianjin_qianxiang"))); if (CSetting::GetInstance()->GetParam("setting_is_diannei_xianjin_qianxiang") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } //小票打印 com = static_cast(this->FindSubControl(_T("setting_printer_guige"))); if (CSetting::GetInstance()->GetParam("setting_printer_guige") == "58") { com->SetInternVisible(true); com->SelectItem(0, false, false); } else { com->SetInternVisible(true); com->SelectItem(1, false, false); } com = static_cast(this->FindSubControl(_T("setting_printer_lianshu"))); std::string setting_printer_lianshu = CSetting::GetInstance()->GetParam("setting_printer_lianshu"); if (setting_printer_lianshu == "1") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"1联"); } else if (setting_printer_lianshu == "2") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"2联"); } else if (setting_printer_lianshu == "3") { com->SetInternVisible(true); com->SelectItem(2, false, false); com->SetText(L"3联"); } else if (setting_printer_lianshu == "4") { com->SetInternVisible(true); com->SelectItem(3, false, false); com->SetText(L"4联"); } com = static_cast(this->FindSubControl(_T("setting_printer_leixing"))); std::string setting_printer_leixing = CSetting::GetInstance()->GetParam("setting_printer_leixing"); CHorizontalLayoutUI* usb_layout = static_cast(this->FindSubControl(_T("setting_printer_usb_layout"))); CHorizontalLayoutUI* chuankou_layout = static_cast(this->FindSubControl(_T("setting_printer_chuankou_layout"))); CHorizontalLayoutUI* wangkou_layout = static_cast(this->FindSubControl(_T("setting_printer_wangkou_layout"))); if (setting_printer_leixing == "auto") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"智能识别模式"); //智能识别模式隐藏这3个 usb_layout->SetVisible(false); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(false); } else if (setting_printer_leixing == "usb") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"usb"); //显示usb布局 usb_layout->SetVisible(true); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(false); //usb下拉框默认选中 CComboUI* com_usb = static_cast(this->FindSubControl(_T("setting_printer_usb"))); com_usb->RemoveAll(); //数据库中保存的之前的设置 std::string setting_printer_usb = CSetting::GetInstance()->GetParam("setting_printer_usb"); std::wstring ws_setting_printer_usb = CLewaimaiString::UTF8ToUnicode(setting_printer_usb); std::vector usb_devices = CPosPrinterQueue::GetInstance()->getUsbDevices(); int i = 0; int nSelect = -1; for (std::vector::iterator it = usb_devices.begin(); it != usb_devices.end(); it++) { CListLabelElementUI* elem = new CListLabelElementUI(); elem->SetText((*it).c_str()); com_usb->Add(elem); if (*it == ws_setting_printer_usb) { nSelect = i; } i++; } com_usb->SetInternVisible(true); com_usb->SelectItem(nSelect, false, false); com_usb->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_usb).c_str()); } else if (setting_printer_leixing == "bingkou") { com->SetInternVisible(true); com->SelectItem(2, false, false); com->SetText(L"并口"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(false); } else if (setting_printer_leixing == "chuankou") { com->SetInternVisible(true); com->SelectItem(3, false, false); com->SetText(L"串口"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(true); wangkou_layout->SetVisible(false); //串口下拉框默认选中 CComboUI* com_chuankou = static_cast(this->FindSubControl(_T("setting_printer_com"))); com_chuankou->RemoveAll(); //数据库中保存的之前的设置 std::string setting_printer_com = CSetting::GetInstance()->GetParam("setting_printer_com"); std::wstring ws_setting_printer_com = CLewaimaiString::UTF8ToUnicode(setting_printer_com); CComHelper helper; std::vector com_devices = helper.getComPort(); int i = 0; int nSelect = -1; for (std::vector::iterator it = com_devices.begin(); it != com_devices.end(); it++) { CListLabelElementUI* elem = new CListLabelElementUI(); elem->SetText((*it).c_str()); com_chuankou->Add(elem); if (*it == ws_setting_printer_com) { nSelect = i; } i++; } com_chuankou->SetInternVisible(true); com_chuankou->SelectItem(nSelect, false, false); com_chuankou->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_com).c_str()); } else if (setting_printer_leixing == "wangkou") { com->SetInternVisible(true); com->SelectItem(4, false, false); com->SetText(L"网口"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(true); std::string setting_printer_wangkou_ip = CSetting::GetInstance()->GetParam("setting_printer_wangkou_ip"); CEditUI* ip_edit = static_cast(this->FindSubControl(_T("setting_printer_wangkou_ip"))); ip_edit->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_wangkou_ip).c_str()); } box = static_cast(this->FindSubControl(_T("setting_printer_quhuo_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_quhuo_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_dingdanhao_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_dingdanhao_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_xiadanshijian_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_xiadanshijian_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_peisongshijian_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_peisongshijian_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_name_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_name_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_phone_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_phone_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_address_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_address_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_shangpin_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_shangpin_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_memo_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_memo_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_price_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_price_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_printer_pay_big"))); if (CSetting::GetInstance()->GetParam("setting_printer_pay_big") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } //电子秤设置 com = static_cast(this->FindSubControl(_T("setting_dianzicheng_xinghao"))); std::string setting_dianzicheng_xinghao = CSetting::GetInstance()->GetParam("setting_dianzicheng_xinghao"); if (setting_dianzicheng_xinghao == "dahua_acs") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"大华ACS系列"); } else if (setting_dianzicheng_xinghao == "dingjian_os2x") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"顶尖OS2X系列"); } //串口下拉框默认选中 CComboUI* com_dianzicheng = static_cast(this->FindSubControl(_T("setting_dianzicheng_chuankou"))); com_dianzicheng->RemoveAll(); //数据库中保存的之前的设置 std::string setting_dianzicheng_com = CSetting::GetInstance()->GetParam("setting_dianzicheng_com"); std::wstring ws_setting_dianzicheng_com = CLewaimaiString::UTF8ToUnicode(setting_dianzicheng_com); CComHelper helper; std::vector com_devices = helper.getComPort(); int i = 0; int nSelect = -1; for (std::vector::iterator it = com_devices.begin(); it != com_devices.end(); it++) { CListLabelElementUI* elem = new CListLabelElementUI(); elem->SetText((*it).c_str()); com_dianzicheng->Add(elem); if (*it == ws_setting_dianzicheng_com) { nSelect = i; } i++; } com_dianzicheng->SetInternVisible(true); com_dianzicheng->SelectItem(nSelect, false, false); com_dianzicheng->SetText(CLewaimaiString::UTF8ToUnicode(setting_dianzicheng_com).c_str()); com = static_cast(this->FindSubControl(_T("setting_dianzicheng_botelv"))); std::string setting_dianzicheng_botelv = CSetting::GetInstance()->GetParam("setting_dianzicheng_botelv"); if (setting_dianzicheng_botelv == "600") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"600"); } else if (setting_dianzicheng_botelv == "1200") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"1200"); } else if (setting_dianzicheng_botelv == "2400") { com->SetInternVisible(true); com->SelectItem(2, false, false); com->SetText(L"2400"); } else if (setting_dianzicheng_botelv == "4800") { com->SetInternVisible(true); com->SelectItem(3, false, false); com->SetText(L"4800"); } else if (setting_dianzicheng_botelv == "9600") { com->SetInternVisible(true); com->SelectItem(4, false, false); com->SetText(L"9600"); } else if (setting_dianzicheng_botelv == "19200") { com->SetInternVisible(true); com->SelectItem(5, false, false); com->SetText(L"19200"); } else if (setting_dianzicheng_botelv == "38400") { com->SetInternVisible(true); com->SelectItem(6, false, false); com->SetText(L"38400"); } //标签秤设置 com = static_cast(this->FindSubControl(_T("setting_tiaomacheng_geshi"))); std::string setting_tiaomacheng_geshi = CSetting::GetInstance()->GetParam("setting_tiaomacheng_geshi"); if (setting_tiaomacheng_geshi == "1") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"13位【FWWWWWWEEEEEC】"); } else if (setting_tiaomacheng_geshi == "2") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"13位【FWWWWWWNNNNNC】"); } else if (setting_tiaomacheng_geshi == "3") { com->SetInternVisible(true); com->SelectItem(2, false, false); com->SetText(L"13位【FFWWWWWEEEEEC】"); } else if (setting_tiaomacheng_geshi == "4") { com->SetInternVisible(true); com->SelectItem(3, false, false); com->SetText(L"13位【FFWWWWWNNNNNC】"); } else if (setting_tiaomacheng_geshi == "5") { com->SetInternVisible(true); com->SelectItem(4, false, false); com->SetText(L"18位【FWWWWWWEEEEENNNNNC】"); } else if (setting_tiaomacheng_geshi == "6") { com->SetInternVisible(true); com->SelectItem(5, false, false); com->SetText(L"18位【FWWWWWWNNNNNEEEEEC】"); } else if (setting_tiaomacheng_geshi == "7") { com->SetInternVisible(true); com->SelectItem(6, false, false); com->SetText(L"18位【FFWWWWWEEEEENNNNNC】"); } else if (setting_tiaomacheng_geshi == "8") { com->SetInternVisible(true); com->SelectItem(6, false, false); com->SetText(L"18位【FFWWWWWNNNNNEEEEEC】"); } com = static_cast(this->FindSubControl(_T("setting_tiaomacheng_xinghao"))); std::string setting_tiaomacheng_xinghao = CSetting::GetInstance()->GetParam("setting_tiaomacheng_xinghao"); if (setting_tiaomacheng_xinghao == "dahua_tm") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"大华TM系列"); } std::string setting_tiaomacheng_ip = CSetting::GetInstance()->GetParam("setting_tiaomacheng_ip"); CEditUI* tiaoma_ip_edit = static_cast(this->FindSubControl(_T("setting_tiaomacheng_ip"))); tiaoma_ip_edit->SetText(CLewaimaiString::UTF8ToUnicode(setting_tiaomacheng_ip).c_str()); //系统设置 box = static_cast(this->FindSubControl(_T("setting_is_auto_start"))); if (CSetting::GetInstance()->GetParam("setting_is_auto_start") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_auto_login"))); if (CSetting::GetInstance()->GetParam("setting_is_auto_login") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } box = static_cast(this->FindSubControl(_T("setting_is_close_min"))); if (CSetting::GetInstance()->GetParam("setting_is_close_min") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } //初始化标签打印机的设置 //usb下拉框默认选中 CComboUI* com_usb = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_usb"))); com_usb->RemoveAll(); //数据库中保存的之前的设置 std::string setting_biaoqian_printer_usb = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_usb"); std::wstring ws_setting_biaoqian_printer_usb = CLewaimaiString::UTF8ToUnicode(setting_biaoqian_printer_usb); std::vector usb_devices = CPosPrinterQueue::GetInstance()->getUsbDevices(); i = 0; nSelect = -1; for (std::vector::iterator it = usb_devices.begin(); it != usb_devices.end(); it++) { CListLabelElementUI* elem = new CListLabelElementUI(); elem->SetText((*it).c_str()); com_usb->Add(elem); if (*it == ws_setting_biaoqian_printer_usb) { nSelect = i; } i++; } com_usb->SetInternVisible(true); com_usb->SelectItem(nSelect, false, false); com_usb->SetText(CLewaimaiString::UTF8ToUnicode(setting_biaoqian_printer_usb).c_str()); com = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_guige"))); std::string setting_biaoqian_printer_guige = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_guige"); if (setting_biaoqian_printer_guige == "40*30mm") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"40*30mm"); } else if (setting_biaoqian_printer_guige == "35*25mm") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"35*25mm"); } else if (setting_biaoqian_printer_guige == "30*25mm") { com->SetInternVisible(true); com->SelectItem(2, false, false); com->SetText(L"30*25mm"); } else if (setting_biaoqian_printer_guige == "30*20mm") { com->SetInternVisible(true); com->SelectItem(3, false, false); com->SetText(L"30*20mm"); } else if (setting_biaoqian_printer_guige == "60*80mm") { com->SetInternVisible(true); com->SelectItem(4, false, false); com->SetText(L"60*80mm"); } else if (setting_biaoqian_printer_guige == "80*60mm") { com->SetInternVisible(true); com->SelectItem(5, false, false); com->SetText(L"80*60mm"); } com = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_fangxiang"))); std::string setting_biaoqian_printer_fangxiang = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_fangxiang"); if (setting_biaoqian_printer_fangxiang == "1") { com->SetInternVisible(true); com->SelectItem(0, false, false); com->SetText(L"正方向"); } else if (setting_biaoqian_printer_fangxiang == "0") { com->SetInternVisible(true); com->SelectItem(1, false, false); com->SetText(L"反方向"); } box = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_is_type"))); if (CSetting::GetInstance()->GetParam("setting_biaoqian_printer_is_type") == "1") { box->Selected(true, false); } else { box->Selected(false, false); } std::string type_ids = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_type_ids"); std::vector type_vector = CLewaimaiString::Split(type_ids, ","); //删除已经不存在的type_ids std::string new_foodtype_ids; CSqlite3 sqlite; for (std::vector::iterator it = type_vector.begin(); it != type_vector.end(); it++) { CFoodType type; bool ret = sqlite.GetFoodtypeById((*it), type); if (!ret) { //分类被删掉了 continue; } new_foodtype_ids += (*it) + ","; } //删掉不存在的type_id,更新内存和数据库 new_foodtype_ids = new_foodtype_ids.substr(0, new_foodtype_ids.length() - 1); CSetting::GetInstance()->SetParam("setting_biaoqian_printer_type_ids", new_foodtype_ids); //重新赋值 type_ids = new_foodtype_ids; type_vector = CLewaimaiString::Split(type_ids, ","); std::map type_map; for (std::vector::iterator it = type_vector.begin(); it != type_vector.end(); it++) { type_map[*it] = 1; } //把所有分类显示出来 CVerticalLayoutUI* pFenleiLayout = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_type_layout"))); pFenleiLayout->RemoveAll(); CSqlite3 sqlite_2; std::vector foodtypes = sqlite_2.GetFoodtypes(); for (std::vector::iterator it = foodtypes.begin(); it != foodtypes.end(); it++) { CDialogBuilder builder; CListContainerElementUI* pEle = static_cast(builder.Create(_T("biaoqian_printer_setting_fenlei_select.xml"), (UINT)0, NULL, m_pManager)); CCheckBoxUI* pCheck = static_cast(pEle->FindSubControl(_T("biaoqian_setting_fenleli_xuanze_checkbox"))); pCheck->AddCustomAttribute(L"type_id", CLewaimaiString::UTF8ToUnicode((*it).id).c_str()); if (type_map.find((*it).id) != type_map.end()) { pCheck->Selected(true, false); } CLabelUI* pName = static_cast(pEle->FindSubControl(_T("biaoqian_setting_fenleli_xuanze_name"))); pName->SetText(CLewaimaiString::UTF8ToUnicode((*it).name).c_str()); pFenleiLayout->Add(pEle); } pFenleiLayout->SetFixedHeight(foodtypes.size() * 30); //这里开始,初始化厨房打印机的设置 CListUI* pPrinterList = static_cast(this->FindSubControl(_T("setting_chufang_printer_list"))); pPrinterList->RemoveAll(); //获取厨房打印机的集合 std::vector printers = CSetting::GetInstance()->getChufangPrints(); for (std::vector::iterator it = printers.begin(); it != printers.end(); it++) { ChufangPrinter newPrinter = *it; CDialogBuilder builder; CListContainerElementUI* pEle = static_cast(builder.Create(_T("setting_chufang_printer_item.xml"), (UINT)0, NULL, m_pManager)); CLabelUI* pName = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_name"))); pName->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.name).c_str()); CLabelUI* pIP = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_ip"))); pIP->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.ip).c_str()); CLabelUI* pGuige = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_guige"))); if (newPrinter.guige == "58") { pGuige->SetText(L"58mm"); } else { pGuige->SetText(L"80mm"); } CLabelUI* pFendan = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_fendan"))); if (newPrinter.fendan == "1") { pFendan->SetText(L"是"); } else { pFendan->SetText(L"否"); } CLabelUI* pFenlei = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei"))); if (newPrinter.fenlei == "1") { pFenlei->SetText(L"是"); } else { pFenlei->SetText(L"否"); } std::string foodtypeNames = ""; std::string foodtype_ids = newPrinter.fenlei_ids; //这个是删除掉不存在的type_id之后的 std::string new_foodtype_ids = ""; std::vector ids = CLewaimaiString::Split(foodtype_ids, ","); CSqlite3 sqlite; for (std::vector::iterator it = ids.begin(); it != ids.end(); it++) { CFoodType type; bool ret = sqlite.GetFoodtypeById((*it), type); if (!ret) { //分类被删掉了 continue; } std::string name = type.name; foodtypeNames += name + CLewaimaiString::UnicodeToUTF8(L"、"); new_foodtype_ids += (*it) + ","; } //删掉不存在的type_id,更新内存和数据库 new_foodtype_ids = new_foodtype_ids.substr(0, new_foodtype_ids.length() - 1); if (new_foodtype_ids.compare(foodtype_ids) != 0) { CSetting::GetInstance()->UpdateChufangPrinter(newPrinter.date, newPrinter.name, newPrinter.ip, newPrinter.guige, newPrinter.fendan, newPrinter.fenlei, new_foodtype_ids, true); } std::wstring ws_foodtypeNames = CLewaimaiString::UTF8ToUnicode(foodtypeNames); ws_foodtypeNames = ws_foodtypeNames.substr(0, ws_foodtypeNames.size() - 1); CLabelUI* pFenleiIds = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei_ids"))); pFenleiIds->SetText(ws_foodtypeNames.c_str()); //设置标记属性,用于修改时候匹配 pEle->AddCustomAttribute(L"date", CLewaimaiString::UTF8ToUnicode(newPrinter.date).c_str()); pPrinterList->Add(pEle); } //初始化展示设置 CCheckBoxUI* box_youtu = static_cast(this->FindSubControl(_T("xianshi_setting_youtu"))); CCheckBoxUI* box_wutu = static_cast(this->FindSubControl(_T("xianshi_setting_wutu"))); if (CSetting::GetInstance()->GetParam("setting_xianshi_is_youtu") == "1") { box_youtu->Selected(true, false); box_wutu->Selected(false, false); } else { box_youtu->Selected(false, false); box_wutu->Selected(true, false); } } //处理按钮点击类事件 void CSettingPageUI::HandleClickMsg(TNotifyUI& msg) { CDuiString name = msg.pSender->GetName(); //开始处理设置页面的 if (name == _T("setting_is_new_waimai_voice")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_voice"))); //注意这里的IsSelected如果为true,表示的是点击前为true,而不是点击后为true,所以这里设置状态要反过来 if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_waimai_voice", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_waimai_voice", "1"); } } else if (name == _T("setting_is_new_waimai_autoconfirm")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_autoconfirm"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_waimai_autoconfirm", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_waimai_autoconfirm", "1"); } } else if (name == _T("setting_is_new_waimai_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_waimai_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_waimai_printer", "1"); } } else if (name == _T("setting_is_new_waimai_biaoqian_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_biaoqian_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_waimai_biaoqian_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_waimai_biaoqian_printer", "1"); } } else if (name == _T("setting_is_new_waimai_chufang_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_waimai_chufang_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_waimai_chufang_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_waimai_chufang_printer", "1"); } } else if (name == _T("setting_is_new_diannei_voice")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_voice"))); //注意这里的IsSelected如果为true,表示的是点击前为true,而不是点击后为true,所以这里设置状态要反过来 if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_diannei_voice", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_diannei_voice", "1"); } } else if (name == _T("setting_is_new_diannei_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_diannei_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_diannei_printer", "1"); } } else if (name == _T("setting_is_new_diannei_biaoqian_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_biaoqian_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_diannei_biaoqian_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_diannei_biaoqian_printer", "1"); } } else if (name == _T("setting_is_new_diannei_chufang_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_chufang_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_diannei_chufang_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_diannei_chufang_printer", "1"); } } else if (name == _T("setting_is_new_diannei_saomadiancan_printer")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_new_diannei_saomadiancan_printer"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_new_diannei_saomadiancan_printer", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_new_diannei_saomadiancan_printer", "1"); } } else if (name == _T("setting_is_diannei_xianjin_qianxiang")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_diannei_xianjin_qianxiang"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_diannei_xianjin_qianxiang", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_diannei_xianjin_qianxiang", "1"); } } else if (name == _T("setting_printer_wangkouk_save_btn")) { CEditUI* wangkou_ip = static_cast(this->FindSubControl(_T("setting_printer_wangkou_ip"))); wstring ip = wangkou_ip->GetText(); CSetting::GetInstance()->SetParam("setting_printer_wangkou_ip", CLewaimaiString::UnicodeToUTF8(ip)); } else if (name == _T("setting_printer_quhuo_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_quhuo_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_quhuo_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_quhuo_big", "1"); } } else if (name == _T("setting_printer_dingdanhao_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_dingdanhao_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_dingdanhao_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_dingdanhao_big", "1"); } } else if (name == _T("setting_printer_xiadanshijian_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_xiadanshijian_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_xiadanshijian_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_xiadanshijian_big", "1"); } } else if (name == _T("setting_printer_peisongshijian_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_peisongshijian_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_peisongshijian_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_peisongshijian_big", "1"); } } else if (name == _T("setting_printer_name_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_name_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_name_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_name_big", "1"); } } else if (name == _T("setting_printer_phone_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_phone_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_phone_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_phone_big", "1"); } } else if (name == _T("setting_printer_address_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_address_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_address_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_address_big", "1"); } } else if (name == _T("setting_printer_shangpin_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_shangpin_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_shangpin_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_shangpin_big", "1"); } } else if (name == _T("setting_printer_memo_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_memo_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_memo_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_memo_big", "1"); } } else if (name == _T("setting_printer_price_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_price_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_price_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_price_big", "1"); } } else if (name == _T("setting_printer_pay_big")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_printer_pay_big"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_printer_pay_big", "0"); } else { CSetting::GetInstance()->SetParam("setting_printer_pay_big", "1"); } } else if (name == _T("setting_biaoqian_printer_is_type")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_is_type"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_is_type", "0"); } else { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_is_type", "1"); } } else if (name == L"biaoqian_setting_fenleli_xuanze_checkbox") { std::wstring ws_type_id = msg.pSender->GetCustomAttribute(L"type_id"); std::string type_id = CLewaimaiString::UnicodeToUTF8(ws_type_id); CCheckBoxUI* box = static_cast(msg.pSender); if (box->IsSelected()) { //这里是从选中变为不选中,那么就删掉这个type_id std::string type_ids = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_type_ids"); std::vector type_vector = CLewaimaiString::Split(type_ids, ","); int num = 0; for (std::vector::iterator it = type_vector.begin(); it != type_vector.end(); it++) { if (*it == type_id) { break; } num++; } type_vector.erase(type_vector.begin() + num); std::string new_type_ids = CLewaimaiString::Merge(type_vector, ","); CSetting::GetInstance()->SetParam("setting_biaoqian_printer_type_ids", new_type_ids); } else { //这是从不选中变为选中 std::string type_ids = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_type_ids"); std::string new_type_ids; if (type_ids == "") { new_type_ids = type_id; } else { new_type_ids = type_ids + "," + type_id; } CSetting::GetInstance()->SetParam("setting_biaoqian_printer_type_ids", new_type_ids); } } else if (name == _T("setting_new_chufang_printer_btn")) { CChufangSettingWnd* pChufangFrame = new CChufangSettingWnd(1); if (pChufangFrame != NULL) { pChufangFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE); pChufangFrame->SetIcon(IDI_ICON_DUILIB); pChufangFrame->CenterWindow(); UINT ret = pChufangFrame->ShowModal(); if (ret == IDOK) { //这个时候是点击保存返回了,厨房打印机的数据已经建立好了,这个时候刷新表格的显示 CListUI* pPrinterList = static_cast(this->FindSubControl(_T("setting_chufang_printer_list"))); //把最后一个厨房打印机取出来 ChufangPrinter newPrinter = CSetting::GetInstance()->getLastChufangPrinter(); CDialogBuilder builder; CListContainerElementUI* pEle = static_cast(builder.Create(_T("setting_chufang_printer_item.xml"), (UINT)0, NULL, m_pManager)); CLabelUI* pName = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_name"))); pName->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.name).c_str()); CLabelUI* pIP = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_ip"))); pIP->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.ip).c_str()); CLabelUI* pGuige = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_guige"))); if (newPrinter.guige == "58") { pGuige->SetText(L"58mm"); } else { pGuige->SetText(L"80mm"); } CLabelUI* pFendan = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_fendan"))); if (newPrinter.fendan == "1") { pFendan->SetText(L"是"); } else { pFendan->SetText(L"否"); } CLabelUI* pFenlei = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei"))); if (newPrinter.fenlei == "1") { pFenlei->SetText(L"是"); } else { pFenlei->SetText(L"否"); } std::string foodtypeNames = ""; std::string foodtype_ids = newPrinter.fenlei_ids; std::vector ids = CLewaimaiString::Split(foodtype_ids, ","); CSqlite3 sqlite; for (std::vector::iterator it = ids.begin(); it != ids.end(); it++) { CFoodType foodtype; bool ret = sqlite.GetFoodtypeById(*it, foodtype); if (!ret) { continue; } std::string name = foodtype.name; std::wstring ws_name = CLewaimaiString::UTF8ToUnicode(name); foodtypeNames += name + " "; } foodtypeNames = foodtypeNames.substr(0, foodtypeNames.size() - 1); std::wstring ws_foodtypeNames = CLewaimaiString::UTF8ToUnicode(foodtypeNames); CLabelUI* pFenleiIds = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei_ids"))); pFenleiIds->SetText(ws_foodtypeNames.c_str()); pEle->AddCustomAttribute(L"date", CLewaimaiString::UTF8ToUnicode(newPrinter.date).c_str()); pPrinterList->Add(pEle); } } } else if (name == _T("setting_is_auto_start")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_auto_start"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_auto_start", "0"); CSystem::cancelAutoStart(); } else { CSetting::GetInstance()->SetParam("setting_is_auto_start", "1"); CSystem::autostart(); } } else if (name == _T("setting_is_auto_login")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_auto_login"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_auto_login", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_auto_login", "1"); } } else if (name == _T("setting_is_close_min")) { CCheckBoxUI* box = static_cast(this->FindSubControl(_T("setting_is_close_min"))); if (box->IsSelected()) { CSetting::GetInstance()->SetParam("setting_is_close_min", "0"); } else { CSetting::GetInstance()->SetParam("setting_is_close_min", "1"); } } else if (name == _T("setting_chufang_printer_item_update_btn")) { CListUI* pPrinterList = static_cast(this->FindSubControl(_T("setting_chufang_printer_list"))); CListContainerElementUI* pEle = static_cast(msg.pSender->GetParent()->GetParent()->GetParent()); wstring date = pEle->GetCustomAttribute(L"date"); CChufangSettingWnd* pChufangFrame = new CChufangSettingWnd(2); pChufangFrame->SetPrinterDate(CLewaimaiString::UnicodeToUTF8(date)); if (pChufangFrame != NULL) { pChufangFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE); pChufangFrame->SetIcon(IDI_ICON_DUILIB); pChufangFrame->CenterWindow(); UINT ret = pChufangFrame->ShowModal(); if (ret == IDOK) { //这个时候是点击保存返回了,厨房打印机的数据已经建立好了,这个时候刷新表格的显示 CListUI* pPrinterList = static_cast(this->FindSubControl(_T("setting_chufang_printer_list"))); ChufangPrinter newPrinter = CSetting::GetInstance()->GetChufangPrinter(CLewaimaiString::UnicodeToUTF8(date)); CLabelUI* pName = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_name"))); pName->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.name).c_str()); CLabelUI* pIP = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_ip"))); pIP->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.ip).c_str()); CLabelUI* pGuige = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_guige"))); if (newPrinter.guige == "58") { pGuige->SetText(L"58mm"); } else { pGuige->SetText(L"80mm"); } CLabelUI* pFendan = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_fendan"))); if (newPrinter.fendan == "1") { pFendan->SetText(L"是"); } else { pFendan->SetText(L"否"); } CLabelUI* pFenlei = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei"))); if (newPrinter.fenlei == "1") { pFenlei->SetText(L"是"); } else { pFenlei->SetText(L"否"); } std::string foodtypeNames = ""; std::string foodtype_ids = newPrinter.fenlei_ids; std::vector ids = CLewaimaiString::Split(foodtype_ids, ","); CSqlite3 sqlite; for (std::vector::iterator it = ids.begin(); it != ids.end(); it++) { CFoodType foodtype; bool ret = sqlite.GetFoodtypeById(*it, foodtype); if (!ret) { continue; } std::string name = foodtype.name; std::wstring ws_name = CLewaimaiString::UTF8ToUnicode(name); foodtypeNames += name + " "; } foodtypeNames = foodtypeNames.substr(0, foodtypeNames.size() - 1); std::wstring ws_foodtypeNames = CLewaimaiString::UTF8ToUnicode(foodtypeNames); CLabelUI* pFenleiIds = static_cast(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei_ids"))); pFenleiIds->SetText(ws_foodtypeNames.c_str()); } } } else if (name == _T("setting_chufang_printer_item_delete_btn")) { CListUI* pPrinterList = static_cast(this->FindSubControl(_T("setting_chufang_printer_list"))); CListContainerElementUI* pEle = static_cast(msg.pSender->GetParent()->GetParent()->GetParent()); wstring date = pEle->GetCustomAttribute(L"date"); //获得了ID,这个时候从内存和数据库中分别删除对应的记录 CSetting::GetInstance()->DelChufangPrinter(CLewaimaiString::UnicodeToUTF8(date)); pPrinterList->Remove(pEle); } else if (name == L"setting_tiaomacheng_saveip") { CEditUI* wangkou_ip = static_cast(this->FindSubControl(_T("setting_tiaomacheng_ip"))); wstring ip = wangkou_ip->GetText(); CSetting::GetInstance()->SetParam("setting_tiaomacheng_ip", CLewaimaiString::UnicodeToUTF8(ip)); } else if (name == L"setting_tiaomacheng_tongbushangpin") { this->StartTongbuBiaoqiancheng(); } else if (name == L"setting_tiaomacheng_tongburejian") { this->StartTongbuRejian(); } else if (name == L"setting_tiaomacheng_qingkongplu") { this->StartQiongkongPLU(); } else if (name == _T("setting_logout")) { //退出登录 m_pMainWnd->LoginOut(1); } else if (name == L"setting_tongbu_btn") { StartTongbu(); } } //处理option切换事件,radio事件 void CSettingPageUI::HandleSelectChangeMsg(TNotifyUI& msg) { CDuiString name = msg.pSender->GetName(); //判断设置中心的tab if (name == _T("setting_waimai_order_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(0); } if (name == _T("setting_diannei_order_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(1); } else if (name == _T("setting_printer_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(2); } else if (name == _T("setting_biaoqian_printer_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(3); } else if (name == _T("setting_chufang_printer_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(4); } else if (name == _T("setting_dianzicheng_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(5); } else if (name == _T("setting_tiaomacheng_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(6); } else if (name == _T("setting_xianshi_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(7); } else if (name == _T("setting_tongbu_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(8); CLabelUI* label = static_cast(this->FindSubControl(L"setting_tongbu_result")); label->SetVisible(false); } else if (name == _T("setting_system_switch")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(9); } else if (name == _T("setting_system_about")) { CTabLayoutUI* pControl = static_cast(this->FindSubControl(_T("setting_switch"))); pControl->SelectItem(10); } else if (name == _T("xianshi_setting_youtu")) { CSetting::GetInstance()->SetParam("setting_xianshi_is_youtu", "1"); } else if (name == _T("xianshi_setting_wutu")) { CSetting::GetInstance()->SetParam("setting_xianshi_is_youtu", "0"); } } //处理下拉框、radio的切换事件 void CSettingPageUI::HandleItemSelectMsg(TNotifyUI& msg) { CDuiString name = msg.pSender->GetName(); if (name == _T("setting_printer_guige")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_printer_guige"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_printer_guige", "58"); } else { CSetting::GetInstance()->SetParam("setting_printer_guige", "80"); } } else if (name == _T("setting_printer_lianshu")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_printer_lianshu"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_printer_lianshu", "1"); } else if (com->GetCurSel() == 1) { CSetting::GetInstance()->SetParam("setting_printer_lianshu", "2"); } else if (com->GetCurSel() == 2) { CSetting::GetInstance()->SetParam("setting_printer_lianshu", "3"); } else if (com->GetCurSel() == 3) { CSetting::GetInstance()->SetParam("setting_printer_lianshu", "4"); } } else if (name == _T("setting_printer_leixing")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_printer_leixing"))); CHorizontalLayoutUI* usb_layout = static_cast(this->FindSubControl(_T("setting_printer_usb_layout"))); CHorizontalLayoutUI* chuankou_layout = static_cast(this->FindSubControl(_T("setting_printer_chuankou_layout"))); CHorizontalLayoutUI* wangkou_layout = static_cast(this->FindSubControl(_T("setting_printer_wangkou_layout"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_printer_leixing", "auto"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(false); } else if (com->GetCurSel() == 1) { CSetting::GetInstance()->SetParam("setting_printer_leixing", "usb"); //显示usb布局 usb_layout->SetVisible(true); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(false); //usb下拉框默认选中 CComboUI* com_usb = static_cast(this->FindSubControl(_T("setting_printer_usb"))); com_usb->RemoveAll(); //数据库中保存的之前的设置 std::string setting_printer_usb = CSetting::GetInstance()->GetParam("setting_printer_usb"); std::wstring ws_setting_printer_usb = CLewaimaiString::UTF8ToUnicode(setting_printer_usb); std::vector usb_devices = CPosPrinterQueue::GetInstance()->getUsbDevices(); int i = 0; int nSelect = -1; for (std::vector::iterator it = usb_devices.begin(); it != usb_devices.end(); it++) { CListLabelElementUI* elem = new CListLabelElementUI(); elem->SetText((*it).c_str()); com_usb->Add(elem); if (*it == ws_setting_printer_usb) { nSelect = i; } i++; } com_usb->SetInternVisible(true); com_usb->SelectItem(nSelect, false, false); com_usb->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_usb).c_str()); } else if (com->GetCurSel() == 2) { CSetting::GetInstance()->SetParam("setting_printer_leixing", "bingkou"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(false); } else if (com->GetCurSel() == 3) { CSetting::GetInstance()->SetParam("setting_printer_leixing", "chuankou"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(true); wangkou_layout->SetVisible(false); //串口下拉框默认选中 CComboUI* com_chuankou = static_cast(this->FindSubControl(_T("setting_printer_com"))); com_chuankou->RemoveAll(); //数据库中保存的之前的设置 std::string setting_printer_com = CSetting::GetInstance()->GetParam("setting_printer_com"); std::wstring ws_setting_printer_com = CLewaimaiString::UTF8ToUnicode(setting_printer_com); CComHelper helper; std::vector com_devices = helper.getComPort(); int i = 0; int nSelect = -1; for (std::vector::iterator it = com_devices.begin(); it != com_devices.end(); it++) { CListLabelElementUI* elem = new CListLabelElementUI(); elem->SetText((*it).c_str()); com_chuankou->Add(elem); if (*it == ws_setting_printer_com) { nSelect = i; } i++; } com_chuankou->SetInternVisible(true); com_chuankou->SelectItem(nSelect, false, false); com_chuankou->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_com).c_str()); } else if (com->GetCurSel() == 4) { CSetting::GetInstance()->SetParam("setting_printer_leixing", "wangkou"); usb_layout->SetVisible(false); chuankou_layout->SetVisible(false); wangkou_layout->SetVisible(true); std::string setting_printer_wangkou_ip = CSetting::GetInstance()->GetParam("setting_printer_wangkou_ip"); CEditUI* ip_edit = static_cast(this->FindSubControl(_T("setting_printer_wangkou_ip"))); ip_edit->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_wangkou_ip).c_str()); } } else if (name == _T("setting_printer_usb")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_printer_usb"))); wstring usb_device = com->GetText(); CSetting::GetInstance()->SetParam("setting_printer_usb", CLewaimaiString::UnicodeToUTF8(usb_device)); } else if (name == _T("setting_printer_com")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_printer_com"))); wstring com_device = com->GetText(); CSetting::GetInstance()->SetParam("setting_printer_com", CLewaimaiString::UnicodeToUTF8(com_device)); } else if (name == _T("setting_dianzicheng_xinghao")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_dianzicheng_xinghao"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_dianzicheng_xinghao", "dahua_acs"); } else if (com->GetCurSel() == 1) { CSetting::GetInstance()->SetParam("setting_dianzicheng_xinghao", "dingjian_os2x"); } CChengzhongWorker::GetInstance()->RestartWork(); } else if (name == _T("setting_dianzicheng_chuankou")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_dianzicheng_chuankou"))); wstring com_device = com->GetText(); CSetting::GetInstance()->SetParam("setting_dianzicheng_com", CLewaimaiString::UnicodeToUTF8(com_device)); CChengzhongWorker::GetInstance()->RestartWork(); } else if (name == _T("setting_dianzicheng_botelv")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_dianzicheng_botelv"))); wstring com_device = com->GetText(); CSetting::GetInstance()->SetParam("setting_dianzicheng_botelv", CLewaimaiString::UnicodeToUTF8(com_device)); CChengzhongWorker::GetInstance()->RestartWork(); } else if (name == _T("setting_tiaomacheng_geshi")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_tiaomacheng_geshi"))); int nSelect = com->GetCurSel(); CSetting::GetInstance()->SetParam("setting_tiaomacheng_geshi", to_string(nSelect + 1)); } else if (name == _T("setting_tiaomacheng_xinghao")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_tiaomacheng_xinghao"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_tiaomacheng_xinghao", "dahua_tm"); } } else if (name == _T("setting_biaoqian_printer_usb")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_usb"))); wstring usb_device = com->GetText();; CSetting::GetInstance()->SetParam("setting_biaoqian_printer_usb", CLewaimaiString::UnicodeToUTF8(usb_device)); } else if (name == _T("setting_biaoqian_printer_guige")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_guige"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_guige", "40*30mm"); } else if (com->GetCurSel() == 1) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_guige", "35*25mm"); } else if (com->GetCurSel() == 2) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_guige", "30*25mm"); } else if (com->GetCurSel() == 3) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_guige", "30*20mm"); } else if (com->GetCurSel() == 4) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_guige", "60*80mm"); } else if (com->GetCurSel() == 5) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_guige", "80*60mm"); } } else if (name == _T("setting_biaoqian_printer_fangxiang")) { CComboUI* com = static_cast(this->FindSubControl(_T("setting_biaoqian_printer_fangxiang"))); if (com->GetCurSel() == 0) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_fangxiang", "1"); } else if (com->GetCurSel() == 1) { CSetting::GetInstance()->SetParam("setting_biaoqian_printer_fangxiang", "0"); } } } //处理编辑框输入内容改变事件 void CSettingPageUI::HandleTextChangedMsg(TNotifyUI& msg) { } //处理扫码枪捕捉到的扫码信息 void CSettingPageUI::HandleTextCapture(std::string content) { } bool CSettingPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_SETTING_TONGBU_SUCCESS) { CLabelUI* label = static_cast(this->FindSubControl(L"setting_tongbu_result")); label->SetText(L"同步成功!"); label->SetVisible(true); } else if (uMsg == WM_SETTING_TONGBU_FAIL) { CLabelUI* label = static_cast(this->FindSubControl(L"setting_tongbu_result")); label->SetText(m_tongbu_error.c_str()); label->SetVisible(true); } return false; } void CSettingPageUI::StartTongbuBiaoqiancheng() { std::thread(&CSettingPageUI::HandleTongbuBiaoqiancheng, this).detach(); } void CSettingPageUI::HandleTongbuBiaoqiancheng() { boost::asio::io_service m_io; boost::asio::ip::tcp::socket m_socket(m_io); std::string ip = CSetting::GetInstance()->GetParam("setting_tiaomacheng_ip"); //初始化连接 try { boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string(ip.c_str()), 4001); m_socket.connect(ep); } catch (std::exception& e) { std::string err = e.what(); LOG_INFO("条码秤连接失败,IP地址:" << ip.c_str() << ",错误信息:" << err.c_str()); m_errinfo = L"条码秤连接失败,请检查IP设置,IP地址:" + CLewaimaiString::UTF8ToUnicode(ip); MessageBoxW(NULL, m_errinfo.c_str(), L"条码秤连接失败", MB_OK); return; } //!0V + 4位PLU + A + 7位商品编码 + 6位数价格(单位分) + 模式(0:称重,1:计件,2:定重) + 000000 + 3位有效期 + 2位店号(01-99)+ 000000000000000 + 2位皮重(00-15)+ //+ 0000000000000000000000000000000B + 商品名称区位码 + CDE + 换行符 CSqlite3 sqlite; std::vector foods = sqlite.GetFoodForTiaomacheng(); //注意这里商品只能一条一条的同步,不能很多条的命令拼装在一起同步 for (std::vector::iterator it = foods.begin(); it != foods.end(); it++) { std::string data = ""; data += "!0V"; //处理PLU; int n_plu = atoi(it->weight_plu_code.c_str()); if (n_plu < 1) { //无效的plu continue; } else if (n_plu > 4000) { //无效的plu continue; } string plu = to_string(n_plu); plu = CLewaimaiString::BuZifuLeft(plu, 4 - plu.length(), '0'); data += plu; data += "A"; //处理商品编码 int n_bianma = atoi(it->weight_food_code.c_str()); if (n_bianma < 1) { //无效的编码 continue; } else if (n_bianma > 999999) { //无效的编码 continue; } string bianma = to_string(n_bianma); bianma = CLewaimaiString::BuZifuLeft(bianma, 7 - bianma.length(), '0'); data += bianma; //价格 std::string price = to_string((int)(atof(it->price.c_str()) * 100)); data += CLewaimaiString::BuZifuLeft(price, 6 - price.length(), '0'); //模式,称重 data += '0'; data += "000000"; //有效期 data += "000"; //店号 data += "01"; data += "000000000000000"; //皮重 data += "00"; data += "0000000000000000000000000000000B"; //商品区位码 std::string quweima = CLewaimaiString::GetQuweima(CLewaimaiString::UTF8ToUnicode(it->name)); data += quweima; data += "CDE"; data += 0x0d; data += 0x0a; try { m_socket.write_some(boost::asio::buffer(data.c_str(), data.length())); } catch (const std::exception& e) { LOG_INFO("条码秤发送PLU信息失败,错误信息:" << e.what()); MessageBoxW(NULL, L"条码秤发送PLU信息失败", L"条码秤发送PLU信息失败", MB_OK); m_socket.close(); return; } char buf[128] = { 0 }; boost::system::error_code error; size_t len = m_socket.read_some(boost::asio::buffer(buf), error); std::string result = buf; LOG_INFO("发送PLU命令成功,返回信息:" << buf); } m_socket.close(); } void CSettingPageUI::StartTongbuRejian() { std::thread(&CSettingPageUI::HandleTongbuRejian, this).detach(); } void CSettingPageUI::HandleTongbuRejian() { boost::asio::io_service m_io; boost::asio::ip::tcp::socket m_socket(m_io); std::string ip = CSetting::GetInstance()->GetParam("setting_tiaomacheng_ip"); //初始化连接 try { boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string(ip.c_str()), 4001); m_socket.connect(ep); } catch (std::exception& e) { std::string err = e.what(); LOG_INFO("条码秤连接失败,IP地址:" << ip.c_str() << ",错误信息:" << err.c_str()); m_errinfo = L"条码秤连接失败,请检查IP设置,IP地址:" + CLewaimaiString::UTF8ToUnicode(ip); MessageBoxW(NULL, m_errinfo.c_str(), L"条码秤连接失败", MB_OK); return; } std::string data = ""; std::map pluMap; CSqlite3 sqlite; std::vector foods = sqlite.GetFoodForTiaomacheng(); for (std::vector::iterator it = foods.begin(); it != foods.end(); it++) { //处理PLU; int n_plu = atoi(it->weight_plu_code.c_str()); if (n_plu < 1) { //无效的plu continue;; } if (n_plu > 142) { //也不处理 continue; } string plu = to_string(n_plu); plu = CLewaimaiString::BuZifuLeft(plu, 4 - plu.length(), '0'); pluMap[n_plu] = plu; } //前36个 data += "!0L00A"; for (int i = 1; i <= 36; i++) { std::string s_i = to_string(i); std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0'); if (pluMap.find(i) != pluMap.end()) { //说明有这个plu的 data += pluMap[i]; } else { //没找到这个plu data += buqi_i; } } data += "B"; data += 0x0d; data += 0x0a; //37到72 data += "!0L01A"; for (int i = 37; i <= 72; i++) { std::string s_i = to_string(i); std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0'); if (pluMap.find(i) != pluMap.end()) { //说明有这个plu的 data += pluMap[i]; } else { //没找到这个plu data += buqi_i; } } data += "B"; data += 0x0d; data += 0x0a; //73到108 data += "!0L02A"; for (int i = 73; i <= 108; i++) { std::string s_i = to_string(i); std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0'); if (pluMap.find(i) != pluMap.end()) { //说明有这个plu的 data += pluMap[i]; } else { //没找到这个plu data += buqi_i; } } data += "B"; data += 0x0d; data += 0x0a; //109到142(108+36=144,最后2个空着) data += "!0L03A"; for (int i = 109; i <= 142; i++) { std::string s_i = to_string(i); std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0'); if (pluMap.find(i) != pluMap.end()) { //说明有这个plu的 data += pluMap[i]; } else { //没找到这个plu data += buqi_i; } } //完了这里要补最后的0 data += "00000000"; data += "B"; data += 0x0d; data += 0x0a; //网口走这里 try { m_socket.write_some(boost::asio::buffer(data.c_str(), data.length())); } catch (const std::exception& e) { LOG_INFO("条码秤同步热键失败,错误信息:" << e.what()); MessageBoxW(NULL, L"条码秤同步热键失败", L"条码秤同步热键失败", MB_OK); m_socket.close(); return; } char buf[128] = { 0 }; boost::system::error_code error; size_t len = m_socket.read_some(boost::asio::buffer(buf), error); std::string result = buf; LOG_INFO("条码秤同步热键成功,返回信息:" << buf); m_socket.close(); } void CSettingPageUI::StartQiongkongPLU() { std::thread(&CSettingPageUI::HandleQiongkongPLU, this).detach(); } void CSettingPageUI::HandleQiongkongPLU() { boost::asio::io_service m_io; boost::asio::ip::tcp::socket m_socket(m_io); std::string ip = CSetting::GetInstance()->GetParam("setting_tiaomacheng_ip"); //初始化连接 try { boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string(ip.c_str()), 4001); m_socket.connect(ep); } catch (std::exception& e) { std::string err = e.what(); LOG_INFO("条码秤连接失败,IP地址:" << ip.c_str() << ",错误信息:" << err.c_str()); m_errinfo = L"条码秤连接失败,请检查IP设置,IP地址:" + CLewaimaiString::UTF8ToUnicode(ip); MessageBoxW(NULL, m_errinfo.c_str(), L"条码秤连接失败", MB_OK); return; } if (1) { std::string data = ""; //先发送清空命令 data += "!0IA"; data += 0x0d; data += 0x0a; try { m_socket.write_some(boost::asio::buffer(data.c_str(), data.length())); } catch (const std::exception& e) { LOG_INFO("条码秤发送清空PLU失败,错误信息:" << e.what()); MessageBoxW(NULL, L"条码秤发送清空PLU失败", L"条码秤发送清空PLU失败", MB_OK); m_socket.close(); return; } char buf[128] = { 0 }; boost::system::error_code error; size_t len = m_socket.read_some(boost::asio::buffer(buf), error); std::string result = buf; LOG_INFO("发送清空PLU命令成功,返回信息:" << buf); } if (1) { std::string data = ""; ///再清除记录 data += "!0HA"; data += 0x0d; data += 0x0a; try { m_socket.write_some(boost::asio::buffer(data.c_str(), data.length())); } catch (const std::exception& e) { LOG_INFO("条码秤发送清空历史记录失败,错误信息:" << e.what()); MessageBoxW(NULL, L"条码秤发送清空历史记录失败", L"条码秤发送清空历史记录失败", MB_OK); m_socket.close(); return; } char buf[128] = { 0 }; boost::system::error_code error; size_t len = m_socket.read_some(boost::asio::buffer(buf), error); std::string result = buf; LOG_INFO("发送清空历史记录命令成功,返回信息:" << buf); } } void CSettingPageUI::StartTongbu() { std::thread(&CSettingPageUI::HandleTongbu, this).detach(); } void CSettingPageUI::HandleTongbu() { bool ret = CFoodHandle::GetInstance()->InitAllFood(); if (!ret) { m_tongbu_error = L"同步商品失败!"; ::PostMessage(m_pManager->GetPaintWindow(), WM_SETTING_TONGBU_FAIL, 0, 0); return; } //获取店铺信息 std::wstring errmsg; ret = CShopinfo::GetInstance()->UpdateOneShopinfo(errmsg); if (!ret) { m_tongbu_error = errmsg; ::PostMessage(m_pManager->GetPaintWindow(), WM_SETTING_TONGBU_FAIL, 0, 0); return; } ::PostMessage(m_pManager->GetPaintWindow(), WM_SETTING_TONGBU_SUCCESS, 0, 0); }