Newer
Older
CasicIrisIdentify / MainWindowForm.cpp
#include "MainWindowForm.h"
#include "ui_MainWindowForm.h"
#include <QDebug>

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

    // 设置窗口透明和大小、位置
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->move(1400, 15);
    this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT);

    // 通过调色板的颜色来设置窗口的统一背景色
    qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR)));

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

    initFormsPtr();

    // 设置标题文字
    ui->labelTitle->setText(SettingConfig::getInstance().WINDOW_TITLE);
    ui->labelCopyright->setText(SettingConfig::getInstance().WINDOW_RIGHTS);
    ui->labelVersion->setText(SettingConfig::getInstance().WINDOW_VERSION);

    // 初始化虹膜相机控制
    ProMemory::getInstance().irisCam = new IrisCameraController(this);
    ProMemory::getInstance().irisCam->initIrisCamera();
    ProMemory::getInstance().irisCam->openIrisCamera();
    connect(ProMemory::getInstance().irisCam->irisCamHandler, &IrisCameraCapEventHandler::sendIrisFrameToDraw, identifyForm, &IdentifyForm::drawIrisImageOnFrame);

//    LOG_INFO(QString("应用程序启动成功[Application Startup Success]").toStdString());
    qDebug() << "应用程序启动成功[Application Startup Success]";
    ProMemory::getInstance().widgeFrame = AppConstants::WidgeFrameName::IDENTIFY_FORM;
    ui->wdgtStatced->setCurrentWidget(identifyForm);

    // 开始虹膜相机拍图
    ProMemory::getInstance().irisCam->startCapture();
}

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

void MainWindowForm::lockScreen()
{
    ui->wdgtStatced->setCurrentWidget(lockScreenForm);
    ProMemory::getInstance().widgeFrame = AppConstants::WidgeFrameName::LOCKSCREEN_FORM;
    ProMemory::getInstance().appState = AppConstants::ApplicationState::STATE_WAIT;
}

void MainWindowForm::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
    case Qt::Key_Escape:
        QTimer::singleShot(100, qApp, [=](){
            QApplication::quit();
        });

    default:
        QWidget::keyPressEvent(event);
    }
}

void MainWindowForm::initFormsPtr()
{
    // 初始化各个form
    lockScreenForm = new LockScreenForm(this);
    identifyForm = new IdentifyForm(this);

    // 将form添加到statcked widget中
    ui->wdgtStatced->addWidget(identifyForm);
    ui->wdgtStatced->addWidget(lockScreenForm);

    // 绑定按钮函数
}