Newer
Older
CasicBioRecNew / StartupForm.cpp
Tan Yue on 2 Jun 2022 2 KB 20220602 人脸识别优化整合
#include "StartupForm.h"
#include "ui_StartupForm.h"

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

    // 初始化时更新显示的时间
    this->updateDateAndTime();

    // 加载css文件设置控件样式
    QFile file(QApplication::applicationDirPath() + "/qss/startup.css");
    if (file.open(QFile::ReadOnly))
    {
        QString qssStr = QLatin1String(file.readAll());
        this->setStyleSheet(qssStr);
        file.close();
    }

    // 设置弹簧的高度和宽度
    ui->vsTop->changeSize(0, 200);
    ui->vsMidd->changeSize(0, 100);
    ui->hsLeft->changeSize(400, 0);
    ui->hsMidd->changeSize(150, 0);

    // 初始化更新界面的定时器
    // 每秒执行一次
    connect(TimeCounterUtil::getInstance().clockCounter, &QTimer::timeout,
            this, &StartupForm::updateDateAndTime);
    connect(TimeCounterUtil::getInstance().clockCounter, &QTimer::timeout,
            this, &StartupForm::takeOneFrameForCheckStatus);

    TimeCounterUtil::getInstance().clockCounter->start(1000);
}

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

void StartupForm::updateDateAndTime()
{
    ui->labTime->setText(QTime::currentTime().toString("HH:mm:ss"));
    ui->labDate->setText(QDate::currentDate().toString("yyyy-MM-dd"));
}

void StartupForm::takeOneFrameForCheckStatus()
{
    if (ProMemory::getInstance().appState != CasicBioRecConst::ApplicationState::STATE_WAIT)
    {
        // 非待机状态直接返回
        return;
    }

    // 不在这个页面 则直接返回 不做后续判断
    if (ProMemory::getInstance().widgeFrame != CasicBioRecConst::WidgeFrameName::MAIN_PAGE)
    {
        return;
    }

    cv::Mat rawFrame = ProMemory::getInstance().faceCam->takeOneRawFrame();
    bool hasFace = casic::face::CasicFaceInterface::getInstance().hasFaceDetectedByCVCascade(rawFrame, 100);
    if (hasFace == true)
    {
        LOG(INFO) << QString("FACE DETECTED START WORKING").toStdString();
        ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING;

        // 启动识别线程
        // 槽函数 CasicBioRecWin::switchToRecognizeForm
        emit startRecognize();

        // 退出
        return ;
    }
}

void StartupForm::on_btnUser_clicked()
{
    emit switchToUserListForm();
}

void StartupForm::on_btnSetting_clicked()
{
    emit switchToSettingForm();
}