2024-05-21 19:45:15 +08:00

150 lines
4.6 KiB
C++

/*
* 说明: 轨迹回放工具主界面
*
* 作者: 杨海洋
* 日期: 2023-05-26
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "HToolkit.h"
#include "IToolkit.h"
#include "HReplay.h"
#include "ReplayWrapper.h"
#include "MenuManage.h"
#include "MapTrackCom.h"
#include "ShowDetail.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow, public IToolkit
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
virtual ~MainWindow();
virtual void init() override;
virtual void uninit() override;
virtual void quitApp() override;
virtual void selectTrackFile() override;
virtual void loadTrackFiles(const QString& dirpath) override;
virtual void mapZoom(int delta) override;
virtual const QIcon& getIcon() override;
virtual ReplayWrapper* getReplay() override;
private:
virtual void letsGo(bool click = true);
virtual void sortFile(QVector<QString>& files);
virtual void loadTrack(QVector<QString>& files, const QString& dirpath);
virtual void setItemProperty(int index, ExamItemCode itemNo);
virtual void updateItemProperty(ExamItemCode itemNo, const QColor& color);
virtual QTextEdit* getItemProperty(int index);
virtual void clearItemProperty();
virtual QTextEdit* findItemProperty(ExamItemCode itemNo);
virtual void updateMarkProperty(const QString& text);
virtual QString getMarkItemText(const TMarkRule& mark);
virtual TMarkRule findMarkItemText(const TKfXm& item);
virtual void updateCarzt(int carzt);
virtual void updateSenser(QLabel* cg, const QString& name, int value);
virtual void updateExamEvent(const QString& text, const QColor& color = KIT_RGB_GREEN);
virtual QString getItemText(ExamItemCode itemNo);
virtual QString itemNoToName(ExamItemCode itemNo);
virtual void quitEvent(QEvent* event);
virtual void playerAudio(std::string markcatalog);
protected:
virtual void closeEvent(QCloseEvent* event) override;
virtual void keyPressEvent(QKeyEvent* event) override;
virtual void mousePressEvent(QMouseEvent *event) override;
signals:
void sig_init();
private slots: //Q_SLOTS
void updateDataImage(const QImage& img);
void updateDataLog(int level, const QByteArray& log);
void updateDataInitExam(const QString& info);
void updateDataBeginExam(const QString& info);
void updateDataRealExam(const QString& info);
void updateDataArtificialMark(int itemno, const QString& serial);
void updateDataArtificialItem(int itemno, int type);
void updateDataCallbackRealExam(const QString& info);
void updateDataCallbackPerform(const QString& info);
void updateDataFrameNum(int num, int total);
void updateNextDoing();
private slots:
void on_btnClearLog_clicked();
void on_btnSelectTrackFile_clicked();
void on_btnRunning_clicked();
void on_btnPause_clicked();
void on_btnScalingSmall_clicked();
void on_btnScalingLarge_clicked();
void on_btnPlaySlow_clicked();
void on_btnPlayFast_clicked();
void on_btnTrackLast_clicked();
void on_btnTrackNext_clicked();
void on_frameNum_editingFinished();
void on_scalingDiploid_editingFinished();
void on_playSpeed_editingFinished();
void on_logLevel_currentIndexChanged(int index);
void on_logCate_currentIndexChanged(int index);
void on_logFilter_editingFinished();
void on_playTimes_editingFinished();
void on_trackFiles_currentIndexChanged(int index);
void on_loop_currentIndexChanged(int index);
void on_replay_currentIndexChanged(int index);
void on_playSlider_sliderPressed();
void on_playSlider_sliderReleased();
void on_playSlider_valueChanged(int value);
void on_initMark_highlighted(int index);
void on_initSysset_highlighted(int index);
void on_initModel_highlighted(int index);
void on_btnArtiMark_clicked();
void on_btnArtiItem_clicked();
void on_artiItems_currentIndexChanged(int index);
//void on_btnSend_clicked();
private:
Ui::MainWindow* m_ui = nullptr;
QThread* m_thread = nullptr;
QIcon m_icon;
int m_outputLogCount = 0;
QString m_logFilter;
ShowDetail* m_detail = nullptr;
XParser* m_parser = nullptr;
ReplayWrapper* m_replay = nullptr;
int m_playTimes = 0;
bool m_loop = false; //是否循环测试跑所有轨迹文件
QString m_logCate;
int m_currGrade = 0;
int m_markGrade = 0;
int m_markTimes = 0;
MenuManage* m_menuManage = nullptr;
MapTrackCom* m_mapCom = nullptr;
IMutex m_mtx;
QMediaPlayer m_audio;
QMediaPlaylist m_audioList;
QAudioOutput m_audioOut;
};
#endif // MAINWINDOW_H