2024-11-25 17:15:44 +08:00
|
|
|
|
#include "titlewidget.h"
|
|
|
|
|
#include "ui_titlewidget.h"
|
|
|
|
|
#include <QPixmap>
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
#include <wlanapi.h>
|
|
|
|
|
#include "mainwindowpagecontrol.h"
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
#include <QDir>
|
|
|
|
|
#include "icemodule.h"
|
|
|
|
|
#include "ccommunicateapi.h"
|
|
|
|
|
#include "currentuserdata.h"
|
|
|
|
|
#include "loginwidget.h"
|
|
|
|
|
|
|
|
|
|
TitleWidget::TitleWidget(QWidget *parent) :
|
|
|
|
|
QWidget(parent),
|
|
|
|
|
ui(new Ui::TitleWidget),
|
|
|
|
|
checkTimer(nullptr)
|
|
|
|
|
{
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
connect(ui->back1_Btn,SIGNAL(clicked()),this,SLOT(slotBackClicked()));
|
|
|
|
|
connect(ui->back2_Btn,SIGNAL(clicked()),this,SLOT(slotBackClicked()));
|
|
|
|
|
|
|
|
|
|
ui->user_Btn->setIcon(QIcon(":/DependFile/Source/User/user1.png"));
|
|
|
|
|
ui->user_Btn->setIconSize(QSize(40,40));
|
|
|
|
|
|
|
|
|
|
setBackBtnVisible(false);
|
|
|
|
|
|
|
|
|
|
checkTimer = new QTimer();
|
|
|
|
|
checkTimer->setInterval(3000);
|
|
|
|
|
connect(checkTimer,SIGNAL(timeout()),this,SLOT(slotCheckTimer()));
|
|
|
|
|
checkTimer->start();
|
|
|
|
|
|
|
|
|
|
connect(CCommunicateAPI::getInstance(),SIGNAL(signalCommunicateChanged(QString)),this,SLOT(slotStateChanged(QString)));
|
|
|
|
|
|
|
|
|
|
ui->signal_Label->setVisible(false);
|
|
|
|
|
ui->wifiSignal2_Label->setVisible(true);
|
2024-11-26 09:14:39 +08:00
|
|
|
|
ui->brainSignal_Labe->move(1550,30);
|
|
|
|
|
ui->sound_Button->move(1480,30);
|
2024-11-25 17:15:44 +08:00
|
|
|
|
|
|
|
|
|
ui->wifiSignal_Label->move(1620,30);
|
|
|
|
|
|
2024-11-26 09:14:39 +08:00
|
|
|
|
|
2024-11-25 17:15:44 +08:00
|
|
|
|
ui->title_Label->setText(tr("功能选择")); //默认汉字
|
|
|
|
|
|
|
|
|
|
ui->quit_Btn->setVisible(false);
|
|
|
|
|
ui->back1_Btn->setVisible(true);
|
|
|
|
|
ui->back2_Btn->setVisible(true);
|
|
|
|
|
|
|
|
|
|
m_soundDialog = new SoundDialog();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TitleWidget::~TitleWidget()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if(m_soundDialog)
|
|
|
|
|
{
|
|
|
|
|
delete m_soundDialog;
|
|
|
|
|
}
|
|
|
|
|
delete ui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TitleWidget::slotBackClicked()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
int currentPage = MainWindowPageControl::getInstance()->getCurrentPageIndex();
|
|
|
|
|
if(!(currentPage>=MainPage_E && currentPage <=visionTrain))
|
|
|
|
|
currentPage = MainPage_E;//初始化异常值276795792,设置当前页索引为0
|
|
|
|
|
qDebug()<<"当前页"<<currentPage;
|
|
|
|
|
switch(currentPage)
|
|
|
|
|
{
|
|
|
|
|
case MainPage_E:
|
|
|
|
|
{
|
|
|
|
|
LoginWidget login;//
|
|
|
|
|
login.setWindowModality(Qt::WindowModal);//
|
|
|
|
|
login.exec(); //
|
|
|
|
|
// MainWindowPageControl::getInstance()->setCurrentPage(LoginPage_E);
|
|
|
|
|
// qDebug()<<"开始跳转";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case BrainTraining:
|
|
|
|
|
case UserPage_E:
|
|
|
|
|
case SettingPage_E:
|
|
|
|
|
case BicycleParamSet_E:
|
|
|
|
|
case FesBicycleParamSet_E:
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(MainPage_E);
|
|
|
|
|
break;
|
|
|
|
|
case FesParamSet_E:
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
//分两种情况
|
|
|
|
|
switch(m_trainType)
|
|
|
|
|
{
|
|
|
|
|
case 0://1、直接选择的FES训练跳到主界面
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(MainPage_E);
|
|
|
|
|
break;
|
|
|
|
|
case 1://2、从踏车界面跳转到FES界面,跳到踏车界面
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(BicycleParamSet_E);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case BicycleToFes_E:
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(FesBicycleParamSet_E);
|
|
|
|
|
break;
|
|
|
|
|
case TrainingParamSetting_E:
|
|
|
|
|
{
|
|
|
|
|
if(m_trainType == 0)
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(BicycleParamSet_E);
|
|
|
|
|
else if(m_trainType == 1)
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(FesBicycleParamSet_E);
|
|
|
|
|
|
|
|
|
|
//qDebug() <<"Hello";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case visionTrain:
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(BrainTraining);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//设置当前用户
|
|
|
|
|
void TitleWidget::setUser(const ST_PatientMsg& st_patientMsg)
|
|
|
|
|
{
|
|
|
|
|
ui->user_Btn->setText(st_patientMsg.name);
|
|
|
|
|
}
|
|
|
|
|
//设置wifi信号强度
|
|
|
|
|
void TitleWidget::setSignalStrength(int value)
|
|
|
|
|
{
|
|
|
|
|
Q_UNUSED(value)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//设置标题
|
|
|
|
|
void TitleWidget::setTitleByPage(E_PAGENAME pageType)
|
|
|
|
|
{
|
|
|
|
|
QString title;
|
|
|
|
|
switch(pageType)
|
|
|
|
|
{
|
|
|
|
|
case MainPage_E:
|
|
|
|
|
title = tr("功能选择");
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
ui->quit_Btn->setVisible(false);
|
|
|
|
|
//只修改pageIndex,不发送槽函数
|
|
|
|
|
MainWindowPageControl::getInstance()->setPageIndex(MainPage_E);
|
|
|
|
|
break;
|
|
|
|
|
case TrainingPage_E:
|
|
|
|
|
title = tr("");//上肢、下肢、四肢训练
|
|
|
|
|
setBackBtnVisible(false);
|
|
|
|
|
ui->quit_Btn->setVisible(false);
|
|
|
|
|
break;
|
|
|
|
|
case UserPage_E:
|
|
|
|
|
title = tr("用户管理");
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
break;
|
|
|
|
|
case SettingPage_E:
|
|
|
|
|
title = tr("软件设置");
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
break;
|
|
|
|
|
case BicycleParamSet_E:
|
|
|
|
|
title = tr("参数设置");
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
break;
|
|
|
|
|
case FesParamSet_E:
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
title = tr("FES参数");
|
|
|
|
|
break;
|
|
|
|
|
case FesBicycleParamSet_E:
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
title = tr("踏车参数");
|
|
|
|
|
break;
|
|
|
|
|
case TrainingParamSetting_E:
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
title = tr("参数设置");
|
|
|
|
|
break;
|
|
|
|
|
case BrainTraining:
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
title = tr("脑控康复");
|
|
|
|
|
break;
|
|
|
|
|
case visionTrain:
|
|
|
|
|
setBackBtnVisible(true);
|
|
|
|
|
title = tr("视觉脑机康复训练");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
ui->title_Label->setText(title);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::setTrainType(int8_t type)
|
|
|
|
|
{
|
|
|
|
|
m_trainType = type;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::on_user_Btn_clicked()
|
|
|
|
|
{
|
|
|
|
|
MainWindowPageControl::getInstance()->setCurrentPage(UserPage_E);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::slotCheckTimer()
|
|
|
|
|
{
|
|
|
|
|
showWIFI();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::showWIFI()
|
|
|
|
|
{
|
|
|
|
|
#if 0
|
|
|
|
|
DWORD dwError = ERROR_SUCCESS;
|
|
|
|
|
DWORD dwNegotiatedVersion;
|
|
|
|
|
HANDLE hClientHandle = NULL;
|
|
|
|
|
dwError = WlanOpenHandle(1, NULL, &dwNegotiatedVersion, &hClientHandle);
|
|
|
|
|
if (dwError != ERROR_SUCCESS)
|
|
|
|
|
{
|
|
|
|
|
WlanCloseHandle(hClientHandle,NULL);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
PWLAN_INTERFACE_INFO_LIST pInterfaceList = NULL;
|
|
|
|
|
dwError = WlanEnumInterfaces(hClientHandle, NULL,&pInterfaceList);
|
|
|
|
|
if ( dwError != ERROR_SUCCESS )
|
|
|
|
|
{
|
|
|
|
|
WlanFreeMemory(pInterfaceList);
|
|
|
|
|
WlanCloseHandle(hClientHandle,NULL);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GUID &guid = pInterfaceList->InterfaceInfo[0].InterfaceGuid;
|
|
|
|
|
PWLAN_AVAILABLE_NETWORK_LIST pWLAN_AVAILABLE_NETWORK_LIST = NULL;
|
|
|
|
|
|
|
|
|
|
dwError = WlanGetAvailableNetworkList(hClientHandle, &guid,
|
|
|
|
|
2,NULL, &pWLAN_AVAILABLE_NETWORK_LIST);
|
|
|
|
|
if (dwError != ERROR_SUCCESS)
|
|
|
|
|
{
|
|
|
|
|
WlanFreeMemory(pInterfaceList);
|
|
|
|
|
WlanFreeMemory(pWLAN_AVAILABLE_NETWORK_LIST);
|
|
|
|
|
WlanCloseHandle(hClientHandle,NULL);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
WLAN_AVAILABLE_NETWORK wlanAN;
|
|
|
|
|
bool isConnected=false;
|
|
|
|
|
int numberOfItems = pWLAN_AVAILABLE_NETWORK_LIST->dwNumberOfItems;
|
|
|
|
|
if (numberOfItems > 0)
|
|
|
|
|
{
|
|
|
|
|
for(int i = 0; i <numberOfItems; i++)
|
|
|
|
|
{
|
|
|
|
|
wlanAN = pWLAN_AVAILABLE_NETWORK_LIST->Network[i];
|
|
|
|
|
if(wlanAN.dwFlags & 1)
|
|
|
|
|
{
|
|
|
|
|
isConnected=true;
|
|
|
|
|
|
|
|
|
|
int wifiQuality=(int)wlanAN.wlanSignalQuality;
|
|
|
|
|
|
|
|
|
|
if(wifiQuality>75)
|
|
|
|
|
{
|
|
|
|
|
QPixmap pixmapWireless(":/DependFile/Source/signal/wifi3.png");
|
|
|
|
|
ui->wifiSignal_Label->setPixmap(pixmapWireless);
|
|
|
|
|
}
|
|
|
|
|
else if(wifiQuality>50&&wifiQuality<=75)
|
|
|
|
|
{
|
|
|
|
|
QPixmap pixmapWireless(":/DependFile/Source/signal/wifi2.png");
|
|
|
|
|
ui->wifiSignal_Label->setPixmap(pixmapWireless);
|
|
|
|
|
}
|
|
|
|
|
else if(wifiQuality>25&&wifiQuality<=50)
|
|
|
|
|
{
|
|
|
|
|
QPixmap pixmapWireless(":/DependFile/Source/signal/wifi1.png");
|
|
|
|
|
ui->wifiSignal_Label->setPixmap(pixmapWireless);
|
|
|
|
|
}
|
|
|
|
|
else if(wifiQuality>0&&wifiQuality<=25)
|
|
|
|
|
{
|
|
|
|
|
QPixmap pixmapWireless(":/icons/WirelessIcon3.png");
|
|
|
|
|
ui->wifiSignal_Label->setPixmap(pixmapWireless);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!isConnected)
|
|
|
|
|
{
|
|
|
|
|
QPixmap pixmapWireless(":/icons/WirelessIcon4.png");
|
|
|
|
|
ui->wifiSignal_Label->setPixmap(pixmapWireless);
|
|
|
|
|
}
|
|
|
|
|
WlanFreeMemory(pInterfaceList);
|
|
|
|
|
WlanFreeMemory(pWLAN_AVAILABLE_NETWORK_LIST);
|
|
|
|
|
WlanCloseHandle(hClientHandle,NULL);
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
QPixmap pixmap;
|
|
|
|
|
|
|
|
|
|
if(IceModule::getInstance()->getBicycleDeviceState())
|
|
|
|
|
{
|
|
|
|
|
pixmap.load(":/DependFile/Source/signal/deviceConnected.png");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
pixmap.load(":/DependFile/Source/signal/deviceDisconnected.png");
|
|
|
|
|
|
|
|
|
|
ui->wifiSignal_Label->setPixmap(pixmap);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::setBackBtnVisible(bool visible)
|
|
|
|
|
{
|
|
|
|
|
ui->back1_Btn->setVisible(visible);
|
|
|
|
|
ui->back2_Btn->setVisible(visible);
|
|
|
|
|
|
|
|
|
|
ui->quit_Btn->setVisible(!visible);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::on_quit_Btn_clicked()
|
|
|
|
|
{
|
|
|
|
|
emit signalCloseWindow();
|
|
|
|
|
//MainWindowPageControl::getInstance()->setCurrentPage(LoginPage_E);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::slotStateChanged(QString str)
|
|
|
|
|
{
|
|
|
|
|
ui->state_label->setText(str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::slotSaveUpPicture()
|
|
|
|
|
{
|
|
|
|
|
QPixmap upPicture = this->grab();
|
|
|
|
|
QString dirPath = QApplication::applicationDirPath() + "/DependFile/Source/trainDisplayPage";
|
|
|
|
|
QDir resultDir(dirPath);
|
|
|
|
|
if(!resultDir.exists())
|
|
|
|
|
qDebug()<<"保存图片失败";
|
|
|
|
|
if(upPicture.save(dirPath + "/upPicture.png"))
|
|
|
|
|
qDebug() <<dirPath + "/upPicture.png";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TitleWidget::changeEvent(QEvent* event)
|
|
|
|
|
{
|
|
|
|
|
switch (event->type())
|
|
|
|
|
{
|
|
|
|
|
case QEvent::LanguageChange:
|
|
|
|
|
ui->retranslateUi(this);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
QWidget::changeEvent(event);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
setUser(CurrentUserData::getInstace()->getCurrentPatientMsg());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TitleWidget::on_sound_Button_clicked()
|
|
|
|
|
{
|
|
|
|
|
m_soundDialog->show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|