Newer
Older
CasicIrisIdentify / IdentifyForm.cpp
#ifdef _MSC_VER
#pragma execution_character_set("utf-8")    // Qt VS 中文兼容(UTF-8)
#endif

#include "IdentifyForm.h"
#include "ui_IdentifyForm.h"

IdentifyForm::IdentifyForm(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::IdentifyForm)
{
    ui->setupUi(this);

    ui->wgtIdentifying->setCurrentIndex(0);

    ui->labelIdenTips->setText("");
    ui->labelFailTips->setText("识 别 失 败\n请 重 试");
}

IdentifyForm::~IdentifyForm()
{
    delete ui;
}

void IdentifyForm::updateIdentifyTips(QString tips)
{
    ui->labelIdenTips->setText(tips);
}

void IdentifyForm::drawIrisImageOnFrame(QImage image)
{
    // 只在识别界面才显示画面
    if (ui->wgtIdentifying->currentIndex() == 0) {
        ui->labelVideo->setPixmap(QPixmap::fromImage(image));
    }
}

void IdentifyForm::showRecogFailure()
{
//    SpeakerUtil::getInstance().speak("识别失败,请重试");

    ui->wgtIdentifying->setCurrentIndex(2);

    ProMemory::getInstance().clearIrisQueue();
    ProMemory::getInstance().irisRecogPro->setWorking(false);
    ProMemory::getInstance().irisCam->stopCapture();

    QTimer::singleShot(SettingConfig::getInstance().FAILURE_TIPS_LAST, [=](){
        ProMemory::getInstance().irisCam->startCapture();
        ProMemory::getInstance().irisRecogPro->setWorking(true);
        ProMemory::getInstance().appState = AppConstants::ApplicationState::STATE_WORKING;
        ui->labelIdenTips->setText("");
        CasicIrisRecState::getInstance().state = CasicIrisRecState::IrisRecStateName::REC_NOT_START;
        ui->wgtIdentifying->setCurrentIndex(0);
    });
}

void IdentifyForm::showRecognizeResult(QString personId)
{
//    SpeakerUtil::getInstance().speak(QString("识别成功,项目部王珏%1").arg(personId));

    ui->wgtIdentifying->setCurrentIndex(1);

    // 查询并显示人员信息
//    SysPersonDao personDao;
//    QVariantMap personInfo = personDao.findRecordById(personId);
//    ui->labNameText->setText("");
//    ui->labNameText->setText(personInfo.value("name").toString());
//    ui->labGenderText->setText("");
//    ui->labGenderText->setText(CacheManager::getInstance().getGenderName().value(personInfo.value("gender").toString()).toString());
//    ui->labDeptText->setText("");
//    ui->labDeptText->setText(personInfo.value("deptname").toString());
//    ui->labTimeText->setText("");
//    ui->labTimeText->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));

    ui->labelName->setText("王珏");
    ui->labelGender->setText("男");
    ui->labelDept->setText("项目部");
    ui->labelTs->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm"));

    QPixmap p;
    p.load(":/images/photo.png");

    float rp = p.width() * 1.0 / p.height() * 1.0;
    float rl = ui->labelPhoto->width() * 1.0 / ui->labelPhoto->height() * 1.0;

    if (rp <= rl) {
        p = p.scaledToHeight(ui->labelPhoto->height());
    } else {
        p = p.scaledToWidth(ui->labelPhoto->width());
    }

    ui->labelPhoto->setPixmap(p);

    QTimer::singleShot(SettingConfig::getInstance().SUCCESS_TIPS_LAST, [=](){
        ProMemory::getInstance().irisCam->startCapture();
        ProMemory::getInstance().irisRecogPro->setWorking(true);
        ProMemory::getInstance().appState = AppConstants::ApplicationState::STATE_WORKING;
        ui->labelIdenTips->setText("");
        CasicIrisRecState::getInstance().state = CasicIrisRecState::IrisRecStateName::REC_NOT_START;
        ui->wgtIdentifying->setCurrentIndex(0);
    });
}