2024-11-25 17:15:44 +08:00

482 lines
13 KiB
C++

#include "settingwidget.h"
#include "ui_settingwidget.h"
#include <QDir>
#include <QSettings>
#include <QMessageBox>
#include <QDebug>
#include "ccommunicateapi.h"
#include "languagemanager.h"
#include "readconfig.h"
#include <QDebug>
#include <QDateTime>
#include "icemodule.h"
#include "torquedialog.h"
#include "fescontroldialog.h"
#include "icemodule.h"
SettingWidget::SettingWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingWidget),
m_buttonGroup(nullptr),
checkTimer(NULL),
fesAState(false),
fesBState(false),
bioelectricityState(false),
m_powerLevel(0),
m_mainBoXueyang(NULL)
{
ui->setupUi(this);
//隐藏电刺激和调节高度
ui->groupBox_3->hide();
ui->groupBox_13->hide();
ui->OpenFES_Btn->setVisible(false);
#ifdef UpLowLimpNormal
ui->groupBox_3->setVisible(true);
ui->groupBox_5->move(875,267);
ui->groupBox_14->move(225,267);
#endif
//设置血氧可见
#ifndef OXYGEN
ui->groupBox_5->setVisible(false);
#endif
//设置按钮互斥,配合样式表
m_buttonGroup = new QButtonGroup;
m_buttonGroup->setExclusive(true);
m_buttonGroup->addButton(ui->systemSetting_Btn);
m_buttonGroup->addButton(ui->secretManage_Btn);
m_buttonGroup->addButton(ui->productMsg_Btn);
ui->originalPasswordTips_Label->setVisible(false);
ui->confirmPasswordTips_Label->setVisible(false);
ui->stackedWidget->setCurrentIndex(0);
checkTimer = new QTimer;
checkTimer->setInterval(3000);
connect(checkTimer,SIGNAL(timeout()),this,SLOT(slotCheckTimerSlot()));
// initWidget();
//设置按钮
E_LANGUAGE lan = LanguageManager::getInstance()->getConfigLanguage();
switch(lan)
{
case Chinese_E:
ui->CH_RadioButton->setChecked(true);
break;
case English_E:
ui->EN_RadioButton->setChecked(true);
//单独设置按钮大小
QFont font ;
font.setPointSize(13);
font.setBold(true);
ui->productMsg_Btn->setFont(font);
ui->productMsg_Btn->resize(265,60);
break;
}
connect(ui->torque_Low,SIGNAL(clicked()),this,SLOT(on_torque_Radio_clicked()));
connect(ui->torque_Middle,SIGNAL(clicked()),this,SLOT(on_torque_Radio_clicked()));
connect(ui->torque_Hign,SIGNAL(clicked()),this,SLOT(on_torque_Radio_clicked()));
m_mainBoXueyang = new MaiBoXueyangDialog();
//设置不同肢体的产品介绍页面
#ifdef NORMALEXE
E_LANGUAGE language = LanguageManager::getInstance()->getCurrentLanguage();
if(language == Chinese_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDL_CH.png);");
//
else if(language == English_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDL_EN.png);");
#endif
#ifdef UpLowLimpNormal
E_LANGUAGE language = LanguageManager::getInstance()->getCurrentLanguage();
if(language == Chinese_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDLH_CH.png);");
else if(language == English_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDLH_EN.png);");
#endif
//单上肢
#ifdef ONLYUPLIMP
E_LANGUAGE language = LanguageManager::getInstance()->getCurrentLanguage();
if(language == Chinese_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IDL_CH.png);");
else if(language == English_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IDL_EN.png);");
#endif
//单下肢
#ifdef ONLYDOWNLIMP
E_LANGUAGE language = LanguageManager::getInstance()->getCurrentLanguage();
if(language == Chinese_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIDL_CH.png);");
else if(language == English_E)
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIDL_EN.png);");
#endif
}
SettingWidget::~SettingWidget()
{
if(m_buttonGroup != nullptr)
delete m_buttonGroup;
delete ui;
}
void SettingWidget::on_resetPassword_Btn_clicked()
{
QString dirPath = "./DependFile/conf/";
QDir confdir(dirPath);
if(!confdir.exists())
confdir.mkdir(dirPath);
QString confFile(dirPath + "IDconf.ini");
QSettings iniSetting(confFile, QSettings::IniFormat);
QString password("666666");
iniSetting.setValue("password",password);
iniSetting.setValue("user","xyyl");
QMessageBox::warning(NULL,tr("提示"),tr("密码重置成功"));
}
void SettingWidget::on_bioelectricity_Btn_clicked()
{
/***
QMessageBox::warning(NULL,tr("提示"),tr("未检测到脉搏血氧设备"));
return;
if(ui->bioelectricity_Btn->text() == tr("启用"))
{
ui->bioelectricity_Btn->setText(tr("断开"));
ui->bioelectricityState_Label->setText(tr("已连接"));
}
else if(ui->bioelectricity_Btn->text() == tr("断开"))
{
ui->bioelectricity_Btn->setText(tr("启用"));
ui->bioelectricityState_Label->setText(tr("未连接"));
}
***/
if(!m_mainBoXueyang)
m_mainBoXueyang = new MaiBoXueyangDialog();
m_mainBoXueyang->show();
}
void SettingWidget::on_systemSetting_Btn_clicked()
{
//系统设置界面
ui->stackedWidget->setCurrentIndex(0);
}
void SettingWidget::on_secretManage_Btn_clicked()
{
//密码管理界面
ui->stackedWidget->setCurrentIndex(1);
ui->originalPasswordTips_Label->setVisible(false);
ui->confirmPasswordTips_Label->setVisible(false);
}
void SettingWidget::on_productMsg_Btn_clicked()
{
ui->stackedWidget->setCurrentIndex(2);
}
void SettingWidget::on_cancelPassword_Btn_clicked()
{
ui->originalPassword_LineEdit->clear();
ui->newPassword_LineEdit->clear();
ui->confirmPassword_LineEdit->clear();
}
void SettingWidget::on_savePassword_Btn_clicked()
{
QString originalPassword = ui->originalPassword_LineEdit->text();
QString dirPath = "./DependFile/conf/";
QDir confdir(dirPath);
if(!confdir.exists())
confdir.mkdir(dirPath);
QString confFile(dirPath + "IDconf.ini");
QSettings iniSetting(confFile, QSettings::IniFormat);
QString password = iniSetting.value("password").toString();
if(password != originalPassword)
{
ui->originalPasswordTips_Label->setText(tr("原密码输入错误"));
ui->originalPasswordTips_Label->setVisible(true);
return;
}
if(ui->newPassword_LineEdit->text() != ui->confirmPassword_LineEdit->text())
{
ui->confirmPasswordTips_Label->setText(tr("两次输入的密码不同"));
ui->confirmPasswordTips_Label->setVisible(true);
return;
}
iniSetting.setValue("password",ui->confirmPassword_LineEdit->text());
ui->confirmPasswordTips_Label->setVisible(false);
ui->originalPasswordTips_Label->setVisible(false);
ui->confirmPassword_LineEdit->clear();
ui->newPassword_LineEdit->clear();
ui->originalPassword_LineEdit->clear();
QMessageBox::warning(NULL,tr("提示"),tr("密码更新成功"));
}
void SettingWidget::slotCheckTimerSlot()
{
if(!fesAState)
{
ui->FESConfig_Btn->setEnabled(false);
ui->FESConfig_Btn->setStyleSheet("background: #E1E1E1;border-radius: 8px;color:white;");
// ui->FESAState_Label->setText(tr("未连接"));
}
else
{
ui->FESConfig_Btn->setEnabled(true);
ui->FESConfig_Btn->setStyleSheet("background: #0D9DDB;border-radius: 8px;color:white;");
}
if(!fesBState)
{
}
else
{
}
if(!bioelectricityState)
{
ui->bioelectricity_Btn->setEnabled(false);
ui->bioelectricity_Btn->setStyleSheet("background: #E1E1E1;border-radius: 8px;color:white;");
ui->bioelectricityState_Label->setText(tr("未连接"));
}
else
{
ui->bioelectricity_Btn->setEnabled(true);
ui->bioelectricity_Btn->setStyleSheet("background: #0D9DDB;border-radius: 8px;color:white;");
}
}
void SettingWidget::initWidget()
{
ui->FESConfig_Btn->setEnabled(false);
ui->bioelectricity_Btn->setEnabled(false);
}
void SettingWidget::getVersion()
{
//读取上位机版本号
//获取下位机版本号
QByteArray array(4,0);
array[0] = GET_VERSION_CMD;
CCommunicateAPI::getInstance()->sendData(array);
QTimer::singleShot(1000,this,[this](){
QString version = IceModule::getInstance()->getVersion();
ui->lowVersion_Label->setText(version);
});
}
void SettingWidget::on_reset_Btn_clicked()
{
CCommunicateAPI::getInstance()->setConfigParam();
}
void SettingWidget::on_CH_RadioButton_toggled(bool checked)
{
if(checked)
{
LanguageManager::getInstance()->setCurrentLanguage(Chinese_E);
//单独设置按钮大小
QFont font ;
font.setPointSize(15);
font.setBold(true);
ui->productMsg_Btn->setFont(font);
ui->productMsg_Btn->resize(230,60);
#ifdef NORMALEXE
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDL_CH.png);");
#endif
#ifdef UpLowLimpNormal
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDLH_CH.png);");
#endif
//单上肢
#ifdef ONLYUPLIMP
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IDL_CH.png);");
#endif
//单下肢
#ifdef ONLYDOWNLIMP
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIDL_CH.png);");
#endif
}
}
void SettingWidget::on_EN_RadioButton_toggled(bool checked)
{
if(checked)
{
LanguageManager::getInstance()->setCurrentLanguage(English_E);
//单独设置按钮大小
QFont font ;
font.setPointSize(13);
font.setBold(true);
ui->productMsg_Btn->setFont(font);
ui->productMsg_Btn->resize(265,60);
#ifdef NORMALEXE
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDL_EN.png);");
#endif
#ifdef UpLowLimpNormal
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIIDLH_EN.png);");
#endif
#ifdef ONLYUPLIMP
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IDL_EN.png);");
#endif
//单下肢
#ifdef ONLYDOWNLIMP
ui->label_9->setStyleSheet("border-image: url(:/DependFile/Source/channel/IIDL_EN.png);");
#endif
}
}
void SettingWidget::changeEvent(QEvent* event)
{
switch (event->type())
{
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
QWidget::changeEvent(event);
break;
}
}
void SettingWidget::showEvent(QShowEvent *event)
{
Q_UNUSED(event)
getVersion();
}
void SettingWidget::on_Up_Btn_clicked()
{
if(!IceModule::getInstance()->getEmergencyState())
CCommunicateAPI::getInstance()->sendRealTimeParam(TUIGAN_UPDOWN,1);
}
void SettingWidget::on_down_Btn_clicked()
{
if(!IceModule::getInstance()->getEmergencyState())
CCommunicateAPI::getInstance()->sendRealTimeParam(TUIGAN_UPDOWN,2);
}
void SettingWidget::on_torque_Radio_clicked()
{
TorqueDialog torqueDialog;
torqueDialog.setWindowModality(Qt::WindowModal);
torqueDialog.exec();
bool isConfirmed = torqueDialog.getConfirmState();
if(!isConfirmed)
{
switch(m_powerLevel)
{
case 0:
ui->torque_Low->setChecked(true);
break;
case 1:
ui->torque_Middle->setChecked(true);
break;
case 2:
ui->torque_Hign->setChecked(true);
break;
}
return;
}
else
{
if(QObject::sender()->objectName() == "torque_Low")
{
m_powerLevel = 0;
}
else if(QObject::sender()->objectName() == "torque_Middle")
{
m_powerLevel = 1;
}
else if(QObject::sender()->objectName() == "torque_Hign")
{
m_powerLevel = 2;
}
IceModule::getInstance()->setPower(m_powerLevel);
switch(m_powerLevel)
{
case 0:
ui->torque_Low->setChecked(true);
break;
case 1:
ui->torque_Middle->setChecked(true);
break;
case 2:
ui->torque_Hign->setChecked(true);
break;
}
}
}
//配置电刺激盒
void SettingWidget::on_FESConfig_Btn_clicked()
{
FesControlDialog::getInstance()->show();
}
void SettingWidget::on_OpenFES_Btn_clicked()
{
if(ui->OpenFES_Btn->text() == tr("启用"))
{
if(FesControlDialog::getInstance()->openFESDevice())
{
ui->OpenFES_Btn->setText("已启用");
}
}
else if(ui->OpenFES_Btn->text() == tr("已启用"))
{
//关闭设备
ui->OpenFES_Btn->setText(tr("启用"));
}
}