123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #pragma once
- #include <QWidget>
- #include "ui_WindowAppTaskView.h"
- #include "Common.h"
- /// <summary>
- /// 用于显示和管理执行任务的视图
- /// </summary>
- class WindowAppTaskView : public QWidget
- {
- Q_OBJECT
- public:
- WindowAppTaskView(const QString& strTitle, QWidget* parent = nullptr);
- ~WindowAppTaskView();
- //// 绑定本视图对应的Task数据结构
- // void bindTask(const TASK& newTask);
- // 根据用户选择的初始化参数构建新的任务,并向TaskManager注册
- void addNewTask(const TASK_OPTION& option);
- // 直接根据Task指针直接生成任务
- void addNewTask(TASK* newTask);
- // 为Task添加对应的Pou
- void addTaskPous(const QVector<POU*>& selPous);
- // 为Task中的Pou添加Tool
- void addTaskPouTool(const POU* pPou, const TOOL* pTool);
- // 添加 Task 的内部变量到系统全局变量组
- void addTaskVarToSystemGvl(const TASK* pTask);
- // 从系统全局变量组删除 Task 的内部变量
- void delTaskVar(const TASK* pTask);
- // 2022-3-5增加,Pou界面中删除了Tool的时候,Task需要同步
- void onDelPouTool(const POU* pPou, const TOOL* pTool);
- // 2022-3-5增加,Pou界面中调整了Tool顺序的时候,Task需要同步
- void onMovePouTool(const POU* pPou);
- // 响应刷新界面的各种信号
- public slots:
- // 根据最新的执行结果刷新界面
- void updateAllTables(const POU* pRunningPou, const TOOL* pRunningTool);
- // 刷新Task表格中的对应行
- void updateTaskTable();
- // 刷新Pou表格
- void updatePouTable(const POU* pRunningPou);
- // 刷新Tool表格
- void updateToolTable(const TOOL* pRunningTool);
- // 单独更新Task状态
- void updateTaskStatus();
- // 单独更新Pou状态
- void updatePouStatus(const POU* pRunningPou);
- // 单独更新Tool状态
- void updateToolStatus(const POU* pPou, const TOOL* pRunningTool);
- private:
- Ui::WindowAppTaskView ui;
- private:
- // UI元素初始化
- void initUI();
- // 初始化Pou表格
- void initPouTable();
- // 初始化工具栏
- void initToolBar();
- // 初始化Tab页面
- void initTab();
- // 初始化Tab里的Table
- QTableWidget* initToolTable(const QString& strPouName);
-
- // 添加新的Pou Tab
- void addNewTab(POU* pPou);
- // 添加Tool信息到Tab表格
- void addNewTabTool(QTableWidget* pTable, const TOOL* pTool);
- // 删除Tab表格中的Tool信息
- void delTabTool(QTableWidget* pTable, const TOOL* pTool);
- // 交换两行的数据
- void swapRows(int selectRow, int targetRow);
- private slots:
- // Add Pou
- void onAddPou();
- // Delete Pou
- void onDelPou();
- // Move up
- void onMoveUp();
- // Move Down
- void onMoveDown();
- // Option
- void onOption();
- // Runonce
- void onRunonce();
- // 调整大小的消息中改变表格栏的宽度
- virtual void resizeEvent(QResizeEvent* event) override;
- // 当双击一行的时候跳转到对应的Pou页面
- void onDoubleClickedTableRow(int nRow, int nCol);
- private:
- // 本Task分组的名称
- QString m_strTitle;
- // 本视图的Task数据结构
- TASK* m_pTask;
- //// 选中的Pou
- //QVector<PouManager*> m_selPous;
- // Task界面工具栏
- QToolBar* m_TaskToolbar;
- // Pou的Tool执行监控表格
- QVector<QTableWidget*> m_TabTables;
- // 表格中的Pou序号和Tab的序号对应关系
- //(因为尚未找到如何调整Tab的标签页顺序所以不得不这样
- // 否则Pou表格中Moveup Movedown之后和下面Tab标签index就对应不上了)
- QMap<int, int> m_RowIndexs;
- // 每一个Tool对应的表格指针
- QHash<const TOOL*, QVector<QTableWidgetItem*>> m_toolToTableWidgetItems;
- // 每一个Pou对应的表格指针
- QHash<QString, QVector<QTableWidgetItem*>> m_pouToTableWidgetItems;
- // 每一个Pou对应的Tool Table(用于Pou添加工具时向TaskView中同步)
- QHash<QString, QTableWidget*> m_pouToTables;
- //// 表格中的Tool和行数对应关系(用于删除)
- //QHash<const TOOL*, int> m_toolToTableRow;
- signals:
- // 刷新Task表格中的对应行
- void sigUpdateTaskTable();
- // 单独更新Task状态
- void sigUpdateTaskStatus();
- // 根据最新的执行结果刷新界面
- void sigUpdateAllTables(const POU*,const TOOL*);
- // 刷新Pou表格
- void sigUpdatePouTable(const POU* pRunningPou);
- // 单独更新Pou状态
- void sigUpdatePouStatus(const POU* pRunningPou);
- // 单独更新Tool状态
- void sigUpdateToolStatus(const POU* pPou, const TOOL* pRunningTool);
- };
|