XNSim/XNMonitor/SystemStatusWidget/SystemStatusWidget.h

242 lines
5.0 KiB
C
Raw Permalink Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file SystemStatusWidget.h
* @author jinchao
* @brief
* @version 1.0
* @date 2025-03-10
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include <QWidget>
#include <QSplitter>
#include <QTableWidget>
#include <QMutex>
#include "../TypeDefine.h"
#include "SystemInfoUpdateThread.h"
#include "../XNCustomPlot.h"
/**
* @brief
*/
class SystemStatusWidget : public QWidget
{
Q_OBJECT
public:
/**
* @brief
* @param parent
*/
explicit SystemStatusWidget(QWidget *parent = nullptr);
/**
* @brief
*/
~SystemStatusWidget();
/**
* @brief 线
* @param threadID 线ID
* @return 线
*/
QString getThreadName(const quint32 threadID);
public slots:
/**
* @brief
* @param index
*/
void onSetCurrentTabIndex(int index);
/**
* @brief /
*/
void toggleEngineInfo();
/**
* @brief /
*/
void toggleCoreInfo();
/**
* @brief
* @param status
*/
void updateEngineStatus(const unsigned int &status);
/**
* @brief
* @param name
*/
void updateProcessName(const QString &name);
/**
* @brief ID槽函数
* @param id ID
*/
void updateProcessID(const unsigned int &id);
/**
* @brief
* @param index
* @param status
*/
void updateCoreStatus(int index, const unsigned int &status);
/**
* @brief 线
* @param data 线
*/
void updateThreadData(const XNRuntimeData &data);
/**
* @brief 线
* @param count 线
*/
void updateThreadCount(const unsigned int &count);
/**
* @brief CPU亲和性槽函数
* @param affinity CPU亲和性
*/
void updateAffinity(const QString &affinity);
/**
* @brief
* @param pos
*/
void showChartContextMenu(const QPoint &pos);
/**
* @brief
*/
void onShowFrequency();
/**
* @brief
*/
void onShowPeriod();
/**
* @brief
* @param newXData X轴数据
* @param newYData Y轴数据
*/
void updatePlotData(const QVector<double> &newXData, const QVector<double> &newYData);
/**
* @brief 线
*/
void onThreadStatusTableSelectionChanged();
signals:
/**
* @brief
*/
void updateThreadCutomPlotData();
/**
* @brief 线
* @param bActive
*/
void controlThreadInfoThread(bool bActive);
/**
* @brief 线
* @param threadID 线ID
* @param data 线
*/
void updateThreadInfo(unsigned int threadID, const XNRuntimeData &data);
private:
/**
* @brief
*/
void setupTabSystemStatus();
/**
* @brief
* @param splitter
*/
void setupTabSystemStatusLeftPanel(QSplitter *splitter);
/**
* @brief
* @param splitter
*/
void setupTabSystemStatusRightPanel(QSplitter *splitter);
/**
* @brief
*/
void setupSystemStatusChartWidget();
/**
* @brief
*/
void setupSystemStatusTableWidget();
/**
* @brief 线
* @param data 线
* @param rowIndex
*/
void updateThreadTableData(const XNRuntimeData &data, int rowIndex);
/**
* @brief
* @return
*/
QWidget *createEngineInfoPage();
/**
* @brief
* @return
*/
QWidget *createCoreInfoPage();
/**
* @brief 线线
*/
void InitializeThreadInfoThread();
private:
/**
* @brief
*/
int currentTabIndex = 0;
/**
* @brief
*/
int freqOrPeriodIndex = 0;
/**
* @brief
*/
QWidget *engineInfoPage;
/**
* @brief
*/
QWidget *coreInfoPage;
/**
* @brief 线
*/
QTableWidget *threadStatusTableWidget;
/**
* @brief 线
*/
QWidget *systemStatusChartWidget;
/**
* @brief 线
*/
XNCustomPlot *customPlot;
/**
* @brief 线
*/
QVector<XNRuntimeData> threadDataVec;
/**
* @brief XNEngine标签
*/
QLabel *labelXNEngine;
/**
* @brief ID标签
*/
QLabel *labelProcessIDValue;
/**
* @brief
*/
QLabel *labelStatusValue;
/**
* @brief
*/
QLabel *labelAffinityValue;
/**
* @brief 线
*/
QLabel *labelThreadCountValue;
/**
* @brief 线线
*/
SystemInfoUpdateThread *threadInfoThread;
/**
* @brief
*/
QMutex mutex;
};