156 lines
3.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "mainwindow.h"
#include "ui_mainwindow.h"
/**
* @brief 切换到设置页面
* 点击工具栏的“设置”触发。
* @param void
* @return void
* @author 柯劲帆
* @date 2024-07-27
*/
void MainWindow::on_settingAction_triggered()
{
ui->stackedWidget->setCurrentWidget(ui->settingPage);
}
/**
* @brief 更新状态栏的COM口号相关内容
* @param void
* @return void
* @author 柯劲帆
* @date 2024-07-27
*/
void MainWindow::updateStatusBarComNumber()
{
if (reader.is_connected())
{
readerConnectStatusCheckBox->setChecked(true);
QString s = "已连接读卡器COM" + QString::number(reader.getComNumber());
comNumberLabel->setText(s);
}
else
{
readerConnectStatusCheckBox->setChecked(false);
QString s = "当前无连接";
comNumberLabel->setText(s);
}
}
/**
* @brief 连接读卡器
* 在连接读卡器部分点击“连接”按钮触发。
* @param void
* @return void
* @author 柯劲帆
* @date 2024-07-27
*/
void MainWindow::on_connectReaderButton_clicked()
{
int comNumber = ui->comNumberBox->value();
reader.setComNumber(comNumber);
bool connectSuccess = reader.connect();
if (!connectSuccess) {
QString warningMessage = QString("COM") + QString::number(comNumber);
warningMessage += QString("上未识别到读卡器。\n请输入正确的COM口号。");
QMessageBox::warning(this, "读卡器状态提示", warningMessage);
}
updateStatusBarComNumber();
}
/**
* @brief 连接数据库并检查设备名
* 在连接数据库部分点击“连接”按钮触发。
* @param void
* @return void
* @author 柯劲帆
* @date 2024-07-27
*/
void MainWindow::on_connectDatabaseButton_clicked()
{
if (db == nullptr)
{
db = new Database(QSqlDatabase::addDatabase("QMYSQL"), ui->ipAddrEdit->text(), ui->portBox->value(), ui->passwordEdit->text());
}
else
{
db->setHostName(ui->ipAddrEdit->text());
db->setPort(ui->portBox->value());
db->setPassword(ui->passwordEdit->text());
}
if (!db->open())
{
QMessageBox::warning(this, QString("数据库状态提示"), QString("数据库连接失败,请重试。"));
databaseConnectStatusCheckBox->setChecked(false);
databaseLabel->setText(QString("数据库未连接"));
return;
}
databaseConnectStatusCheckBox->setChecked(true);
databaseLabel->setText(QString("数据库已连接:") + db->getHostName() + QString(":") + QString::number(db->getPort()));
device.setDevice(ui->deviceEdit->text(), db);
if (!device.is_verified())
{
QMessageBox::warning(this, QString("设备名提示"), QString("该设备名无效,请重试。"));
}
deviceLabel->setText(device.getNameAndDepositAllowed());
}
/**
* @brief 检查读卡器和数据库是否准备好
* @param void
* @return 读卡器和数据库状态
* - true 已准备好
* - false 未准备好
* @author 柯劲帆
* @date 2024-07-27
*/
bool MainWindow::allReady()
{
if (!reader.is_connected()) return false;
if (db == nullptr || !db->is_connected()) return false;
if (!device.is_verified()) return false;
return true;
}
/**
* @brief 检查数据库和设备名是否准备好
* @param void
* @return 数据库状态和设备名设置状态
* - true 已准备好
* - false 未准备好
* @author 柯劲帆
* @date 2024-07-30
*/
bool MainWindow::softwareReady()
{
if (db == nullptr || !db->is_connected()) return false;
if (!device.is_verified()) return false;
return true;
}
/**
* @brief 检查数据库是否准备好
* @param void
* @return 数据库状态
* - true 已准备好
* - false 未准备好
* @author 柯劲帆
* @date 2024-07-31
*/
bool MainWindow::databaseReady()
{
if (db == nullptr || !db->is_connected()) return false;
return true;
}