You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

216 lines
6.1 KiB
C++

/**********************************************************************
* @file ToolBarAnimation.h
* @brief 动画播放工具条
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-10
*********************************************************************/
#ifndef _ToolBarAnimation_H
#define _ToolBarAnimation_H
#include "GUIWidgetAPI.h"
#include "ToolBarBase.h"
#include "FITK_Kernel/FITKCore/FITKThreadTask.h"
class QSpinBox;
class QLabel;
class QStringList;
namespace Interface {
class FITKAbstractCFDPostData;
}
namespace GUI
{
class GUISpinBox;
class AnimationThread;
/**
* @brief 动画播放工具条
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
class GUIWidgetAPI ToolBarAnimation : public ToolBarBase
{
Q_OBJECT;
public:
/**
* @brief 构造函数
* @param[i] parent 父对象
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
ToolBarAnimation(QWidget* parent = nullptr);
/**
* @brief 析构函数
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
~ToolBarAnimation();
/**
* @brief 更新渲染对象
* @param[i] objID 渲染对象id
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
virtual void updateCurrentGraphObj(int objID) override;
/**
* @brief 更新界面
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void updateWidget();
private slots:
;
/**
* @brief 初始时间步点击事件
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void slotFirstFrame();
/**
* @brief 上一时间步点击事件
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void slotPreviousFrame();
/**
* @brief 动画播放点击事件
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void slotRunAnimation();
/**
* @brief 下一时间步点击事件
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void slotNextFrame();
/**
* @brief 最后时间步点击事件
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void slotLastFrame();
/**
* @brief 时间步修改事件
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-11
*/
void slotStepChange();
void slotAniReadSuccess(int index);
void slotAniReadFinish();
private:
/**
* @brief 寻找根父对象数据id
* @param[i] id 当前数据对象id
* @return int 多时间步数据对象id
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-27
*/
int findRootParentID(int id);
private:
GUISpinBox* _stepSpinBox = nullptr;
QLabel* _stepLabel = nullptr;
QAction* _actionFirst = nullptr;
QAction* _actionPrevious = nullptr;
QAction* _actionRun = nullptr;
QAction* _actionNext = nullptr;
QAction* _actionLast = nullptr;
bool _isStop = true;
AnimationThread* _aniThread = nullptr;
};
//----------------------------------------------------------------------------------------------------
/**
* @brief 导入文件读取线程
* @author BaGuijun (baguijun@163.com)
* @date 2024-08-14
*/
class AnimationThread :public Core::FITKThreadTask
{
Q_OBJECT;
public:
/**
* @brief Construct a new Import Read Thread object
* @author BaGuijun (baguijun@163.com)
* @date 2024-08-14
*/
AnimationThread(QStringList files, int dataID);
/**
* @brief Destroy the Import Read Thread object
* @author BaGuijun (baguijun@163.com)
* @date 2024-08-14
*/
~AnimationThread() = default;
/**
* @brief 设置当前的索引
* @param[i] index 当前索引
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-19
*/
void setCurrentIndex(int index);
/**
* @brief 设置是否终止
* @param[i] isStop 是否终止
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-19
*/
void setIsStop(bool isStop);
/**
* @brief 设置是否暂停
* @param[i] isPause 是否暂停
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-19
*/
void setIsPause(bool isPause);
/**
* @brief 执行函数
* @author BaGuijun (baguijun@163.com)
* @date 2024-08-14
*/
void run();
signals:
;
void sigReadSuccess(int index);
/**
* @brief 导入完成信号
* @author BaGuijun (baguijun@163.com)
* @date 2024-08-14
*/
void sigImportFinish();
public:
/**
* @brief 文件名称
* @author BaGuijun (baguijun@163.com)
* @date 2024-08-14
*/
QStringList _files = {};
/**
* @brief 数据对象id
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-18
*/
int _dataID = -1;
/**
* @brief 当前索引
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-19
*/
int _currentIndex = -1;
/**
* @brief 是否暂停
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-19
*/
bool _isStop = false;
/**
* @brief 设置是否暂停
* @author BaGuijun (baguijun@163.com)
* @date 2024-09-19
*/
bool _isPause = false;
};
}
#endif