#include "recoUiRecognize.h" #include #include "UiConfig.h" #include #include #include #include #include "UiInterfaceForBackstage.h" #include const int SceneMsgWidget::DATE_TIME_FONT_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {28, 26, 26, 10, 10}; SceneMsgWidget::SceneMsgWidget(QWidget *parent) : QWidget(parent) { setAutoFillBackground(true); QPalette palette(this->palette()); palette.setColor(QPalette::WindowText,Qt::black); palette.setColor(QPalette::Background, QColor(Qt::white)); setPalette(palette); setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight() / 10); m_wgtDateTime = new DateTimeWidgetClassical(DATE_TIME_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()], this); connect(m_wgtDateTime, SIGNAL(signalNewDay()), this, SLOT(slotNewDay())); m_labelPersonNum = new QLabel(this); QFont ft; ft.setPointSize(DATE_TIME_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_labelPersonNum->setFont(ft); QHBoxLayout* hlay = new QHBoxLayout(); hlay->addWidget(m_wgtDateTime); hlay->addStretch(); hlay->addWidget(m_labelPersonNum); hlay->setMargin(20); setLayout(hlay); } int SceneMsgWidget::setType(int type) { qDebug() << "type:" << type << "m_type:" << m_type; if(type < 0 || type > 2 || m_type == type){ return -1; } m_type = type; if(2 == m_type){ m_labelPersonNum->setText(""); }else if(m_type >= 0){ setPersonNum(-1, 0); } return 0; } void SceneMsgWidget::setPersonNum(int source, int personNum) { qDebug() << "type:" << m_type << "source:" << source; if(m_type == 2 || (source >=0 && source != m_type)){ return; } const QVector items{tr("今日检票:"), tr("今日通行:")}; if (m_type < items.size()) { m_labelPersonNum->setText(items.at(m_type) + QString::number(personNum) + tr("人")); } } void SceneMsgWidget::setBgTransparent(bool set) { QPalette palette(this->palette()); palette.setColor(QPalette::Background, set ? QColor(0, 0, 0, 0) : QColor(Qt::white)); setPalette(palette); } void SceneMsgWidget::slotNewDay() { setPersonNum(-1, 0); } const QString TmprWidget::TEMP_BG_GREEN_TOP_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/green-top-small.png", ":/res/image/green-top-middle.png", ":/res/image/green-top-middle.png", ":/res/image/green-top-middle-rk.png", ":/res/image/green-top-middle-rk.png" }; const QString TmprWidget::TEMP_BG_RED_TOP_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/red-top-small.png", ":/res/image/red-top-middle.png", ":/res/image/red-top-middle.png", ":/res/image/red-top-middle-rk.png", ":/res/image/red-top-middle-rk.png" }; const int TmprWidget::TMPR_WIDGET_HEIGHT[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {174, 192, 192, 193, 193}; const int TmprWidget::TMPR_FONT_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {25, 40, 40, 14, 14}; const QString MsgWidget::NO_NETWORK_RES_FILE[STYLE_QUANTITY][UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { {":/res/image/no-network-smallB.png", ":/res/image/no-network-middleB.png", ":/res/image/no-network-middleB.png", ":/res/image/no-network-middleB.png", ":/res/image/no-network-middleB.png"}, {":/res/image/no-network-small.png", ":/res/image/no-network-middle.png", ":/res/image/no-network-middle.png", ":/res/image/no-network-middle.png", ":/res/image/no-network-middle.png"}, }; const QString MsgWidget::NETWORK_CONNECTED_RES_FILE[STYLE_QUANTITY][UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { {":/res/image/network-connected-smallB.png", ":/res/image/network-connected-middleB.png", ":/res/image/network-connected-middleB.png", ":/res/image/network-connected-middleB.png", ":/res/image/network-connected-middleB.png"}, {":/res/image/network-connected-small.png", ":/res/image/network-connected-middle.png", ":/res/image/network-connected-middle.png", ":/res/image/network-connected-middle.png", ":/res/image/network-connected-middle.png"}, }; const QString MsgWidget::NETWORK_LOGGED_RES_FILE[STYLE_QUANTITY][UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { {":/res/image/network-cloud-smallB.png", ":/res/image/network-cloud-middleB.png", ":/res/image/network-cloud-middleB.png", ":/res/image/network-cloud-middleB.png", ":/res/image/network-cloud-middleB.png"}, {":/res/image/network-cloud-small.png", ":/res/image/network-cloud-middle.png", ":/res/image/network-cloud-middle.png", ":/res/image/network-cloud-middle.png", ":/res/image/network-cloud-middle.png"}, }; const QString MsgWidget::NET_ETH_IP_RES_FILE[STYLE_QUANTITY][UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { {":/res/image/network-smallB.png", ":/res/image/network-middleB.png", ":/res/image/network-middleB.png", ":/res/image/network-middleB.png", ":/res/image/network-middleB.png"}, {":/res/image/network-small.png", ":/res/image/network-middle.png", ":/res/image/network-middle.png", ":/res/image/network-middle.png", ":/res/image/network-middle.png"}, }; const QString MsgWidget::NET_WIFI_IP_RES_FILE[STYLE_QUANTITY][UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { {":/res/image/wifi-smallB.png", ":/res/image/wifi-middleB.png", ":/res/image/wifi-middleB.png", ":/res/image/wifi-middleB.png", ":/res/image/wifi-middleB.png"}, {":/res/image/wifi-small.png", ":/res/image/wifi-middle.png", ":/res/image/wifi-middle.png", ":/res/image/wifi-middle.png", ":/res/image/wifi-middle.png"}, }; const QString MsgWidget::NET_4G_IP_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/4G-small.png", ":/res/image/4G-middle.png", ":/res/image/4G-middle.png", ":/res/image/4G-middle.png", ":/res/image/4G-middle.png" }; const QString MsgWidget::BG_BLUE_BOM_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/blue-bom-small.png", ":/res/image/blue-bom-middle.png", ":/res/image/blue-bom-middle.png", ":/res/image/blue-bom-middle.png", ":/res/image/blue-bom-middle.png" }; const QString MsgWidget::BG_GREEN_BOM_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/green-bom-small.png", ":/res/image/green-bom-middle.png", ":/res/image/green-bom-middle.png", ":/res/image/green-bom-middle.png", ":/res/image/green-bom-middle.png" }; const QString MsgWidget::BG_RED_BOM_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/red-bom-small.png", ":/res/image/red-bom-middle.png", ":/res/image/red-bom-middle.png", ":/res/image/red-bom-middle.png", ":/res/image/red-bom-middle.png" }; const int MsgWidget::TIME_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {8, 24, 22, 8, 7}; const int MsgWidget::MSG_WORD_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {12, 24, 24, 8, 8}; const int MsgWidget::NOTI_MSG_WORD_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {8, 16, 15, 6, 5}; //const int DetectResultWidget::DETECT_RESULT_WIDGET_WIDTH[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {389, 492, 492, 492, 492}; //const int DetectResultWidget::DETECT_RESULT_WIDGET_HEIGHT[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {108, 134, 134, 136, 136}; const int DetectResultWidget::DETECT_RESULT_WIDGET_WIDTH[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {389, 490, 490, 490, 490}; const int DetectResultWidget::DETECT_RESULT_WIDGET_HEIGHT[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {108, 128, 128, 129, 129}; const int DetectResultWidget::MASK_LOGO_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {50, 80, 80, 64, 64}; const QString DetectResultWidget::BG_BLUE_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/msg_box_bg_blue.png", ":/res/image/msg_box_bg_type1_blue_large.png", ":/res/image/msg_box_bg_type1_blue_large.png", ":/res/image/msg_box_bg_type1_blue_large.png", //msg_box_bg_blue_middle ":/res/image/msg_box_bg_type1_blue_large.png" }; const QString DetectResultWidget::BG_RED_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/msg_box_bg_red.png", ":/res/image/msg_box_bg_type1_red_large.png", ":/res/image/msg_box_bg_type1_red_large.png", ":/res/image/msg_box_bg_type1_red_large.png", //msg_box_bg_red_middle ":/res/image/msg_box_bg_type1_red_large.png" }; const QString recoUiRecognize::BG_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/face-small.png", ":/res/image/jinggong-face-middle.png", ":/res/image/face_720_1280.png", ":/res/image/jinggong-face-middle.png", ":/res/image/face_720_1280.png" }; const QString recoUiRecognize::DARK_FILL_LIGHT_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { "", ":/res/image/dark_fill_light_8inch.png", ":/res/image/dark_fill_light_5inch.png", ":/res/image/dark_fill_light_8inch.png", ":/res/image/dark_fill_light_5inch.png" }; //7 inch: 600 * 0.1 //8 inch: 800 * 0.12 //5 inch: 720 * 0.12 const int recoUiRecognize::MSG_WIDGET_HEIGHT[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {60, 96, 86, 97, 97}; const QString recoUiRecognize::SCANLINE_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/scan-line-small.png", ":/res/image/scan-line-middle.png", ":/res/image/scan-line-middle.png", ":/res/image/scan-line-middle.png", ":/res/image/scan-line-middle.png" }; const QString recoUiRecognize::LOGO_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/logo_small.png", ":/res/image/logo2.png", ":/res/image/logo2.png", ":/res/image/logo2.png", ":/res/image/logo2.png" }; const QString recoUiRecognize::TEMP_CALIBOX_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/calibration_box_small.png", ":/res/image/calibration_box_middle.png", ":/res/image/calibration_box_middle.png", ":/res/image/calibration_box_middle.png", ":/res/image/calibration_box_middle.png" }; const int CenterMsgWidget::WIDGET_WIDTH[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {459, 566, 509, 566, 509}; const int CenterMsgWidget::WIDGET_HEIGHT[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {253, 313, 282, 313, 282}; const int CenterMsgWidget::FONT_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {14, 22, 22, 8, 8}; const QString CenterMsgWidget::BG_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/center_msg_600_1024.png", ":/res/image/center_msg_800_1280.png", ":/res/image/center_msg_720_1280.png", ":/res/image/center_msg_800_1280.png", ":/res/image/center_msg_720_1280.png" }; const QString recoUiRecognize::PWD_BTN[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/pwd_small.png", ":/res/image/pwd_large.png", ":/res/image/pwd_middle.png", ":/res/image/pwd_large.png", ":/res/image/pwd_middle.png" }; const QString recoUiRecognize::PWD_BTN_PRESSED[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/pwd_small_pressed.png", ":/res/image/pwd_large_pressed.png", ":/res/image/pwd_middle_pressed.png", ":/res/image/pwd_large_pressed.png", ":/res/image/pwd_middle_pressed.png" }; const int recoUiRecognize::PWD_BTN_W_H[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {61, 92, 76, 93, 77}; const QString FinalResultWidget::FINAL_RESULT_OK_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/ok_small.png", ":/res/image/ok_large.png", ":/res/image/ok_middle.png", ":/res/image/ok_large.png", ":/res/image/ok_middle.png" }; const QString FinalResultWidget::FINAL_RESULT_FAIL_RES_FILE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/fail_small.png", ":/res/image/fail_large.png", ":/res/image/fail_middle.png", ":/res/image/fail_large.png", ":/res/image/fail_middle.png" }; const int FinalResultWidget::FINAL_RESULT_WIDGET_W_H[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {130, 173, 160, 173, 160}; const int recoUiRecognize::SWIP_CARD_WIDGET_WIDTH[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {400, 598, 598, 598, 598}; const int recoUiRecognize::SWIP_CARD_WIDGET_HEIGHT[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {70, 131, 131, 132, 132}; const QString recoUiRecognize::SWIP_CARD_DAY_MODE_WIDGET_BG[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/swipe_card_day_mode_type0_large.png", ":/res/image/swipe_card_day_mode_type0_large.png", ":/res/image/swipe_card_day_mode_type0_large.png", ":/res/image/swipe_card_day_mode_type0_large.png", ":/res/image/swipe_card_day_mode_type0_large.png" }; const QString recoUiRecognize::SWIP_CARD_NIGHT_MODE_WIDGET_BG[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/swipe_card_night_mode_type0_large.png", ":/res/image/swipe_card_night_mode_type0_large.png", ":/res/image/swipe_card_night_mode_type0_large.png", ":/res/image/swipe_card_night_mode_type0_large.png", ":/res/image/swipe_card_night_mode_type0_large.png" }; const QString recoUiRecognize::CALL_BTN[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = { ":/res/image/voice_video_call_large.png", ":/res/image/voice_video_call_large.png", ":/res/image/voice_video_call_large.png", ":/res/image/voice_video_call_large.png", ":/res/image/voice_video_call_large.png" }; TmprWidget::TmprWidget(QWidget *parent) : QWidget (parent), m_ForeheadTmpr(0) { m_label_tem = new QLabel(this); //m_label_tem->setText("--℃"); //m_label_msg = new QLabel(this); //m_label_msg->setText(tr("体温正常")); QPalette palette(this->palette()); palette.setColor(QPalette::WindowText,Qt::white); palette.setColor(QPalette::Background,QColor(0, 0, 0, 0)); setAutoFillBackground(true); setPalette(palette); QFont ft; ft.setPointSize(static_cast(TMPR_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * UiConfig::GetInstance()->recoUiTextCfgFontSize(RecoUiTextCfg::TextTemp))); m_label_tem->setFont(ft); //m_label_msg->setFont(ft); QVBoxLayout* vLayout = new QVBoxLayout(); vLayout->addWidget(m_label_tem, 1, Qt::AlignTop | Qt::AlignCenter); //vLayout->addWidget(m_label_msg, 1, Qt::AlignCenter); setLayout(vLayout); } TmprWidget::~TmprWidget() { } void TmprWidget::showNormalTemp(const QString& msg, float temp, bool isC) { //if(isHidden() || fabs(m_ForeheadTmpr - temp) > 0.1f) { QString strTem = msg; QString tmpr; const float min = (isC ? recoUiRecognize::LOW_TEMP_VALUE : recoUiRecognize::LOW_TEMP_VALUE * 1.8 + 32.0); const float max = (isC ? recoUiRecognize::HIGH_TEMP_VALUE : recoUiRecognize::HIGH_TEMP_VALUE * 1.8 + 32.0); if(temp < min){ strTem += "<" + tmpr.setNum(min, 'f', 1); //为了不增加新的翻译项,小于号单独加 } else if(temp > max){ strTem += ">" + tmpr.setNum(max, 'f', 1); //为了不增加新的翻译项,大于号单独加 } else { strTem += tmpr.setNum(temp, 'f', 1); } strTem += (isC ? "℃" : "℉"); if(temp < 0.0f){ strTem = ""; } QFont ft; ft.setPointSize(UiConfig::GetInstance()->recoUiFontSize(RecoUiTextCfg::TextTemp) ? UiConfig::GetInstance()->recoUiFontSize(RecoUiTextCfg::TextTemp) : static_cast(TMPR_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * UiConfig::GetInstance()->recoUiTextCfgFontSize(RecoUiTextCfg::TextTemp))); m_label_tem->setFont(ft); m_label_tem->setText(strTem); #if 0 QPalette palette(this->palette()); palette.setColor(QPalette::Background,QColor(79, 129, 223, 200)); //蓝色正常体温 setPalette(palette); show(); #endif m_ForeheadTmpr = temp; } } void TmprWidget::showAbnormalTemp(const QString& msg, float temp, bool isHigh, bool isC) { //qDebug() << "showAbnormalTemp:" << temp << "-" << isHigh; //if(isHidden() || fabs(m_ForeheadTmpr - temp) > 0.1f) { const float min = (isC ? recoUiRecognize::LOW_TEMP_VALUE : recoUiRecognize::LOW_TEMP_VALUE * 1.8 + 32.0); const float max = (isC ? recoUiRecognize::HIGH_TEMP_VALUE : recoUiRecognize::HIGH_TEMP_VALUE * 1.8 + 32.0); QString strTem = msg; //QPalette palette(this->palette()); /* if( temp > static_cast(-(1e-6)) && temp < static_cast(1e-6) ) { //strTem = "---℃"; //m_label_msg->setText(tr("体温测量中...")); //palette.setColor(QPalette::Background,QColor(144, 158, 195, 200)); } else*/ { QString tmpr; //if(isHigh){ if(temp < min){ strTem += "<" + tmpr.setNum(min, 'f', 1); //为了不增加新的翻译项,小于号单独加 } else if(temp > max){ strTem += ">" + tmpr.setNum(max, 'f', 1); //为了不增加新的翻译项,大于号单独加 } else { strTem += tmpr.setNum(temp, 'f', 1); } //} strTem += (isC ? "℃" : "℉"); //if(isHigh) // m_label_msg->setText(tr("疑似高温")); //else // m_label_msg->setText(tr("低温异常")); //palette.setColor(QPalette::Background,QColor(200, 77, 79, 200));//红色异常体温 } if(temp < 0.0f){ strTem = ""; } QFont ft; ft.setPointSize(UiConfig::GetInstance()->recoUiFontSize(RecoUiTextCfg::TextTemp) ? UiConfig::GetInstance()->recoUiFontSize(RecoUiTextCfg::TextTemp) : static_cast(TMPR_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * UiConfig::GetInstance()->recoUiTextCfgFontSize(RecoUiTextCfg::TextTemp))); m_label_tem->setFont(ft); m_label_tem->setText(strTem); //setPalette(palette); //show(); m_ForeheadTmpr = temp; } } void TmprWidget::setBackgroundColor(WIDGET_BG_COLOR_E color) { QPalette pal(palette()); if(WIDGET_BG_COLOR_GREEN == color){ pal.setBrush(QPalette::Background, QBrush(QPixmap(TEMP_BG_GREEN_TOP_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } else if(WIDGET_BG_COLOR_RED == color){ pal.setBrush(QPalette::Background, QBrush(QPixmap(TEMP_BG_RED_TOP_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } pal.setColor(QPalette::WindowText,Qt::white); setPalette(pal); if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } } MsgWidget::MsgWidget(int timeType, int iconType, const QColor& textColor, QWidget *parent) : QWidget(parent), m_style(iconType) { qDebug() << "MsgWidget()"; QPalette palette(this->palette()); palette.setColor(QPalette::WindowText, textColor); palette.setColor(QPalette::Background, QColor(0, 0, 0, 0)); setPalette(palette); setAutoFillBackground(true); QFont ft; //m_label_msgTop = new QLabel(this); //m_label_msgTop->setText(tr("请刷脸通行")); //ft.setPointSize(recoUiRecognize::MSG_WORD_SIZE); //m_label_msgTop->setFont(ft); m_label_Icon = new QLabel(this); //m_label_Icon->setFixedSize(recoUiRecognize::LOGO_SIZE, recoUiRecognize::LOGO_SIZE); //QPixmap pm(":/res/image/logo.png"); //m_label_Icon->setPixmap(pm.scaled(recoUiRecognize::LOGO_SIZE, recoUiRecognize::LOGO_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); m_label_Icon->setAutoFillBackground(true); setLogo(""); m_label_msgBtm = new QLabel(this); ft.setPointSize(MSG_WORD_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_label_msgBtm->setFont(ft); m_label_msgNoti = new QLabel(this); ft.setPointSize(NOTI_MSG_WORD_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_label_msgNoti->setFont(ft); //m_label_msgNoti->setText("正在同步云端人员信息(99/100)");//for test m_label_networkStatus = new QLabel(this); QPixmap pm; pm.load(NO_NETWORK_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]); //pm = pm.scaled(20, 20, Qt::KeepAspectRatio); m_label_networkStatus->setPixmap(pm); m_label_time = new QLabel(this); m_label_time->setText("12:34"); ft.setPointSize(TIME_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_label_time->setFont(ft); _timerUpdate = new TimerUpdate(m_label_time, this); if(0 == timeType){ m_label_time->hide(); } m_label_ip = new QLabel(this); m_label_ip->setText("xxx.xxx.xxx.xxx"); ft.setPointSize(static_cast(TIME_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 0.8)); m_label_ip->setFont(ft); m_label_ipType = new QLabel(this); pm.load(NET_ETH_IP_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]); //pm = pm.scaled(20, 20, Qt::KeepAspectRatio); m_label_ipType->setPixmap(pm); //ft.setPointSize(static_cast(TIME_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 0.8)); m_labelDevId = new QLabel(this); m_labelDevId->setFont(ft); m_labelVer = new QLabel(this); m_labelVer->setFont(ft); QVBoxLayout* vLayoutInfo = new QVBoxLayout(); vLayoutInfo->addStretch(); vLayoutInfo->addWidget(m_labelDevId); vLayoutInfo->addWidget(m_labelVer); vLayoutInfo->setSpacing(0); vLayoutInfo->setContentsMargins(10, 0, 0, 15);//setMargin(15);// QHBoxLayout* hLayoutIcon = new QHBoxLayout(); hLayoutIcon->addWidget(m_label_Icon); hLayoutIcon->setSpacing(0); hLayoutIcon->setMargin(10); QHBoxLayout* hLayoutRight = new QHBoxLayout(); hLayoutRight->addWidget(m_label_networkStatus, 8, Qt::AlignRight); if(m_label_time){ hLayoutRight->addWidget(m_label_time, 1, Qt::AlignRight); } hLayoutRight->setSpacing(5); hLayoutRight->setMargin(5); QHBoxLayout* hLayoutIp = new QHBoxLayout(); hLayoutIp->addWidget(m_label_ipType, 8, Qt::AlignRight); hLayoutIp->addWidget(m_label_ip, 1, Qt::AlignRight); hLayoutIp->setSpacing(5); hLayoutIp->setMargin(5); QVBoxLayout* vLayout = new QVBoxLayout(); vLayout->addLayout(hLayoutRight, 50); vLayout->addLayout(hLayoutIp, 2); vLayout->setSpacing(0); vLayout->setMargin(10); //by x 20210317 QVBoxLayout* vLayoutMsg = new QVBoxLayout(); vLayoutMsg->addWidget(m_label_msgBtm); vLayoutMsg->addWidget(m_label_msgNoti); vLayoutMsg->setSpacing(0); vLayoutMsg->setMargin(0); QHBoxLayout* hLayout = new QHBoxLayout(); hLayout->addWidget(m_label_Icon);//, 1, Qt::AlignLeft hLayout->addLayout(vLayoutInfo);//, 1 //hLayout->addStretch(); //hLayout->addWidget(m_label_msgBtm, 6, Qt::AlignCenter); //布局管理在其他组件消失时会位置偏移 //hLayout->addWidget(m_label_networkStatus, 1, Qt::AlignRight); //hLayout->addWidget(m_label_time, 1, Qt::AlignRight); //hLayout->addLayout(hLayoutIcon, 1); //hLayout->addLayout(vLayoutMsg, 80); //by x 20210317 hLayout->addLayout(vLayout, 99); hLayout->setContentsMargins(UiConfig::GetInstance()->getUiWidth() / 50, 0, 0, 0); hLayout->setSpacing(0); //QVBoxLayout* vLayout = new QVBoxLayout(); //vLayout->addLayout(hLayoutTop); //vLayout->addLayout(hLayout); //vLayout->setSpacing(20); setLayout(hLayout); } MsgWidget::~MsgWidget() { qDebug() << "~MsgWidget()"; } /* void MsgWidget::setMsgTop(const QString& msg) { m_label_msgTop->setText(msg); } */ void MsgWidget::setMsgBtm(const QString& msg, const bool setRedColor) { if(msg != ""){ m_label_msgBtm->setText(msg); QPalette palette(this->palette()); palette.setColor(QPalette::Background,QColor(0, 0, 0, 0)); if(setRedColor){ palette.setColor(QPalette::WindowText,Qt::red); } else{ palette.setColor(QPalette::WindowText,Qt::white); } m_label_msgBtm->setPalette(palette); m_label_msgBtm->setAlignment(Qt::AlignCenter); QFont ft; ft.setPointSize(static_cast(MSG_WORD_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * UiConfig::GetInstance()->recoUiTextCfgFontSize(RecoUiTextCfg::TextNoEntry))); m_label_msgBtm->setFont(ft); //by x 20210317 m_label_msgBtm->setFixedSize(UiConfig::GetInstance()->getUiWidth() * 0.7, height() / 2); m_label_msgBtm->move((UiConfig::GetInstance()->getUiWidth() - m_label_msgBtm->width()) / 2, 0); //(height() - m_label_msgBtm->height()) / 2); m_label_msgBtm->show(); } else{ m_label_msgBtm->hide(); } } void MsgWidget::setMsgNoti(const QString& msg, int color) { if(msg != ""){ m_label_msgNoti->setText(msg); QPalette palette(this->palette()); palette.setColor(QPalette::Background,QColor(0, 0, 0, 0)); switch(color) { case 0: palette.setColor(QPalette::WindowText,Qt::white); break; case 1: palette.setColor(QPalette::WindowText,Qt::red); break; case 2: palette.setColor(QPalette::WindowText,Qt::yellow); break; case 3: break; default: break; } m_label_msgNoti->setPalette(palette); m_label_msgNoti->setAlignment(Qt::AlignCenter); //by x 20210317 m_label_msgNoti->setFixedSize(UiConfig::GetInstance()->getUiWidth() * 0.5, height() / 2); m_label_msgNoti->move((UiConfig::GetInstance()->getUiWidth() - m_label_msgNoti->width()) / 2, height() / 2); //(height() - m_label_msgNoti->height()) / 2); m_label_msgNoti->show(); if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } } else{ m_label_msgNoti->hide(); } } void MsgWidget::setLogo(const QString& pic, const bool scale) { if(!pic.isEmpty()){ QPixmap pm(pic); if(scale){ m_label_Icon->setFixedSize(height(), height()); m_label_Icon->setPixmap(ScalePixmap2Label(pm, *m_label_Icon)); } else { m_label_Icon->setPixmap(pm); } m_label_Icon->show(); } else{ #if 0 //使用颜色填充替代隐藏,隐藏后会导致其他组件位置变化 m_label_Icon->clear(); QPalette palette(this->palette()); palette.setColor(QPalette::Background,QColor(0, 0, 0, 0)); m_label_Icon->setPalette(palette); #else m_label_Icon->hide(); #endif } } bool MsgWidget::hasNoMsg() { return (m_label_msgBtm->text() == ""); } void MsgWidget::setNetworkStatus(const int status) { QPixmap pm; switch(status) { case UiInterfaceForBackstage::PLATFORM_CONNECTION_STATUS_DISCONNECTED: pm.load(NO_NETWORK_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]); break; case UiInterfaceForBackstage::PLATFORM_CONNECTION_STATUS_CONNECTED: pm.load(NETWORK_CONNECTED_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]); break; case UiInterfaceForBackstage::PLATFORM_CONNECTION_STATUS_LOGGED: pm.load(NETWORK_LOGGED_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]); break; default: break; } //m_label_networkStatus->setPixmap(pm.scaled(20, 20, Qt::KeepAspectRatio)); m_label_networkStatus->setPixmap(pm); } void MsgWidget::setBackgroundColor(const WIDGET_BG_COLOR_E color) { QPalette pal(palette()); if(WIDGET_BG_COLOR_BLUE == color){ pal.setBrush(QPalette::Background,QBrush(QPixmap(BG_BLUE_BOM_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } else if(WIDGET_BG_COLOR_GREEN == color){ pal.setBrush(QPalette::Background,QBrush(QPixmap(BG_GREEN_BOM_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } else if(WIDGET_BG_COLOR_RED == color){ pal.setBrush(QPalette::Background,QBrush(QPixmap(BG_RED_BOM_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } setPalette(pal); } void MsgWidget::updateIp(const QString& ip, int type) { if(ip != "" && type >= 0){ m_label_ip->setText(ip); m_label_ip->show(); QPixmap icon; switch(type){ case 0:icon.load(NET_ETH_IP_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]);break; case 1:icon.load(NET_WIFI_IP_RES_FILE[m_style][UiConfig::GetInstance()->getScreenConfigIndex()]);break; #if 0 case 2:icon.load(":/res/image/4g_1.png");break; case 3:icon.load(":/res/image/4g_2.png");break; case 4:icon.load(":/res/image/4g_3.png");break; case 5:icon.load(":/res/image/4g_4.png");break; case 6:icon.load(":/res/image/4g_5.png");break; case 7:icon.load(":/res/image/4g_0.png");break; #else case 2 ... 7: icon.load(QString(":/res/image/4g_%1%2.png").arg(type <= 6 ? type - 1 : 0).arg(1 == m_style ? "B" : ""));break; #endif default:break; } m_label_ipType->setPixmap(icon); m_label_ipType->show(); } else { m_label_ip->hide(); m_label_ipType->hide(); } if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } } void MsgWidget::showDevInfo(const QString& devId, const QString& ver) { m_labelDevId->setText("ID:" + devId); m_labelVer->setText("VER:" + ver.mid(8)); } void MsgWidget::setStyle(int timeType, int iconType, const QColor& textColor) { if(0 == timeType){ m_label_time->hide(); }else{ m_label_time->show(); } m_style = iconType; QPalette palette(this->palette()); palette.setColor(QPalette::WindowText, textColor); setPalette(palette); } void MsgWidget::showRecoUiDevIdAndVer(bool show) { m_labelDevId->setVisible(show); m_labelVer->setVisible(show); } DetectResultWidget::DetectResultWidget(QWidget *parent) : QWidget(parent) { qDebug() << "DetectResultWidget()"; QPalette palette; palette.setColor(QPalette::WindowText,Qt::white); //palette.setColor(QPalette::Background,QColor(0, 0, 0, 0)); setPalette(palette); m_label_Icon = new QLabel(this); m_label_msg = new QLabel(this); m_label_msg->setPalette(palette); QHBoxLayout* hLayout = new QHBoxLayout(); hLayout->addWidget(m_label_Icon, 1, Qt::AlignCenter); hLayout->addWidget(m_label_msg, 4, Qt::AlignCenter); hLayout->setMargin(0); //hLayout->setSpacing(10); setLayout(hLayout); setFixedSize(DETECT_RESULT_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()], DETECT_RESULT_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]); setAutoFillBackground(true); //hide(); } DetectResultWidget::~DetectResultWidget() { qDebug() << "~DetectResultWidget()"; } void DetectResultWidget::showMsg(const QString& msg, int msgSize, BG_COLOR_E color, const QPixmap* icon) { if("" == msg){ hide(); return; } if(icon){ m_label_Icon->setPixmap(*icon); } else { m_label_Icon->hide(); } QFont ft; ft.setPointSize(msgSize); m_label_msg->setFont(ft); m_label_msg->setText(msg); QPalette pal(palette()); if(BG_COLOR_BLUE == color){ //setStyleSheet("border-image:url(:/res/image/SmartGate_scanFail.png);"); pal.setBrush(QPalette::Background,QBrush(QPixmap(BG_BLUE_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } else if(BG_COLOR_RED == color){ pal.setBrush(QPalette::Background,QBrush(QPixmap(BG_RED_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); } if(BG_COLOR_GREEN == color){ pal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/msg_box_bg_green.png"))); } else if(BG_COLOR_YELLOW == color){ pal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/msg_box_bg_yellow.png"))); } else if(BG_COLOR_TRAN == color){ m_label_msg->clear(); pal.setColor(QPalette::Background,QColor(0, 0, 0, 0)); m_label_msg->setPalette(pal); } pal.setColor(QPalette::WindowText,Qt::white); setPalette(pal); } #if 1 void DetectResultWidget::updateMsg(const QString& msg) { m_label_msg->setText(msg); } MaskWidget_o::MaskWidget_o(QWidget *parent) : DetectResultWidget(parent), m_lastMaskOk(true) { qDebug() << "MaskWidget()"; m_iconMaskOk.load(":/res/image/green_mask.png"); m_iconMaskOk = m_iconMaskOk.scaled(MASK_LOGO_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()], MASK_LOGO_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()], Qt::IgnoreAspectRatio, Qt::SmoothTransformation); m_iconMaskNull.load(":/res/image/red_mask.png"); m_iconMaskNull = m_iconMaskNull.scaled(MASK_LOGO_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()], MASK_LOGO_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()], Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } void MaskWidget_o::setMaskMsg(bool maskOk, const QString& msg) { //qDebug() << "setMaskMsg" << maskOk; // if(isHidden() || m_lastMaskOk != maskOk) //by x 20220323 { //qDebug() << "m_lastMaskOk != maskOk"; //need to adjust font size int fontSize = UiConfig::GetInstance()->recoUiFontSize(maskOk ? RecoUiTextCfg::TextMaskOk : RecoUiTextCfg::TextNOMask) ? UiConfig::GetInstance()->recoUiFontSize(maskOk ? RecoUiTextCfg::TextMaskOk : RecoUiTextCfg::TextNOMask) : static_cast(UiConfig::MASK_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()][UiConfig::GetInstance()->getLanguageType()] * UiConfig::GetInstance()->recoUiTextCfgFontSize(maskOk ? RecoUiTextCfg::TextMaskOk : RecoUiTextCfg::TextNOMask)); if(maskOk){ showMsg(msg, fontSize, BG_COLOR_BLUE, &m_iconMaskOk); } else { showMsg(msg, fontSize, BG_COLOR_RED, &m_iconMaskNull); } m_lastMaskOk = maskOk; show(); if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } } } void MaskWidget_o::showQRCodeMsg(UiInterfaceForBackstage::QRCode_Msg_E msg) { QString str; BG_COLOR_E color = BG_COLOR_TRAN; int fontSize = UiConfig::GetInstance()->recoUiFontSize(2) ? UiConfig::GetInstance()->recoUiFontSize(2) : static_cast(UiConfig::PERSON_MSG_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()][UiConfig::GetInstance()->getLanguageType()] * 1); switch (msg) { case UiInterfaceForBackstage::QRCode_Msg_Standby: str = tr("请出示个人平安码"); break; case UiInterfaceForBackstage::QRCode_Msg_Verifying: str = tr("正在验证..."); break; case UiInterfaceForBackstage::QRCode_Msg_Error: str = tr("验证错误请重试"); break; case UiInterfaceForBackstage::QRCode_Msg_RedCode: str = tr("请走人工通道"); //红码 color = BG_COLOR_RED; break; case UiInterfaceForBackstage::QRCode_Msg_GreenCode: str = tr("请通行"); //绿码 color = BG_COLOR_GREEN; break; case UiInterfaceForBackstage::QRCode_Msg_YellowCode: str = tr("请走人工通道"); //黄码 color = BG_COLOR_YELLOW; break; case UiInterfaceForBackstage::QRCode_Msg_OtherCode: str = tr("无效平安码"); break; case UiInterfaceForBackstage::QRCode_Msg_Overtime: str = tr("扫码超时"); break; default: break; } showMsg(str, fontSize, color); } QString MaskWidget_o::curMsg() const { return m_label_msg->text(); } PersonWidget_o::PersonWidget_o(QWidget *parent) : DetectResultWidget(parent), isShowingResultMsg(false) { qDebug() << "PersonWidget()"; if(UiConfig::GetInstance()->isRkDevice()){ m_label_msg->setAlignment(Qt::AlignCenter); m_label_msg->setFixedSize(static_cast(DETECT_RESULT_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()] * 0.98), 64);//static_cast(DETECT_RESULT_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()] * 0.5) >> 2 << 2 ); } } void PersonWidget_o::setPersonMsg(RecoUiTextCfg::enTextType type, const QString& msg, const BG_COLOR_E color, const bool isResultMsg) { //need to adjust font size int fontSize = 0; if(UiConfig::SUPPORT_LANGUAGE_QUANTITY > UiConfig::GetInstance()->getLanguageType()){ fontSize = UiConfig::GetInstance()->recoUiFontSize(type) ? UiConfig::GetInstance()->recoUiFontSize(type) : static_cast(UiConfig::PERSON_MSG_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()][UiConfig::GetInstance()->getLanguageType()] * UiConfig::GetInstance()->recoUiTextCfgFontSize(type)); } showMsg(msg, fontSize, color); //QCoreApplication::processEvents(); isShowingResultMsg = isResultMsg; if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } } bool PersonWidget_o::allowToShow() { return (!isHidden() && isShowingResultMsg); } MaskWidget::MaskWidget(QWidget *parent) : QWidget(parent), m_lastMaskOk(true) { qDebug() << "MaskWidget()"; m_wgts = new QStackedWidget(this); m_wgts->setFixedSize(DetectResultWidget::DETECT_RESULT_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()], DetectResultWidget::DETECT_RESULT_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]); MaskWidget_o* w = new MaskWidget_o(this); w->setMaskMsg(true, "口罩检测通过"); m_wgts->addWidget(w); w = new MaskWidget_o(this); w->setMaskMsg(false, "未佩戴口罩"); m_wgts->addWidget(w); m_wgts->addWidget(new QLabel(this)); QVBoxLayout* vlay = new QVBoxLayout(); vlay->addWidget(m_wgts); vlay->setMargin(0); setLayout(vlay); show(); } void MaskWidget::setMaskMsg(bool maskOk, const QString& msg) { MaskWidget_o* w = dynamic_cast(m_wgts->widget(maskOk ? 0 : 1)); if(w && msg != w->curMsg()){ qDebug() << "-----------------------curMsg:" << w->curMsg() << ", set msg:" << msg; w->updateMsg(msg); } m_wgts->setCurrentIndex(maskOk ? 0 : 1); } void MaskWidget::showQRCodeMsg(UiInterfaceForBackstage::QRCode_Msg_E msg) { } void MaskWidget::hideSelf() { m_wgts->setCurrentIndex(2); } PersonWidget::PersonWidget(QWidget *parent) : QWidget(parent), isShowingResultMsg(false) { qDebug() << "MaskWidget()"; m_wgts = new QStackedWidget(this); PersonWidget_o* w = new PersonWidget_o(this); w->setPersonMsg(RecoUiTextCfg::TextFacePass, "111", DetectResultWidget::BG_COLOR_BLUE, false); m_wgts->addWidget(w); w = new PersonWidget_o(this); w->setPersonMsg(RecoUiTextCfg::TextAuthFailed, "222", DetectResultWidget::BG_COLOR_RED, false); m_wgts->addWidget(w); m_wgts->addWidget(new QLabel(this)); QVBoxLayout* vlay = new QVBoxLayout(); vlay->addWidget(m_wgts); setLayout(vlay); m_wgts->setFixedSize(DetectResultWidget::DETECT_RESULT_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()], DetectResultWidget::DETECT_RESULT_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]); } void PersonWidget::setPersonMsg(RecoUiTextCfg::enTextType type, const QString& msg, const BG_COLOR_E color, const bool isResultMsg) { if(msg.isEmpty()){ m_wgts->setCurrentIndex(2); return; } if(BG_COLOR_BLUE == color){ m_wgts->setCurrentIndex(0); PersonWidget_o* w = dynamic_cast(m_wgts->widget(0)); if(w){ w->updateMsg(msg); } }else if(BG_COLOR_TRAN == color){ m_wgts->setCurrentIndex(2); }else{ m_wgts->setCurrentIndex(1); PersonWidget_o* w = dynamic_cast(m_wgts->widget(1)); if(w){ w->updateMsg(msg); } } isShowingResultMsg = isResultMsg; if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } QCoreApplication::processEvents(); } bool PersonWidget::allowToShow() { return (!isHidden() && isShowingResultMsg); } #endif recoUiRecognize::recoUiRecognize(bool isNightMode, bool hasPwdBtn, bool hasCallBtn, QWidget *parent) : PageAcceptMouseAndTouch(parent), m_clickCount(0), m_currentBackColor(MSG_BG_COLOR_BOM_NULL), m_tempRefresh(-1), m_maskRefresh(-1), m_personRefresh(-1), m_NotiMsgRefresh(-1), m_msgShowed(false),m_faceAivaliable(false), m_showGreenColor(0), m_showRedColor(0), runScanLine(false), timerTimeoutOperation(0), m_widget_progress(nullptr) { qDebug() << "recoUiRecognize()"; //setAttribute(Qt::WA_AcceptTouchEvents); //installEventFilter(this);//screen click event QString backImg = BG_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]; int msg_widget_height = MSG_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]; m_label_back = new QLabel(this); m_label_back->setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); if(!UiConfig::GetInstance()->isFuncNotSupport(FuncCardReaderUnderScreen)){ m_wgtCardUnderScreen = new QWidget(this); m_wgtCardUnderScreen->setAutoFillBackground(true); m_wgtCardUnderScreen->setFixedSize(SWIP_CARD_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()], SWIP_CARD_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]); m_wgtCardUnderScreen->move((UiConfig::GetInstance()->getUiWidth() - SWIP_CARD_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2, static_cast(UiConfig::GetInstance()->getUiHeight() * 0.73)); } else{ m_wgtCardUnderScreen = nullptr; } slotShowRecoUiMask(isNightMode ? 3 : 1); //for show below person wgt int tmprWidgetHeight = TmprWidget::TMPR_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]; m_widget_tmpr = new TmprWidget(this); m_widget_tmpr->setFixedSize(UiConfig::GetInstance()->getUiWidth(), tmprWidgetHeight); //m_widget_tmpr->hide(); m_widget_tmpr->move(0, UiConfig::GetInstance()->getUiHeight()); const int maskWidgetWidth = DetectResultWidget::DETECT_RESULT_WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()]; const int maskWgtx = (UiConfig::GetInstance()->getUiWidth() - maskWidgetWidth) / 2; const int maskWgty = static_cast(UiConfig::GetInstance()->getUiHeight() * 0.1); m_widget_mask = new MaskWidget(this); m_widget_mask->move(maskWgtx, maskWgty); #if 0 m_widget_mask->hide();//by x 20220322 #endif m_widget_cMsg = new CenterMsgWidget(); //不继承父组件样式 //m_widget_cMsg->move((UiConfig::GetInstance()->getUiWidth() - CenterMsgWidget::WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2, // static_cast(UiConfig::GetInstance()->getUiHeight() * 0.3)); m_widget_cMsg->hide(); m_widget_person = new PersonWidget(this); m_widget_person->setPersonMsg(RecoUiTextCfg::TextFacePass, recoUiTextCfg(RecoUiTextCfg::TextFacePass), PersonWidget::BG_COLOR_BLUE, false);//tr("请刷脸通行") //const int m_widget_msg_height = 100; m_widget_msg = new MsgWidget(1, 1, Qt::white, this); m_widget_msg->setFixedSize(UiConfig::GetInstance()->getUiWidth(), msg_widget_height); //m_widget_msg->move(0, UiConfig::SCREEN_HIGHT - m_widget_msg_height); _moveScanner = new QLabel(this); _moveScanner->setAutoFillBackground(true); _moveScanner->setPixmap(SCANLINE_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]); _moveScanner->setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight() / 25); _moveScanner->hide(); #if 0 _ScanCurorAnimation = new QPropertyAnimation(_moveScanner, "geometry"); _ScanCurorAnimation->setDuration(SCAN_LINE_RUN_TIME); _ScanCurorAnimation->setStartValue(QRect(0, -SCAN_LINE_HEIGHT, _moveScanner->width(), _moveScanner->height())); //从顶端平滑出现 _ScanCurorAnimation->setEndValue(QRect(0, UiConfig::GetInstance()->getUiHeight() - SCAN_LINE_HEIGHT, _moveScanner->width(), _moveScanner->height())); //_ScanCurorAnimation->setLoopCount(-1); //一直循环 //_ScanCurorAnimation->start(); #endif _pShowResTimer = new QTimer(this); connect(_pShowResTimer, SIGNAL(timeout()), this, SLOT(handleRecoResShowTime())); //_timerId = startTimer(3000);//scaner timer //scan line m_timer_QRCodeScanLine = new QTimer(this); connect(m_timer_QRCodeScanLine, SIGNAL(timeout()), this, SLOT(slotTimerQRCodeScanline())); m_label_QRCodeScanLine = new QLabel(this); m_label_QRCodeScanLine->setAutoFillBackground(true); m_label_QRCodeScanLine->setPixmap(QPixmap(":/res/image/scan-line-small.png")); m_label_QRCodeScanLine->setFixedSize(UiConfig::GetInstance()->getQRCodeAreaWidth(), UiConfig::GetInstance()->getUiHeight() / 40); m_label_QRCodeScanLine->hide(); m_QRCodeAnimation = new QPropertyAnimation(m_label_QRCodeScanLine, "geometry"); m_QRCodeAnimation->setDuration(QRCODE_SCAN_LINE_RUN_TIME); m_QRCodeAnimation->setStartValue(QRect(UiConfig::GetInstance()->getQRCodeAreaCoordinateX(), UiConfig::GetInstance()->getQRCodeAreaCoordinateY(), m_label_QRCodeScanLine->width(), m_label_QRCodeScanLine->height())); //从顶端平滑出现 m_QRCodeAnimation->setEndValue(QRect(UiConfig::GetInstance()->getQRCodeAreaCoordinateX(), UiConfig::GetInstance()->getQRCodeAreaCoordinateY() + UiConfig::GetInstance()->getQRCodeAreaHeight() - m_label_QRCodeScanLine->height(), m_label_QRCodeScanLine->width(), m_label_QRCodeScanLine->height())); m_QRCodeTimer = new QTimer(this); connect(m_QRCodeTimer, SIGNAL(timeout()), this, SLOT(slotQRCodeSwitchToStandbyStatusFromOvertimeStatus())); /* movie = new QMovie("/nfsroot/a038/source/GateFaceHisi/build/4.gif"); m_label_back = new QLabel(this); m_label_back->setFixedSize(600, 1024); m_label_back->setMovie(movie); movie->start(); */ m_btnPwd = new QWidget(this); m_btnPwd->setAutoFillBackground(true); m_btnPwd->setFixedSize(PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()], PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()]); const int pwdBtnX = maskWgtx + maskWidgetWidth + (maskWgtx - PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2; const int pwdBtnY = maskWgty + (DetectResultWidget::DETECT_RESULT_WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()] - PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2; m_btnPwd->move(pwdBtnX, pwdBtnY); QPalette pwdPal(m_btnPwd->palette()); pwdPal.setBrush(QPalette::Background,QBrush(QPixmap(recoUiRecognize::PWD_BTN[UiConfig::GetInstance()->getScreenConfigIndex()]))); m_btnPwd->setPalette(pwdPal); /*QString m_btnPwd = QString("QPushButton{background:url(%1); background-color:transparent;border: none; }" //正常 "QPushButton:hover{background:url(%2); background-color:transparent; }" //滑过 "QPushButton:pressed{background:url(%3); background-color:transparent; }") //按下 .arg(PWD_BTN[UiConfig::GetInstance()->getScreenConfigIndex()]) .arg(PWD_BTN_PRESSED[UiConfig::GetInstance()->getScreenConfigIndex()]) .arg(PWD_BTN_PRESSED[UiConfig::GetInstance()->getScreenConfigIndex()]); m_btnPwd->setStyleSheet(styleSheet); */ if(!hasPwdBtn){ m_btnPwd->hide(); } QPalette dialPal; dialPal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/grey_bg_large.png"))); const int callWgtWidth = 400; const int callWgtHeight = 128; const int callWgtPosY = static_cast(UiConfig::GetInstance()->getUiHeight() * 0.6); const int callWgtDevPosX = static_cast(UiConfig::GetInstance()->getUiWidth() * 0.55); const int callWgtMngCenterPosX = -(callWgtDevPosX + callWgtWidth - UiConfig::GetInstance()->getUiWidth()); QFont ft; m_wgtCallDialDev = new RoundedWidget(this); #if 0 dialPal.setColor(QPalette::WindowText, QColor(18, 165, 127)); #else dialPal.setColor(QPalette::WindowText,Qt::darkGray); m_wgtCallDialDev->setDisabled(true); #endif m_wgtCallDialDev->setPalette(dialPal); m_wgtCallDialDev->setAutoFillBackground(true); m_wgtCallDialDev->setFixedSize(callWgtWidth, callWgtHeight); m_wgtCallDialDev->move(callWgtDevPosX, callWgtPosY); #if 0 m_wgtCallDialDev->setFixedSize(PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()], PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()]); dialPal.setBrush(QPalette::Background,QBrush(QPixmap(recoUiRecognize::CALL_BTN[UiConfig::GetInstance()->getScreenConfigIndex()]))); m_wgtCallDialDev->move(pwdBtnX - PWD_BTN_W_H[UiConfig::GetInstance()->getScreenConfigIndex()] - 20, pwdBtnY); #endif QLabel* labelCallDevIcon = new QLabel(m_wgtCallDialDev); labelCallDevIcon->setPixmap(QPixmap(":/res/image/call1_large.png")); QLabel* labelCallDevText = new QLabel(tr("呼叫设备"), m_wgtCallDialDev); labelCallDevText->setAlignment(Qt::AlignCenter); ft.setPointSize(12); labelCallDevText->setFont(ft); QHBoxLayout* hlayCallDev = new QHBoxLayout(); hlayCallDev->setMargin(30); hlayCallDev->addSpacing(10); hlayCallDev->addWidget(labelCallDevIcon); hlayCallDev->addWidget(labelCallDevText); hlayCallDev->addStretch(); m_wgtCallDialDev->setLayout(hlayCallDev); if(!hasCallBtn){ m_wgtCallDialDev->hide(); } m_wgtCallMngCenter = new RoundedWidget(this); dialPal.setColor(QPalette::WindowText, QColor(18, 150, 219)); m_wgtCallMngCenter->setPalette(dialPal); m_wgtCallMngCenter->setAutoFillBackground(true); m_wgtCallMngCenter->setFixedSize(callWgtWidth, callWgtHeight); m_wgtCallMngCenter->move(callWgtMngCenterPosX, callWgtPosY); QLabel* MngCenter = new QLabel(m_wgtCallMngCenter); MngCenter->setPixmap(QPixmap(":/res/image/customer_service_large.png")); QLabel* labelCallMngCenterText = new QLabel(tr("呼叫管理处"), m_wgtCallMngCenter); labelCallMngCenterText->setFont(ft); labelCallMngCenterText->setAlignment(Qt::AlignCenter); QHBoxLayout* hlayCallMngCenter = new QHBoxLayout(); hlayCallMngCenter->setMargin(30); hlayCallMngCenter->addStretch(); hlayCallMngCenter->addWidget(MngCenter); hlayCallMngCenter->addWidget(labelCallMngCenterText); //hlayCallMngCenter->addStretch(); m_wgtCallMngCenter->setLayout(hlayCallMngCenter); if(!hasCallBtn){ m_wgtCallMngCenter->hide(); } m_resWgt = new FinalResultWidget(this); m_resWgt->move((UiConfig::GetInstance()->getUiWidth() - FinalResultWidget::FINAL_RESULT_WIDGET_W_H[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2, static_cast(UiConfig::GetInstance()->getUiHeight() * 0.65)); m_resWgt->hide(); m_healthCodeAuthstatus = new QLabel("未授权", this); QPalette authPal(m_healthCodeAuthstatus->palette()); authPal.setColor(QPalette::WindowText,Qt::white); m_healthCodeAuthstatus->setPalette(authPal); m_healthCodeAuthstatus->setAlignment(Qt::AlignRight); m_healthCodeAuthstatus->setFixedSize(static_cast(UiConfig::GetInstance()->getUiWidth() * 0.2), static_cast(UiConfig::GetInstance()->getUiHeight() * 0.05)); m_healthCodeAuthstatus->hide(); m_healthCodeAuthstatus->move(static_cast(UiConfig::GetInstance()->getUiWidth() * 0.8), static_cast(UiConfig::GetInstance()->getUiHeight() * 0.9)); m_wgtSceneMsg = new SceneMsgWidget(this); m_wgtSceneMsg->setVisible(false); // BUG B045-182: 防止其他模式刚上电时会看到这个组件 QVBoxLayout* vLayout = new QVBoxLayout(); //vLayout->addWidget(m_widget_tmpr, 1, Qt::AlignTop | Qt::AlignCenter); //温度不加如布局管理器,因为使用move方式控制show 和 hide //vLayout->addWidget(m_widget_mask, 50, Qt::AlignTop | Qt::AlignCenter); //口罩不加到布局管理器,因为温度不一定显示,如果加入,温度不显示时口罩会跳到顶端 #if 1 vLayout->addWidget(m_widget_person, 50, Qt::AlignBottom | Qt::AlignCenter); #else QHBoxLayout* hlayPerWgtPwdBtn = new QHBoxLayout(); hlayPerWgtPwdBtn->addSpacing((UiConfig::GetInstance()->getUiWidth() - m_widget_person->width()) / 2); hlayPerWgtPwdBtn->addWidget(m_widget_mask); hlayPerWgtPwdBtn->addStretch(); hlayPerWgtPwdBtn->addWidget(m_btnPwd, 1, Qt::AlignRight); hlayPerWgtPwdBtn->setContentsMargins(0, 0, UiConfig::GetInstance()->getUiWidth() * 0.03, 0); vLayout->addStretch(50); vLayout->addLayout(hlayPerWgtPwdBtn); #endif vLayout->addWidget(m_widget_msg, 1, Qt::AlignBottom | Qt::AlignCenter); vLayout->setMargin(0); setLayout(vLayout); m_widget_mask->hideSelf(); } recoUiRecognize::~recoUiRecognize() { qDebug() << "~recoUiRecognize()"; if(m_widget_cMsg){ delete m_widget_cMsg; } } bool recoUiRecognize::eventFilter(QObject *watched, QEvent *event) { if( watched == this){ if(event->type() == QEvent::MouseButtonPress){ qDebug() << "MouseButtonPress"; emit signalScreenTouch(); if(multiPressToSettingPage()){ QPoint pos; pos.setX(UiConfig::GetInstance()->getUiWidth() / 2); pos.setY(UiConfig::GetInstance()->getUiHeight() / 2); QCursor::setPos(pos); } } else{ return false; } } else{ return QWidget::eventFilter(watched, event); } return false; } void recoUiRecognize::setBackstageUiinterface(BackstageInterfaceForUi *interface) { m_backstageIf = interface; #if VERSION_XIAMEN_GONGAN == 0 if(m_backstageIf){ if(m_backstageIf->getQRCodeSwitch()){ m_widget_person->hide(); m_widget_mask->showQRCodeMsg(UiInterfaceForBackstage::QRCode_Msg_Standby); setBackgroundColor(MSG_BG_COLOR_QRCODE); runQRCodeScanLine(); } char buf[64] = {'\0'}; m_backstageIf->getDeviceId(buf, sizeof(buf)); QString devId{buf}; memset(buf, 0, sizeof(buf)); m_backstageIf->getAppVersion(buf, sizeof(buf)); QString ver{buf}; m_widget_msg->showDevInfo(devId, ver); m_widget_msg->showRecoUiDevIdAndVer(m_backstageIf->getShowIdAndVerSw()); m_wgtSceneMsg->setType(m_backstageIf->getTicketModePeopleCountType()); setTicketCheckCount(-1, m_backstageIf->getTicketCheckCountToday()); } #endif } void recoUiRecognize::timerEvent(QTimerEvent *event) { #if 0 if(_timerId == event->timerId()) { qDebug() << "timerEvent()"; _ScanCurorAnimation->start(); } #endif } void recoUiRecognize::slotsNoSuccessPage(const int nPage) { //qDebug() << "slotsNoSuccessPage"; closeRecoResTime(); if(nPage >= GLOBAL_RECO_END_NO && nPage <= GLOBAL_RECO_SHOW_QRCODE) { showRecoFail((GLOBAL_RECO_STATE)nPage); } else if(GLOBAL_RECO_ID_FAILED == nPage) { showRecoIDFail(); } else if(GLOBAL_RECO_IN == nPage) { //qDebug() << "slotsNoSuccessPageshowRecoNoScanner"; //if(!m_widget_tmpr->isHidden()){ if(0 == m_widget_tmpr->pos().y()){ //qDebug() << "cancle scanner, hide temp window"; //m_widget_tmpr->hide(); //没有人脸,转到人脸识别系统显示,此时隐藏温度提示 m_widget_tmpr->move(0, UiConfig::GetInstance()->getUiHeight()); m_widget_msg->setMsgBtm(tr("")); } } else if(GLOBAL_RECO_CHECK == nPage) { showRetry(); } else if(GLOBAL_RECO_MASK_REQ == nPage) { showNoMaskWarn(); //请戴口罩 } else if(GLOBAL_RECO_MASK_OK == nPage) { showMaskOk(); } else if(GLOBAL_RECO_TAKE_OFF_MASK == nPage) { showMaskWarn(); } else if(GLOBAL_RECO_NO_ENTRY == nPage) { showNoEntry(); } else if(GLOBAL_RECO_CLEAR_NO_ENTRY == nPage) { clearNoEntry(); } else if(GLOBAL_RECO_CLOSE_SCANLINE == nPage) { //qDebug() << "GLOBAL_RECO_CLOSE_SCANLINE == nPage"; setScannerState(SCAN_LINE_SWITCH_OFF); #if 0 //如果取消扫描线了,当前定时器在运行,立即调用槽函数 if(_pShowResTimer->isActive()) { _pShowResTimer->stop(); _pShowResTimer->start(1); } #endif } else if(GLOBAL_RECO_SHOW_QRCODE_RECO == nPage) { //显示识别二维码界面 //showQRCodeReco(); } else if(GLOBAL_RECO_SHOW_FACE_RECO == nPage) { showFaceReco(); } else { //NOP } } //返回值:0 扫描线状态有变化 //返回值:-1 扫描线状态没有变化 int recoUiRecognize::setScannerState(const SCAN_LINE_SWITCH_E sw) { int ret = -1; //if(sw != m_currentScanLine) { if(SCAN_LINE_SWITCH_OFF == sw){ //qDebug() << "runScanLine = false"; _moveScanner->hide(); if(true == runScanLine){ runScanLine = false; ret = 0; } } else if(SCAN_LINE_SWITCH_BLUE == sw){ m_widget_person->hide(); //画扫描线时关闭人员信息 if(false == runScanLine){ runScanLine = true; _pShowResTimer->start(SCAN_LINE_RUN_TIME * 30 / 1000); int startPos = static_cast(UiConfig::GetInstance()->getUiHeight() * SCAN_LINE_START_POS_SCALE); _moveScanner->move(0, startPos); m_scanLinePos = startPos; ret = 0; } #if 0 if(false == runScanLine){ _ScanCurorAnimation->start(); _pShowResTimer->start(SCAN_LINE_RUN_TIME); runScanLine = true; _moveScanner->show(); timerTimeoutOperation = 0; //qDebug() << "runScanLine = true"; } #endif } else if(SCAN_LINE_SWITCH_RED == sw){ m_widget_person->hide(); //画扫描线时关闭人员信息 #if 0 if(false == runScanLine){ _pShowResTimer->start(SCAN_LINE_TIMER); _ScanCurorAnimation->start(); _moveScanner->show(); runScanLine = true; timerTimeoutOperation = 0; } #endif } m_currentScanLine = sw; } return ret; } void recoUiRecognize::setBackgroundColor(const MSG_BG_COLOR_E index) { QPixmap pm; switch (index) { case MSG_BG_COLOR_BOM_BLUE: m_widget_tmpr->move(0, UiConfig::GetInstance()->getUiHeight()); m_widget_msg->setBackgroundColor(WIDGET_BG_COLOR_BLUE); break; case MSG_BG_COLOR_BOM_GREEN: break; case MSG_BG_COLOR_BOM_TOP_GREEN: m_widget_tmpr->setBackgroundColor(WIDGET_BG_COLOR_GREEN); m_widget_msg->setBackgroundColor(WIDGET_BG_COLOR_GREEN); break; case MSG_BG_COLOR_BOM_RED: break; case MSG_BG_COLOR_BOM_TOP_RED: m_widget_tmpr->setBackgroundColor(WIDGET_BG_COLOR_RED); m_widget_msg->setBackgroundColor(WIDGET_BG_COLOR_RED); break; case MSG_BG_COLOR_QRCODE: //m_stackwig_back->setCurrentIndex(3); break; default: break; } m_currentBackColor = index; } void recoUiRecognize::showRecoScanner() { //qDebug() << "showRecoScanner"; if(0 == setScannerState(SCAN_LINE_SWITCH_BLUE)){ //m_widget_tmpr->hide(); m_widget_tmpr->move(0, UiConfig::GetInstance()->getUiHeight()); #if 0 m_widget_mask->hide();//by x 20220322 #else m_widget_mask->hideSelf(); #endif //qDebug() << "setBackgroundColor(MSG_BG_COLOR_BOM_BLUE)"; setBackgroundColor(MSG_BG_COLOR_BOM_BLUE); //最终结果区域情况,跟扫描线互斥 m_widget_msg->setMsgBtm(tr("")); } } void recoUiRecognize::showRetry() { //qDebug() << "showRetry"; //m_widget_msg->setMsgTop(tr("请靠近重试")); // m_widget_msg->setMsgBtm(tr("")); //setScannerState(SCAN_LINE_SWITCH_BLUE);//xxxxxxxxxxxxx // setBackgroundColor(MSG_BG_COLOR_BOM_BLUE); } void recoUiRecognize::showNoMaskWarn() //请戴口罩 { //if(! || !m_widget_mask->isHidden()){ //不阻塞扫描线 m_maskRefresh = 2; if(_moveScanner->isHidden()){ //阻塞扫描线 showMaskMsg(); } } void recoUiRecognize::showMaskWarn() { m_maskRefresh = 3; if(_moveScanner->isHidden()){ //阻塞扫描线 showMaskMsg(); } } void recoUiRecognize::showMaskOk() //口罩检测成功 { //qDebug() << "showMaskOk"; //如果当前正在画扫描线,显示内容,没有画扫描线说明已经没有人员在画面中了,下层会出现无人在画面的调用后再调显示人员信息,导致信息残留在画面一直不消失 //如果当前口罩在显示,那可以刷新口罩内容,例如人脸在画面中一直脱戴口罩的情况,但是没有画扫描线了,此时还能刷新口罩结果 //if(! || !m_widget_mask->isHidden()){ //不阻塞扫描线 m_maskRefresh = 1; if(_moveScanner->isHidden()){ //阻塞扫描线 showMaskMsg(); } } void recoUiRecognize::showNoEntry() { m_NoEntryRefresh = 1; if(_moveScanner->isHidden()){ showNoEntryMsg(); } } void recoUiRecognize::clearNoEntry() { m_NoEntryRefresh = 2; if(_moveScanner->isHidden()){ showNoEntryMsg(); } } int recoUiRecognize::setCamVideoWind() { return m_backstageIf->recoUiTypeSwitch(0, 0, UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); } void recoUiRecognize::setStyle(int style) { if(4 == style){ m_bgSceneIdle = QPixmap(":/res/image/reco_ui_scene_bg_medium.jpg"); m_label_back->setPixmap(m_bgSceneIdle); if(m_wgtCardUnderScreen){m_wgtCardUnderScreen->hide();} m_widget_msg->setStyle(0, 0, Qt::black); m_wgtSceneMsg->show(); }else{ m_label_back->setPixmap(m_bgPm); if(m_wgtCardUnderScreen){m_wgtCardUnderScreen->show();} m_widget_msg->setStyle(1, 1, Qt::white); m_wgtSceneMsg->hide(); } m_widget_person->setPersonMsg(RecoUiTextCfg::TextFacePass, recoUiTextCfg(RecoUiTextCfg::TextFacePass), PersonWidget::BG_COLOR_BLUE, false); } void recoUiRecognize::setSceneUiReco(bool toReco) { m_label_back->setPixmap(toReco ? m_bgPm : m_bgSceneIdle); } void recoUiRecognize::setTicketCheckCount(int source, int count) { m_wgtSceneMsg->setPersonNum(source, count); } void recoUiRecognize::setScenePersonCountType(int type) { m_wgtSceneMsg->setType(type); } void recoUiRecognize::slotShowOrHideFaceFrame(bool show) { //设备连接测温模块启动后移除测温,web上设置人形框 if(UiConfig::GetInstance()->isFaceFrameShowByTempExist()){ UiConfig::GetInstance()->showFaceFrameByTempExist(false); } m_showFaceFrameByUser = show; if(!m_isNightMode){ slotShowRecoUiMask(1); } } void recoUiRecognize::slotShowFinalResult(bool pass) { if(UiConfig::GetInstance()->isRecoUiStyleStandard()){ m_resWgt->showResult(pass); } } void recoUiRecognize::slotShowHealthCodeAuthStatus(int status) { switch(status){ case 0:m_healthCodeAuthstatus->hide();break; case 1:m_healthCodeAuthstatus->show();break; case 2:m_healthCodeAuthstatus->setText("未授权");break; case 3:m_healthCodeAuthstatus->setText("已授权");break; case 4:m_healthCodeAuthstatus->setText("授权不可用");break; default:break; } } void recoUiRecognize::slotShowCallBtn(bool show) { m_wgtCallDialDev->setVisible(show); m_wgtCallMngCenter->setVisible(show); } void recoUiRecognize::slotShowRecoUiDevIdAndVer(bool show) { m_widget_msg->showRecoUiDevIdAndVer(show); } void recoUiRecognize::showRecoFail(GLOBAL_RECO_STATE failType) { m_personRefresh = failType; if(_moveScanner->isHidden()){ // m_widget_person->allowToShow() showPersonWidgetMsg(); } } void recoUiRecognize::showRecoIDFail() { m_personRefresh = GLOBAL_RECO_ID_FAILED; if(_moveScanner->isHidden()){ showPersonWidgetMsg(); } } void recoUiRecognize::closeRecoResTime() { //if(_pShowResTimer->isActive()) { // _pShowResTimer->stop(); } } void recoUiRecognize::slotsSuccessPage(const int nPage, const QString& name) { if( GLOBAL_RECO_END_OK != nPage) { return ; } closeRecoResTime(); m_personRefresh = GLOBAL_RECO_END_OK; m_name = name; if(_moveScanner->isHidden()){ showPersonWidgetMsg(); } } void recoUiRecognize::slotsDrawScanner(const int nPage, const bool faceAvailable) { //qDebug()<<"slotsDrawScanner():" << nPage <<" face: " << faceAvailable; if(!faceAvailable) { //qDebug() << "(sum <= 0) && (nullptr == pInfo showRecoNoScanner()"; m_currentBackColor = MSG_BG_COLOR_BOM_NULL; setScannerState(SCAN_LINE_SWITCH_OFF); //if(!m_widget_tmpr->isHidden()) if(0 == m_widget_tmpr->pos().y()) { //m_widget_tmpr->hide(); //没有人脸,转到人脸识别系统显示,此时隐藏温度提示 m_widget_tmpr->move(0, UiConfig::GetInstance()->getUiHeight()); } #if 0 if(!m_widget_mask->isHidden()){ m_widget_mask->hide();//by x 20220322 } #else m_widget_mask->hideSelf(); #endif setBackgroundColor(MSG_BG_COLOR_BOM_BLUE); m_widget_person->setPersonMsg(RecoUiTextCfg::TextFacePass, recoUiTextCfg(RecoUiTextCfg::TextFacePass), PersonWidget::BG_COLOR_BLUE, false);//tr("请刷脸通行") m_widget_msg->setMsgBtm(tr("")); if(UiConfig::GetInstance()->isRecoUiStyleStandard()){ m_resWgt->hide(); }else if(UiConfig::GetInstance()->isRecoUiStyleScene()){ m_label_back->setPixmap(m_bgSceneIdle); } m_msgShowed = false; //qDebug() << "m_faceAivaliable set false"; m_faceAivaliable = false; m_tempRefresh = -1; m_maskRefresh = -1; m_personRefresh = -1; m_NotiMsgRefresh = -1; m_NoEntryRefresh = 0; m_showGreenColor = 0; m_showRedColor = 0; return ; } m_faceAivaliable = true; if(GLOBAL_RECO_IN_SCANNER != nPage) { return ; } closeRecoResTime(); showRecoScanner(); } void recoUiRecognize::slotShowNormalTemp(const float temp, const bool isC) { m_widget_tmpr->showNormalTemp(recoUiTextCfg(RecoUiTextCfg::TextTemp), temp, isC); #if 0 if(true == runScanLine){ m_tempRefresh = 1; } #endif m_tempRefresh = 1; if(_moveScanner->isHidden()){ showTempMsg(); } } void recoUiRecognize::slotShowAbnormalTemp(const float temp, const bool isHigh, const bool isC) { m_widget_tmpr->showAbnormalTemp(recoUiTextCfg(RecoUiTextCfg::TextTemp), temp, isHigh, isC); #if 0 if(true == runScanLine){ if(isHigh){ m_tempRefresh = 2; } else { m_tempRefresh = 3; } } #endif if(isHigh){ m_tempRefresh = 2; } else { m_tempRefresh = 3; } if(_moveScanner->isHidden()){ showTempMsg(); } } void recoUiRecognize::slotsInteractionChange(const INTERACION_OPTION &interaction, int nSelectRes) { if(OPTION_LOGO == interaction){ QString logo; if(0 == nSelectRes){ logo = LOGO_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]; m_widget_msg->setLogo(logo); } else if(1 == nSelectRes){ logo = ""; m_widget_msg->setLogo(logo); } else if(2 == nSelectRes){ //自定义logo if(m_backstageIf){ char logoPath[256] = {'\0'}; if(0 == m_backstageIf->getCustomLogo(logoPath, sizeof(logoPath))){ logo = QString(logoPath); m_widget_msg->setLogo(logo, true); } } } } } void recoUiRecognize::slotUpdateLogo(const int option) { slotsInteractionChange(OPTION_LOGO, option); } void recoUiRecognize::handleRecoResShowTime() { if(m_scanLineInterval > 0 && true == runScanLine){ m_scanLineInterval -= (SCAN_LINE_RUN_TIME * 30 / 1000); return; } int startPos = static_cast(UiConfig::GetInstance()->getUiHeight() * SCAN_LINE_START_POS_SCALE); int distance = static_cast(UiConfig::GetInstance()->getUiHeight() * SCAN_LINE_RUN_DISTANCE_SCALE); m_scanLinePos += (distance * 1000 / 30 / SCAN_LINE_RUN_TIME); //1000ms 30帧 if(m_scanLinePos >= (startPos + distance)){ m_scanLinePos = startPos; m_scanLineInterval = SCAN_LINE_LOOP_INTERVAL; _moveScanner->hide(); return; } _moveScanner->hide(); if(true == runScanLine){ _moveScanner->move(0, m_scanLinePos); } do{ #if 0 if(showTempMsg()){ break; } if(showMaskMsg()){ break; } if(showPersonWidgetMsg()){ break; } if(showNoEntryMsg()){ break; } if(showNotiMsg()){ break; } #else if(showPersonWidgetMsg()){ break; } if(showMaskMsg()){ break; } if(showTempMsg()){ break; } if(showNoEntryMsg()){ break; } if(showNotiMsg()){ break; } #endif }while(0); if(false == runScanLine && 0 == m_showGreenColor && 0 == m_showRedColor){ _pShowResTimer->stop(); _moveScanner->hide(); m_scanLineInterval = 0; } else { if(true == runScanLine) _moveScanner->show(); } } void recoUiRecognize::slotUpdatePlatformConnectionStatus(const int status) { m_widget_msg->setNetworkStatus(status); } void recoUiRecognize::slotsResetRecoUi() { //人脸识别 / 二维码 二选一 #if 0 if(m_backstageIf){ if(m_backstageIf->getQRCodeSwitch()){ //二维码扫描模式不复位到人脸识别界面,否则会出现人脸框叠加二维码扫描框 } else { slotsDrawScanner(0, nullptr, 0); } } #endif slotsDrawScanner(0, false); } void recoUiRecognize::slotShowQRCodeMsg(const int msg) { m_widget_mask->showQRCodeMsg(static_cast(msg)); if(UiInterfaceForBackstage::QRCode_Msg_Error == static_cast(msg)){ m_QRCodeTimer->start(QRCODE_FAILED_MSG_DISPLAY_TIME); } else { m_QRCodeTimer->stop(); } } void recoUiRecognize::slotChangeRecoUiMode() { if(m_backstageIf->getQRCodeSwitch()){ //qDebug() << "recoUiRecognize::slotChangeRecoUiMode QRCode mode!"; showQRCodeReco(); } else { //qDebug() << "recoUiRecognize::slotChangeRecoUiMode face reco mode!"; showFaceReco(); } } void recoUiRecognize::slotTimerQRCodeScanline() { runQRCodeScanLine(); } void recoUiRecognize::runQRCodeScanLine() { if(m_label_QRCodeScanLine->isHidden()) m_label_QRCodeScanLine->show(); m_QRCodeAnimation->start(); m_timer_QRCodeScanLine->start(QRCODE_SCAN_LINE_RUN_INTERVAL_TIME); } void recoUiRecognize::showQRCodeReco() { //停止人脸识别界面一切活动 slotsResetRecoUi(); m_widget_tmpr->hide(); m_widget_person->hide(); m_widget_msg->setMsgBtm(tr("")); //_pShowResTimer->stop(); _moveScanner->hide(); _ScanCurorAnimation->stop(); //切换到二维码识别界面 setBackgroundColor(MSG_BG_COLOR_QRCODE); m_widget_mask->showQRCodeMsg(UiInterfaceForBackstage::QRCode_Msg_Standby); runQRCodeScanLine(); } void recoUiRecognize::showFaceReco() { m_label_QRCodeScanLine->hide(); m_QRCodeAnimation->stop(); m_timer_QRCodeScanLine->stop(); #if 0 m_widget_mask->hide(); #else m_widget_mask->hideSelf(); #endif slotsResetRecoUi(); } bool recoUiRecognize::showPersonWidgetMsg() { bool ret = false; if(m_personRefresh >= 0) { switch(m_personRefresh) { case GLOBAL_RECO_END_OK: m_widget_person->setPersonMsg(RecoUiTextCfg::TextAllowPass, recoUiTextCfg(RecoUiTextCfg::TextAllowPass), PersonWidget::BG_COLOR_BLUE, true);//m_name break; case GLOBAL_RECO_END_NO: m_widget_person->setPersonMsg(RecoUiTextCfg::TextAuthFailed, recoUiTextCfg(RecoUiTextCfg::TextAuthFailed), PersonWidget::BG_COLOR_RED, true);//tr("未经许可人员") break; case GLOBAL_RECO_FACE_CARD_NOT_MATCH: m_widget_person->setPersonMsg(RecoUiTextCfg::TextUseOwnCertifi, recoUiTextCfg(RecoUiTextCfg::TextUseOwnCertifi), PersonWidget::BG_COLOR_RED, true);//tr("请用本人证件") break; case GLOBAL_RECO_SWIPE_CARD: m_widget_person->setPersonMsg(RecoUiTextCfg::TextTapCard, recoUiTextCfg(RecoUiTextCfg::TextTapCard), PersonWidget::BG_COLOR_RED, true);//tr("请刷卡") break; case GLOBAL_RECO_FACE_CAMERA: m_widget_person->setPersonMsg(RecoUiTextCfg::TextFaceCam, recoUiTextCfg(RecoUiTextCfg::TextFaceCam), PersonWidget::BG_COLOR_RED, true);//tr("请正视镜头") break; case GLOBAL_RECO_NOT_PASS_TIME: m_widget_person->setPersonMsg(RecoUiTextCfg::TextNoEntryTime, recoUiTextCfg(RecoUiTextCfg::TextNoEntryTime), PersonWidget::BG_COLOR_RED, true);//tr("禁止通行时段") break; case GLOBAL_RECO_ID_FAILED: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("身份证核验失败"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_NEED_RECHECK: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("身份核验中"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_PLATFORM_DISCONNECTED: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("服务器连接失败"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SWIPE_CARD_HERE: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请在此处刷卡"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_HIDE_NAME_AREA: #if 0 m_widget_person->hide(); #else m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, "", PersonWidget::BG_COLOR_TRAN, true); #endif break; case GLOBAL_RECO_NOT_LIVING: if(!UiConfig::GetInstance()->isRecoUiStyleScene()){ m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请调整人脸角度"), PersonWidget::BG_COLOR_RED, true); } break; case GLOBAL_RECO_SHOW_QRCODE: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请刷二维码"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_UNAUTH_CARD: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("未授权卡片"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_PLS_TAP_ID_CARD: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请刷身份证"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_PLS_CHECK_STATIC: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请测试静电"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_STATIC_ABNORMAL: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("静电测试异常"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SWIPE_ID_OR_HEALEH_CODE: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请刷身份证或扫码"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_CHECKING: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("健康码查询中"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_CHECK_FAILED: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("查询失败"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_QRCODE_OVERDUE: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("二维码已过期"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_NETWORK_ERROR: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("网络异常"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_PLATFORM_ERROR: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("服务器异常"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_REQUEST_OVERTIME: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("服务器请求超时"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SWIPE_TRIP_CARD: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请刷行程卡"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SHOW_HEALTH_CODE: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请扫健康码"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_RESWIPE_TRIP_CARD: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请重刷行程卡"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SWIPE_ID_AND_TRIP_CARD: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("刷身份证扫行程卡"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_TRIP_CARD_CHECKING: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("行程卡查询中"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SCAN_YUEJUMA: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请扫粤居码"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_SCAN_YUEJUMA_OR_SWIPE_ID: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("请刷粤居码/身份证"), PersonWidget::BG_COLOR_RED, true); break; case GLOBAL_RECO_PATROL_OK: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("巡更成功"), PersonWidget::BG_COLOR_BLUE, true); break; case GLOBAL_RECO_PATROL_NOT_RIGHT_TIME: m_widget_person->setPersonMsg(RecoUiTextCfg::TextOtherRecoResult, tr("非巡更时段"), PersonWidget::BG_COLOR_RED, true); break; default: break; } ret = true; } if(ret){ m_personRefresh = -1; m_msgShowed = true; ret = runScanLine; } return ret; } bool recoUiRecognize::showNoEntryMsg() { bool ret = false; if(1 == m_NoEntryRefresh){ m_widget_msg->setMsgBtm(recoUiTextCfg(RecoUiTextCfg::TextNoEntry), MSG_BG_COLOR_BOM_TOP_GREEN == m_currentBackColor);//tr("禁止通行") ret = true; } else if(2 == m_NoEntryRefresh){ m_widget_msg->setMsgBtm(tr("")); ret = true; } if(ret){ m_NoEntryRefresh = 0; m_msgShowed = true; ret = runScanLine; } return ret; } bool recoUiRecognize::showNotiMsg() { bool ret = false; if(GLOBAL_RECO_SHOW_NOTI_MSG == m_NotiMsgRefresh){ m_widget_msg->setMsgNoti(m_notimsg, m_notiMsgColor); ret = true; } if(ret){ m_NotiMsgRefresh = -1; m_msgShowed = true; ret = runScanLine; } return ret; } bool recoUiRecognize::showTempMsg() { bool ret = false; if(1 == m_tempRefresh || 3 == m_tempRefresh){ m_showRedColor = 0; if(0 == m_showGreenColor){ m_widget_tmpr->setBackgroundColor(WIDGET_BG_COLOR_GREEN); m_showGreenColor = 1; } else if(1 == m_showGreenColor){ m_widget_msg->setBackgroundColor(WIDGET_BG_COLOR_GREEN); m_showGreenColor = 0; m_tempRefresh = -1; } else { m_showGreenColor = 0; } ret = true; } else if(2 == m_tempRefresh){ m_showGreenColor = 0; if(0 == m_showRedColor){ m_widget_tmpr->setBackgroundColor(WIDGET_BG_COLOR_RED); m_showRedColor = 1; } else if(1 == m_showRedColor){ m_widget_msg->setBackgroundColor(WIDGET_BG_COLOR_RED); m_showRedColor = 0; m_tempRefresh = -1; } else { m_showRedColor = 0; } ret = true; } if(ret){ m_widget_tmpr->move(0, 0); m_msgShowed = true; ret = runScanLine; } return ret; } bool recoUiRecognize::showMaskMsg() { bool ret = false; if(1 == m_maskRefresh){ m_widget_mask->setMaskMsg(true, recoUiTextCfg(RecoUiTextCfg::TextMaskOk)); ret = true; }else if(2 == m_maskRefresh){ m_widget_mask->setMaskMsg(false, recoUiTextCfg(RecoUiTextCfg::TextNOMask)); ret = true; }else if(3 == m_maskRefresh){ m_widget_mask->setMaskMsg(false, tr("请摘下口罩")); ret = true; } if(ret){ m_maskRefresh = -1; m_msgShowed = true; ret = runScanLine; } return ret; } bool recoUiRecognize::event(QEvent *event) { switch( event->type() ) { case QEvent::TouchBegin: { do{ qDebug() << "recoUiRecognize touch begin"; if(UiConfig::GetInstance()->getHardwareTesting()){ break; } QList touch_list = static_cast(event)->touchPoints(); QPoint mousePos = mapFromGlobal(QPoint(touch_list.at(0).pos().x(),touch_list.at(0).pos().y())); if(!m_btnPwd->isHidden() && m_btnPwd->geometry().contains(mousePos)){ //qDebug() << touch_list.at(0).pos().x(); //qDebug() << touch_list.at(0).pos().y(); //QMouseEvent mouseEvent(QEvent::MouseButtonPress,QPointF(touch_list.at(0).pos().x(),touch_list.at(0).pos().y()),Qt::LeftButton,Qt::LeftButton,Qt::NoModifier); //QCoreApplication::sendEvent(this,&mouseEvent); m_backstageIf->playAudio(audioInputPwd); slotPwdBtnClicked(); break; } #if 0 // 设备对讲还有缺陷,暂不支持 if(!m_wgtCallDialDev->isHidden() && m_wgtCallDialDev->geometry().contains(mousePos)){ emit callDialButtonClicked(); break; } #endif if(!m_wgtCallMngCenter->isHidden() && m_wgtCallMngCenter->geometry().contains(mousePos)){ emit callPlatformButtonClicked("管理处"); break; } isTouched = true; _preTime = QTime::currentTime(); longPressToSettingPage(); emit signalScreenTouch(); }while(0); event->accept(); return true; } case QEvent::TouchUpdate: { //QTouchEvent* touch = static_cast(event); //if(touch->touchPointStates() & Qt::TouchPointPressed){ //判断是否有触摸点处于TouchPointPressed或TouchPointMoved或TouchPointStationary或TouchPointReleased //} event->accept(); return true; } case QEvent::TouchEnd: { //QTouchEvent* touch = static_cast(event); qDebug() << "recoUiRecognize touch end!"; isTouched = false; _preTime = QTime::currentTime(); event->accept(); return true; } default: break; } return QWidget::event(event); } bool recoUiRecognize::multiPressToSettingPage() { bool bRet = false; QTime time = QTime::currentTime(); if(0 != m_clickCount) { if( _preTime.msecsTo(time) > clickGrap) { //qDebug() << "_preTime.msecsTo(time) > clickGrap()"; m_clickCount = 0; } } //qDebug()<<"m_clickCount = "<wakeUpFromScreenSaverOrScreenOff(); } m_clickCount++; _preTime = time; if(m_clickCount == clickNum) { m_clickCount = 0; if(!UiConfig::GetInstance()->isTpAvailable()){ emit signalChangePage(); } bRet = true; } return bRet; } void recoUiRecognize::slotLongPressShowSetting() { //qDebug() << "isTouched:" << isTouched << ", pre time:" << _preTime.msecsTo(QTime::currentTime()) << ", need time:" << UiConfig::TOUCH_TIME_TO_SETTING - 200; if(isTouched && _preTime.msecsTo(QTime::currentTime()) > (UiConfig::TOUCH_TIME_TO_SETTING - 200)){ qDebug() << "into setting..."; emit signalChangePage(); } } bool recoUiRecognize::longPressToSettingPage() { //qDebug() << "longPressToSettingPage"; if(m_backstageIf) m_backstageIf->wakeUpFromScreenSaverOrScreenOff(); QTimer::singleShot(UiConfig::TOUCH_TIME_TO_SETTING, this, SLOT(slotLongPressShowSetting())); return true; } void recoUiRecognize::slotCenterMsg(const int nPage, const QString& msg) { //if( GLOBAL_RECO_SHOW_CENTER_MSG != nPage){ //return ; //} //no scanner, no color //m_MsgCenterRefresh = GLOBAL_RECO_SHOW_CENTER_MSG; //m_centermsg = msg; //m_centerMsgColor = color; if(_moveScanner->isHidden()){ showCenterMsg(msg, nPage); } } void recoUiRecognize::slotPwdBtnClicked() { emit signalShowPwdPage(""); } void recoUiRecognize::slotSetUserPwdButton(bool visible) { if(visible){ m_btnPwd->show(); }else{ m_btnPwd->hide(); } } void recoUiRecognize::slotQRCodeSwitchToStandbyStatusFromOvertimeStatus() { m_widget_mask->showQRCodeMsg(UiInterfaceForBackstage::QRCode_Msg_Standby); } void recoUiRecognize::slotUpdateRecoUiIpDisplay(const bool switchStatus) //增加识别界面ip显示开关,更新信号 { if(switchStatus){ if(m_backstageIf){ char ip[16] = {0}; int type = 0; if(0 == m_backstageIf->getIP(ip, sizeof (ip), type)){ m_widget_msg->updateIp(ip, type); } } } else { m_widget_msg->updateIp(""); } } void recoUiRecognize::slotShowFeatureUpdateProgress(const unsigned current, const unsigned all) { if(nullptr == m_widget_progress){ m_widget_progress = new ProgressWidget(tr("人脸特征更新中...")); m_widget_progress->setFixedSize(UiConfig::GetInstance()->getUiWidth() / 1.8, UiConfig::GetInstance()->getUiHeight() / 8); m_widget_progress->move((UiConfig::GetInstance()->getUiWidth() - m_widget_progress->width()) / 2, (UiConfig::GetInstance()->getUiHeight() - m_widget_progress->height()) / 2); m_widget_progress->show(); } m_widget_progress->setMsg(current, all); } void recoUiRecognize::slotCloseFeatureUpdateProgress() { if(nullptr != m_widget_progress){ delete m_widget_progress; m_widget_progress = nullptr; } } void recoUiRecognize::slotShowRecoUiMask(int maskType) { qDebug() << "reco ui type:" << maskType; if(maskType > 3){ return; } if(0 == maskType){ //m_label_back->clear(); m_bgPm = QPixmap(); m_isNightMode = false; }else if(1 == maskType){ if(UiConfig::GetInstance()->isFaceFrameShowByTempExist()){ //m_label_back->setPixmap( m_bgPm = QPixmap(UiConfig::GetInstance()->is8inchA038HaimanFaceFrame() ? ":/res/image/haiman-face-middle.png" : BG_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]); }else if(m_showFaceFrameByUser){ //m_label_back->setPixmap( m_bgPm = QPixmap(BG_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]); }else{ //m_label_back->clear(); m_bgPm = QPixmap(); } m_isNightMode = false; }else if(2 == maskType){ //m_label_back->setPixmap(QPixmap(TEMP_CALIBOX_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()])); m_bgPm = QPixmap(TEMP_CALIBOX_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_isNightMode = false; }else if(3 == maskType){ //m_label_back->setPixmap(QPixmap(DARK_FILL_LIGHT_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()])); m_bgPm = QPixmap(DARK_FILL_LIGHT_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_isNightMode = true; } if(!UiConfig::GetInstance()->isRecoUiStyleScene()){ m_label_back->setPixmap(m_bgPm); } setCardReaderUnderScreenInstructions(m_isNightMode); } void recoUiRecognize::slotNotiMsg(const int nPage, const QString& msg, int color) { if( GLOBAL_RECO_SHOW_NOTI_MSG != nPage) { return ; } m_NotiMsgRefresh = GLOBAL_RECO_SHOW_NOTI_MSG; m_notimsg = msg; m_notiMsgColor = color; if(_moveScanner->isHidden()) { showNotiMsg(); } } QString recoUiRecognize::recoUiTextCfg(RecoUiTextCfg::enTextType type) { const QString texts[] = {tr("请刷脸通行"), m_name, tr("未经许可人员"), tr("禁止通行"), tr("未佩戴口罩"), tr("口罩检测通过"), tr("体温:"), tr("请刷卡"), tr("请用本人证件"), tr("请正视镜头"), tr("禁止通行时段")}; if(UiConfig::GetInstance()->isRecoUiStyleScene() && RecoUiTextCfg::enTextType::TextFacePass == type){ return ""; } if(RecoUiTextCfg::DisModeHide == UiConfig::GetInstance()->m_textCfg[type].m_mode){ return ""; } else if(RecoUiTextCfg::DisModeCustom == UiConfig::GetInstance()->m_textCfg[type].m_mode){ return UiConfig::GetInstance()->m_textCfg[type].m_cusText; } return texts[type]; } bool recoUiRecognize::showCenterMsg(const QString& msg, int type) //no buf, show msg immediately { #if 0 bool ret = false; //if(GLOBAL_RECO_SHOW_CENTER_MSG == m_centerMsgRefresh){ m_widget_cMsg->showMsg(msg, type); ret = true; //} if(ret){ //m_centerMsgRefresh = -1; m_msgShowed = true; ret = runScanLine; } return ret; #else if(msg.isEmpty()){ //m_widget_person->show(); m_widget_cMsg->hide(); } else{ //m_widget_person->hide(); //m_widget_msg->hide(); m_widget_cMsg->showMsg(msg, type); m_msgShowed = true; m_widget_cMsg->show(); if(UiConfig::GetInstance()->isRkDevice()){ update(); } //TODO..................................................... //m_backstageIf->stopIdentyState();//bt lock unlocking or other situation which showing this widget, pause face recognition } QCoreApplication::processEvents(); return runScanLine; #endif } void recoUiRecognize::setCardReaderUnderScreenInstructions(bool isNightMode) { if(nullptr == m_wgtCardUnderScreen){ return; } QPalette pal(m_wgtCardUnderScreen->palette()); pal.setBrush(QPalette::Background,QBrush(QPixmap(isNightMode ? SWIP_CARD_NIGHT_MODE_WIDGET_BG[UiConfig::GetInstance()->getScreenConfigIndex()] : SWIP_CARD_DAY_MODE_WIDGET_BG[UiConfig::GetInstance()->getScreenConfigIndex()]))); m_wgtCardUnderScreen->setPalette(pal); } CenterMsgWidget::CenterMsgWidget(QWidget *parent) : QWidget(parent) { qDebug() << "CenterMsgWidget()"; m_label_msg = new QLabel(this); //m_label_msg->setPalette(palette); m_label_msg->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距 m_label_msg->setWordWrap(true); m_label_msg->setAlignment(Qt::AlignCenter); //m_label_msg->setAutoFillBackground(true); m_label_msg->setStyleSheet("background-color:transparent;"); //QFont ft; //ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); //m_label_msg->setFont(ft); //m_label_msg->setStyleSheet("background-color:transparent;font-size:40px"); QHBoxLayout* hLayout = new QHBoxLayout(); hLayout->addWidget(m_label_msg, 4, Qt::AlignCenter); setLayout(hLayout); #if 1 //bg img setAutoFillBackground(true); #else setFixedWidth(WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()]); setStyleSheet("background-color:rgba(0, 0, 0, 100);border-radius:10px;padding:2px 4px;focus{outline: none;}"); setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明 setWindowFlags(Qt::FramelessWindowHint); //设置无边框窗口 #endif } CenterMsgWidget::~CenterMsgWidget() { qDebug() << "~CenterMsgWidget()"; } void CenterMsgWidget::showMsg(const QString& msg, int type) { if("" == msg){ hide(); #if 0 if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } #endif return; } #if 0 if(m_centerMsgType != type){ QPalette palette; palette.setColor(QPalette::WindowText,Qt::white); if(GLOBAL_RECO_SHOW_CENTER_MSG == type){ #if 0 //bg img palette.setBrush(QPalette::Background,QBrush(QPixmap(BG_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); setFixedHeight(WIDGET_HEIGHT[UiConfig::GetInstance()->getScreenConfigIndex()]); #else setFixedHeight(UiConfig::GetInstance()->getUiHeight() / 5); #endif } else{ //if(GLOBAL_RECO_SHOW_CENTER_MSG_BIG == type || GLOBAL_RECO_SHOW_CENTER_MSG_BIG_RED == type){ setFixedHeight(static_cast(UiConfig::GetInstance()->getUiHeight() * 0.8)); } m_label_msg->setPalette(palette); m_centerMsgType = type; } #endif QPoint posi(0, 0); QFont ft; QPalette pal(this->palette()); m_label_msg->setAutoFillBackground(false); if(GLOBAL_RECO_SHOW_CENTER_MSG_BIG_RED == type){ QStringList list = msg.split("\n"); QString str; int segNum = list.length() - 1; if(segNum){ //qDebug() << "segNum:" << segNum; for(int i=0; i%1").arg(list[i]) + "
"; } str += QString("%1").arg(list[segNum - 1]); } //setStyleSheet("background-color:rgba(0, 0, 0, 100);border-radius:10px;padding:2px 4px;focus{outline: none;}"); pal.setBrush(QPalette::Background,QBrush(QColor(0, 0, 0, 100))); //setFixedHeight(static_cast(UiConfig::GetInstance()->getUiHeight() * 0.5)); setFixedSize(WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()], static_cast(UiConfig::GetInstance()->getUiHeight() * 0.5)); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 1.5); m_label_msg->setFont(ft); m_label_msg->setText(str); posi.setX((UiConfig::GetInstance()->getUiWidth() - WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2); posi.setY(static_cast(UiConfig::GetInstance()->getUiHeight() * 0.2)); }else{ switch(type){ case GLOBAL_RECO_SHOW_CENTER_MSG_BG_GREEN: pal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/bg_green_large.png"))); setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 2); break; case GLOBAL_RECO_SHOW_CENTER_MSG_BG_YELLOW: pal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/bg_yellow_large.png"))); setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 2); break; case GLOBAL_RECO_SHOW_CENTER_MSG_BG_RED: pal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/bg_red_large.png"))); setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 2); break; case GLOBAL_RECO_SHOW_CENTER_MSG_BG_PURPLE: pal.setBrush(QPalette::Background,QBrush(QPixmap(":/res/image/bg_purple_large.png"))); setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 2); break; case GLOBAL_RECO_SHOW_CENTER_MSG_BG_BLACK: pal.setBrush(QPalette::Background, QBrush(Qt::black)); setFixedSize(UiConfig::GetInstance()->getUiWidth(), UiConfig::GetInstance()->getUiHeight()); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 2); break; case GLOBAL_RECO_SHOW_CENTER_MSG_FIRE_ALARM: //m_label_msg->clear(); m_label_msg->setFixedSize(200, 200); m_label_msg->setAutoFillBackground(true); m_label_msg->setPixmap(QPixmap(":/res/image/fire_alarm.png")); pal.setBrush(QPalette::Background,QBrush(QColor(255, 255, 255, 255))); setFixedSize(static_cast(UiConfig::GetInstance()->getUiWidth() * 0.8), static_cast(UiConfig::GetInstance()->getUiHeight() * 0.3)); posi.setX((UiConfig::GetInstance()->getUiWidth() - static_cast(UiConfig::GetInstance()->getUiWidth() * 0.8)) / 2); posi.setY(static_cast(UiConfig::GetInstance()->getUiHeight() * 0.3)); const_cast(msg).clear(); break; default: pal.setBrush(QPalette::Background,QBrush(QColor(0, 0, 0, 100))); setFixedSize(WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()], static_cast(UiConfig::GetInstance()->getUiHeight() * 0.5)); posi.setX((UiConfig::GetInstance()->getUiWidth() - WIDGET_WIDTH[UiConfig::GetInstance()->getScreenConfigIndex()]) / 2); posi.setY(static_cast(UiConfig::GetInstance()->getUiHeight() * 0.2)); ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()] * 1.5); break; } if(!msg.isEmpty()){ m_label_msg->setFixedSize(static_cast(width() * 0.8), static_cast(height() * 0.8)); m_label_msg->setFont(ft); QPalette palette; palette.setColor(QPalette::WindowText,Qt::white); m_label_msg->setPalette(palette); m_label_msg->setText(msg); } setPalette(pal); } move(posi.x(), posi.y()); show(); } void CenterMsgWidget::paintEvent(QPaintEvent *event) { QStyleOption opt; opt.initFrom(this); QPainter pr(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &pr, this);//绘制样式 return QWidget::paintEvent(event); } FinalResultWidget::FinalResultWidget(QWidget *parent) : QWidget(parent) { setFixedSize(FinalResultWidget::FINAL_RESULT_WIDGET_W_H[UiConfig::GetInstance()->getScreenConfigIndex()], FinalResultWidget::FINAL_RESULT_WIDGET_W_H[UiConfig::GetInstance()->getScreenConfigIndex()] + 1); setAutoFillBackground(true); hide(); } FinalResultWidget::~FinalResultWidget() { } void FinalResultWidget::showResult(bool pass) { QPalette pal(palette()); pal.setBrush(QPalette::Background,QBrush(QPixmap(pass ? FinalResultWidget::FINAL_RESULT_OK_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()] : FinalResultWidget::FINAL_RESULT_FAIL_RES_FILE[UiConfig::GetInstance()->getScreenConfigIndex()]))); setPalette(pal); show(); if(UiConfig::GetInstance()->isRkDevice()){ dynamic_cast(parent())->update(); } }