Newer
Older
CasicBioRecNew / CasicBioRecWin.cpp
#include "CasicBioRecWin.h"
#include "ui_CasicBioRecWin.h"
#include <QKeyEvent>
#include <QTimer>

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

    // 程序启动时初始化缓存的数据
    this->initCacheData();

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

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

    // 初始化各个form界面并绑定切换响应函数
    this->initFormsPtr();

    // 打印日志
    LOG(INFO) << QString("应用程序启动成功[Application Startup Success]").toStdString();
}

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

void CasicBioRecWin::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
    case Qt::Key_Escape:
        QTimer::singleShot(100, qApp, SLOT(quit()));

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

void CasicBioRecWin::backToStandByForm()
{
    ui->stacked->setCurrentWidget(startForm);
}
void CasicBioRecWin::switchToUserListForm()
{
    personListForm->findPersonList();
    ui->stacked->setCurrentWidget(personListForm);
}
void CasicBioRecWin::switchToSettingForm()
{

}
void CasicBioRecWin::switchToRegistForm(QString personId)
{
    // 根据传递的参数更新页面标题
    if (personId.isEmpty() == false)
    {
        addPersonForm->setPersonId(personId);
        addPersonForm->updateFormTitle("人员信息");

        // 查询人员信息
        addPersonForm->loadPersonInfo(personId);
    } else
    {
        addPersonForm->updateFormTitle("人员注册");
        addPersonForm->clearPersonInfo();
    }

    // 切换页面
    ui->stacked->setCurrentWidget(addPersonForm);
}

void CasicBioRecWin::initFormsPtr()
{
    startForm = new StartupForm(this);
    personListForm = new PersonListForm(this);
    settingForm = new SettingForm(this);
    addPersonForm = new AddPersonForm(this);

    ui->stacked->addWidget(startForm);
    ui->stacked->addWidget(personListForm);
    ui->stacked->addWidget(settingForm);
    ui->stacked->addWidget(addPersonForm);

    ui->stacked->setCurrentWidget(personListForm);

    // 绑定按钮函数
    connect(startForm, &StartupForm::switchToUserListForm,
            this, &CasicBioRecWin::switchToUserListForm);
    connect(startForm, &StartupForm::switchToSettingForm,
            this, &CasicBioRecWin::switchToSettingForm);

    connect(personListForm, &PersonListForm::switchToRegistForm,
            this, &CasicBioRecWin::switchToRegistForm);
    connect(personListForm, &PersonListForm::backToHomePage,
            this, &CasicBioRecWin::backToStandByForm);

    connect(addPersonForm, &AddPersonForm::switchToUserListForm,
            this, &CasicBioRecWin::switchToUserListForm);
    connect(addPersonForm, &AddPersonForm::backToHomePage,
            this, &CasicBioRecWin::backToStandByForm);
}

void CasicBioRecWin::initCacheData()
{
    CacheManager::getInstance().updateDeptCache();
}