UpLowLimp/ZBD_IIIDL_S_Project/Src/TrainManager/trainingparamsetting.cpp
2024-11-25 17:15:44 +08:00

489 lines
19 KiB
C++
Raw 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 "trainingparamsetting.h"
#include "ui_trainingparamsetting.h"
#include "mainwindowpagecontrol.h"
#include "icemodule.h"
#include "ccommunicateapi.h"
#include "paramtipsdialog.h"
#include "languagemanager.h"
#include <QDebug>
#include "currentuserdata.h"
TrainingParamSetting::TrainingParamSetting(QWidget *parent) :
QWidget(parent),
ui(new Ui::TrainingParamSetting),
m_IsImportPrescription(0),
m_saveParamInWidget(0),
m_trainType(0)
{
ui->setupUi(this);
m_userID = CurrentUserData::getInstace()->getCurrentPatientMsg().ID;
initWidget();
}
TrainingParamSetting::~TrainingParamSetting()
{
delete ui;
}
ST_BicycleParam TrainingParamSetting::get_st_bicycleParam()
{
ST_BicycleParam st_bicycleParam;
st_bicycleParam.trainTime = ui->trainTime1_ComboBox->currentText().toUInt();
//训练阻力
st_bicycleParam.resistance = ui->resistance1_ComboBox->currentText().toInt();
//训练速度
st_bicycleParam.speed = ui->speed1_ComboBox->currentText().toInt();
//转向:1为正向0为逆向
if(ui->CW1_Button->isChecked())
st_bicycleParam.direction = 1;
else if(ui->ACW1_Button->isChecked())
st_bicycleParam.direction = 0;
//痉挛保护
// if(ui->spasmACW2_RadioButton->isChecked())
// st_bicycleParam.spasmType = 0;
if(ui->spasmClose1_Button->isChecked())
st_bicycleParam.spasmSwitch = 1; //保护是1
else
m_st_bicycleParam.spasmSwitch = 0; //不保护是0
//痉挛等级
if(ui->spasmLow1_Button->isChecked())
st_bicycleParam.spasmLevel = 1;
else if(ui->spasmMidd1_Button->isChecked())
st_bicycleParam.spasmLevel = 2;
else if(ui->spasmHigh1_Button->isChecked())
st_bicycleParam.spasmLevel = 3;
return st_bicycleParam;
}
void TrainingParamSetting::setTrainType(bool type)
{
m_trainType = type;
}
void TrainingParamSetting::showEvent(QShowEvent *event)
{
Q_UNUSED(event) //过滤掉同一个用户的多次参数初始化,界面不保存数据
if( m_saveParamInWidget != 1 && m_IsImportPrescription != 1 /*m_userID != CurrentUserData::getInstace()->getCurrentPatientMsg().ID ||*/ ) //过滤掉导入处方事件,第二次进入页面
{//第二次进入要保存:(改用户、游戏结束会跟新)√ 点击返回不更新、不到界面报要保存;
ui->spasmClose1_Button->setChecked(true); //保护打开
//时间
ui->trainTime1_ComboBox->setCurrentIndex(19);
//阻力
ui->resistance1_ComboBox->setCurrentIndex(4);
//速度
ui->speed1_ComboBox->setCurrentIndex(8);
ui->spasmLow1_Button->setChecked(true);
ui->CW1_Button->setChecked(true);
m_userID = CurrentUserData::getInstace()->getCurrentPatientMsg().ID;
}
else
{
m_IsImportPrescription = 0; //重新初始化
}
}
void TrainingParamSetting::changeEvent(QEvent *event)
{
switch (event->type())
{
case QEvent::LanguageChange:
{
E_LANGUAGE language = LanguageManager::getInstance()->getCurrentLanguage();
switch(language)
{
case Chinese_E:
{
// ui->trainPart_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_part.png);");
// ui->trainMode_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_mode.png);");
// ui->trainTime_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_time.png);");
// ui->resistance_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_force.png);");
// ui->speed_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_speed.png);");
// ui->turn_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_turn.png);");
// ui->spasmProtect_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/spasm_control.png);");
// ui->spasmLevel_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/spasm_level.png);");
// ui->game_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_game.png);");
ui->trainTimeIcon_label->move(70,50);
ui->trainTime_label->move(140,40);
ui->trainResistanceIcon_label->move(80,50);
ui->trainResistance_label->move(150,40);
ui->trainSpeedIcon_label->move(90,40);
ui->trainSpeed_label->move(160,30);
//X移动50
ui->spasmProtectIcon_label->move(50,80);
ui->spasmProtect_label->move(120,70);
ui->spasmProtect_label->setStyleSheet("width: 168px;height: 42px;font-size: 42px;font-weight: 500;color: #033333;line-height: 63px;");
ui->trainResistance_label->setStyleSheet("width: 168px;height: 42px;font-size: 42px;font-weight: 500;color: #033333;line-height: 63px;");
}
break;
case English_E:
{
// ui->trainPart_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_part_E.png);");
// ui->trainMode_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_mode_E.png);");
// ui->trainTime_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_time_E.png);");
// ui->resistance_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_force_E.png);");
// ui->speed_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_speed_E.png);");
// ui->turn_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_turn_E.png);");
// ui->spasmProtect_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/spasm_control_E.png);");
// ui->spasmLevel_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/spasm_level_E.png);");
// ui->game_GroupBox->setStyleSheet("border-image: url(:/DependFile/Source/trainPage/train_game_E.png);");
//X移动30
ui->trainTimeIcon_label->move(50,50);
ui->trainTime_label->move(120,40);
ui->trainResistanceIcon_label->move(5,50);
ui->trainResistance_label->move(55,40);
ui->trainSpeedIcon_label->move(40,50);
ui->trainSpeed_label->move(110,40);
//X移动50
ui->spasmProtectIcon_label->move(5,80);
ui->spasmProtect_label->move(55,70);
ui->spasmProtect_label->setStyleSheet("width: 168px;height: 42px;font-size: 32px;font-weight: 500;color: #033333;line-height: 63px;");
ui->trainResistance_label->setStyleSheet("width: 168px;height: 42px;font-size: 36px;font-weight: 500;color: #033333;line-height: 63px;");
}
break;
}
ui->retranslateUi(this);
}
break;
default:
QWidget::changeEvent(event);
break;
}
}
void TrainingParamSetting::initWidget()
{
/*
ui->resistance1_ComboBox->setView(new QListView);
ui->speed1_ComboBox->setView(new QListView);
ui->trainTime1_ComboBox->setView(new QListView);
*/
// ui->CW1_Button->setChecked(true); //优先选择正向
// ui->spasmMidd1_Button->setChecked(true); //中等痉挛
ui->spasmClose1_Button->setChecked(true); //保护打开
//时间
// ui->trainTime1_ComboBox->setView(new QListView);
for(int i = 1;i <= 120;i++)
{
ui->trainTime1_ComboBox->addItem(QString::number(i));
}
ui->trainTime1_ComboBox->setCurrentIndex(19);
//阻力
for(int i = 1;i <= 20;i++)
{
ui->resistance1_ComboBox->addItem(QString::number(i));
}
ui->resistance1_ComboBox->setCurrentIndex(4);
//速度,因为训练速度小于2会出现空
for(int i = 2;i <= 55; i++)
{
ui->speed1_ComboBox->addItem(QString::number(i));
}
//预设定值上肢不超10下肢不超15
ui->speed1_ComboBox->setCurrentIndex(8);
//设置初始化按钮样式
// ui->CW1_Button->setStyleSheet("width: 140px;\nheight: 70px;\nbackground: #05A6EC;\nbox-shadow: 0px 3px 6px 0px rgba(12,49,153,0.59);\nborder-radius: 8px;\nborder: 2px solid #05A6EC;\n\nfont-size: 34px;\n\nfont-weight: 500;\ncolor: #FFFFFF;\nline-height: 51px;\nline-height: 51px;\ntext-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;\n-webkit-background-clip: text;\n-webkit-text-fill-color: transparent;");
//ui->ACW1_Button->setStyleSheet("width: 140px;\nheight: 70px;\nbackground: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);\nborder-radius: 8px;\nborder: 2px solid #B3D7E7;\n\nfont-size: 30px;\n\nfont-weight: 400;\ncolor: #333333;\nline-height: 45px;");
}
void TrainingParamSetting::slotBicycleParamChanged(ST_BicycleParam st_bicycleParam)
{
qDebug() <<"slotBicycleParamChanged";
if(st_bicycleParam.direction == 0)
ui->ACW1_Button->setChecked(true); //不默认则逆向,0表示逆向
if(st_bicycleParam.spasmLevel == 1)
ui->spasmLow1_Button->setChecked(true);
else if(st_bicycleParam.spasmLevel == 2)
ui->spasmMidd1_Button->setChecked(true);
else if(st_bicycleParam.spasmLevel == 3)
ui->spasmHigh1_Button->setChecked(true);
if(st_bicycleParam.spasmSwitch == 0)
ui->spasmClose1_Button->setChecked(false); //不默认则关闭0代表关闭
else if(st_bicycleParam.spasmSwitch == 1)
ui->spasmClose1_Button->setChecked(true);
m_IsImportPrescription = 1;
//时间、速度、阻力
ui->trainTime1_ComboBox->setCurrentIndex(st_bicycleParam.trainTime-1);
ui->resistance1_ComboBox->setCurrentIndex(st_bicycleParam.resistance-1); //从1开始
if(st_bicycleParam.speed < 2) st_bicycleParam.speed = 2;//避免速度为1出现空的
ui->speed1_ComboBox->setCurrentIndex(st_bicycleParam.speed -2); //从2开始
m_saveParamInWidget = true;
}
void TrainingParamSetting::slotResetParam() //已经到了训练管理界面
{
ui->spasmClose1_Button->setChecked(true); //保护打开
//时间
ui->trainTime1_ComboBox->setCurrentIndex(19);
//阻力
ui->resistance1_ComboBox->setCurrentIndex(4);
//速度
ui->speed1_ComboBox->setCurrentIndex(8);
ui->spasmLow1_Button->setChecked(true);
ui->CW1_Button->setChecked(true);
m_saveParamInWidget = false;
}
//1.点击确定保存参数
void TrainingParamSetting::on_confirm_Btn_clicked()
{
m_saveParamInWidget = true;
//收集参数
//训练时间
m_st_bicycleParam.trainTime = ui->trainTime1_ComboBox->currentText().toUInt();
//训练阻力
m_st_bicycleParam.resistance = ui->resistance1_ComboBox->currentText().toInt();
//训练速度
m_st_bicycleParam.speed = ui->speed1_ComboBox->currentText().toInt();
//转向:1为正向0为逆向
if(ui->CW1_Button->isChecked())
m_st_bicycleParam.direction = 1;
else if(ui->ACW1_Button->isChecked())
m_st_bicycleParam.direction = 0;
//痉挛保护
// if(ui->spasmACW2_RadioButton->isChecked())
// st_bicycleParam.spasmType = 0;
if(ui->spasmClose1_Button->isChecked())
m_st_bicycleParam.spasmSwitch = 1; //保护是1
else
m_st_bicycleParam.spasmSwitch = 0; //不保护是0
//痉挛等级
if(ui->spasmLow1_Button->isChecked())
m_st_bicycleParam.spasmLevel = 1;
else if(ui->spasmMidd1_Button->isChecked())
m_st_bicycleParam.spasmLevel = 2;
else if(ui->spasmHigh1_Button->isChecked())
m_st_bicycleParam.spasmLevel = 3;
emit signalTrainParamChanged(m_st_bicycleParam);
//if()
if(m_trainType == 0)
MainWindowPageControl::getInstance()->setCurrentPage(BicycleParamSet_E);
else if(m_trainType == 1)
MainWindowPageControl::getInstance()->setCurrentPage(FesBicycleParamSet_E);
}
//转向:点击正向
void TrainingParamSetting::on_CW1_Button_toggled(bool checked)
{
if(checked)
{
ui->CW1_Button->setStyleSheet("background: #05A6EC;color: #FFFFFF;font-size: 34px;font-weight: 500;line-height: 51px;text-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;border: 2px solid #05A6EC;");
}
else
{
ui->CW1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
}
}
//转向:点击逆向
void TrainingParamSetting::on_ACW1_Button_toggled(bool checked)
{
if(checked)
{
ui->ACW1_Button->setStyleSheet("background: #05A6EC;color: #FFFFFF;font-size: 34px;font-weight: 500;line-height: 51px;text-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;border: 2px solid #05A6EC;");
}
else
{
ui->ACW1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
}
}
//痉挛等级:高
void TrainingParamSetting::on_spasmHigh1_Button_toggled(bool checked)
{
if(checked)
{
ui->spasmHigh1_Button->setStyleSheet("background: #05A6EC;color: #FFFFFF;font-size: 34px;font-weight: 500;line-height: 51px;text-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;border: 2px solid #05A6EC;");
}
else
{
ui->spasmHigh1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
}
}
//痉挛等级:中
void TrainingParamSetting::on_spasmMidd1_Button_toggled(bool checked)
{
if(checked)
{
ui->spasmMidd1_Button->setStyleSheet("background: #05A6EC;color: #FFFFFF;font-size: 34px;font-weight: 500;line-height: 51px;text-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;border: 2px solid #05A6EC;");
}
else
{
ui->spasmMidd1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
}
}
//痉挛等级:低
void TrainingParamSetting::on_spasmLow1_Button_toggled(bool checked)
{
if(checked)
{
ui->spasmLow1_Button->setStyleSheet("background: #05A6EC;color: #FFFFFF;font-size: 34px;font-weight: 500;line-height: 51px;text-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;border: 2px solid #05A6EC;");
}
else
{
ui->spasmLow1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
}
}
//痉挛保护:开关
void TrainingParamSetting::on_spasmClose1_Button_toggled(bool checked)
{
if(checked)
//if(m_turnState)//当前选择状态,就变为不选择
{
ui->spasmClose1_Button->setStyleSheet("border-image:url(:/DependFile/Source/trainPage/protect_on.png);");
ui->spasmMidd1_Button->setCheckable(true);
ui->spasmMidd1_Button->setChecked(true);
ui->spasmMidd1_Button->setStyleSheet("background: #05A6EC;color: #FFFFFF;font-size: 34px;font-weight: 500;line-height: 51px;text-shadow: 0px 3px 6px rgba(12,49,153,0.59), 0px 1px 2px #076D99;border: 2px solid #05A6EC;");
ui->spasmLow1_Button->setCheckable(true);
ui->spasmLow1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
ui->spasmHigh1_Button->setCheckable(true);
ui->spasmHigh1_Button->setStyleSheet("background: linear-gradient(180deg, #EEFEFF 0%, #FCFEFF 100%);font-size: 30px;font-weight: 500;border: 2px solid #B3D7E7;");
}
else
{
ui->spasmClose1_Button->setStyleSheet("border-image:url(:/DependFile/Source/trainPage/protect_off.png);");
ui->spasmMidd1_Button->setCheckable(false);
ui->spasmMidd1_Button->setStyleSheet("background: #E0E0E0;width: 30px;height: 30px;font-size: 30px;font-family: SourceHanSansCN-Regular, SourceHanSansCN;font-weight: 400;color: #B2B2B2;line-height: 45px;-webkit-background-clip: text;-webkit-text-fill-color: transparent;");
ui->spasmLow1_Button->setCheckable(false);
ui->spasmLow1_Button->setStyleSheet("background: #E0E0E0;width: 30px;height: 30px;font-size: 30px;font-family: SourceHanSansCN-Regular, SourceHanSansCN;font-weight: 400;color: #B2B2B2;line-height: 45px;-webkit-background-clip: text;-webkit-text-fill-color: transparent;");
ui->spasmHigh1_Button->setCheckable(false);
ui->spasmHigh1_Button->setStyleSheet("background: #E0E0E0;width: 30px;height: 30px;font-size: 30px;font-family: SourceHanSansCN-Regular, SourceHanSansCN;font-weight: 400;color: #B2B2B2;line-height: 45px;-webkit-background-clip: text;-webkit-text-fill-color: transparent;");
}
}
/*
void TrainingParamSetting::on_spasmClose1_Button_clicked()
{
if(ui->spasmClose1_Button->isChecked())
//if(m_turnState)//当前选择状态,就变为不选择
{
ui->spasmClose1_Button->setStyleSheet("border-image:url(:/DependFile/Source/trainPage/protect_off.png);");
}
else
{
ui->spasmClose1_Button->setStyleSheet("border-image:url(:/DependFile/Source/trainPage/protect_on.png);");
}
// m_turnState = ! m_turnState;
}
*/
//点击上升高度
/*
void TrainingParamSetting::on_upSpeedPlus_Btn_clicked()
{
if(!IceModule::getInstance()->getEmergencyState())
CCommunicateAPI::getInstance()->sendRealTimeParam(TUIGAN_UPDOWN,1);
}
//点击下降高度
void TrainingParamSetting::on_upSpeedMinus_Btn_clicked()
{
if(!IceModule::getInstance()->getEmergencyState())
CCommunicateAPI::getInstance()->sendRealTimeParam(TUIGAN_UPDOWN,2);
}
*/
//单肢速度设置:需要修改
void TrainingParamSetting::on_speed1_ComboBox_currentTextChanged(const QString &arg1)
{
int speed = arg1.toInt();
if(speed > 30)
{
ParamTipsDialog tipDialog;
tipDialog.setParamTipsMsg(tr("设定速度已超30r/min确认使用该速度训练吗"));
tipDialog.exec();
if(0 == tipDialog.getResult())
{
ui->speed1_ComboBox->setCurrentIndex(28);
return;
}
}
}
//按住按钮升高
void TrainingParamSetting::on_upSpeedPlus_Btn_pressed()
{
if(!IceModule::getInstance()->getEmergencyState())
CCommunicateAPI::getInstance()->sendRealTimeParam(TUIGAN_UPDOWN,1);
qDebug() <<"发送时间:"<< QDateTime::currentDateTime();
}
//按住按钮降低
void TrainingParamSetting::on_upSpeedMinus_Btn_pressed()
{
if(!IceModule::getInstance()->getEmergencyState())
CCommunicateAPI::getInstance()->sendRealTimeParam(TUIGAN_UPDOWN,2);
qDebug() <<"发送时间:"<< QDateTime::currentDateTime();
}