/********************************************************************** * @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