#pragma once
#include "Common.h"
#include "ui_WindowAppVariableTable.h"
///
/// 用来处理变量显示和交互逻辑的表格
///
class WindowAppVariableTable : public QTableWidget
{
Q_OBJECT
public:
WindowAppVariableTable(QWidget *parent = Q_NULLPTR);
~WindowAppVariableTable();
public:
// 初始化变量表格
void initTable(const QString& strGroup, GVL_MODE gvlMode = GVL_MODE::GVL_BASIC);
// 按标准模式初始化变量表格Header
void initStandardTableHeader();
// 按DB模式初始化变量表格Header
void initDBTableHeader();
// 表格中添加新的一行(标准/普通模式)
int insertTableLine(
bool bSerialized,
QString strName,
QString strFullName,
QString strType,
QString strValue,
QString strComment
);
// 表格中添加新的一行(DB模式)
int insertTableLine(
QString strName,
QString strFullName,
QString strType,
QString strValue,
QString strCommAddress,
VPEnum::GVL_ACCESS_MODE accessMode,
QString strComment
);
//// 添加全局变量(界面录入方式)
//void addGlobalVariable(
// bool bSerialized,
// QString strName,
// QString strType,
// QString strValue,
// QString strComment
// );
//// 添加全局变量(序列化方式)
//void addGlobalVariable( const VARIABLE& newVar);
//// 添加局部变量
//void addLocalVariable(
// bool bSerialized,
// QString strName,
// QString strType,
// QString strValue,
// QString strComment
//);
// 更新表格中指定变量的值
void updateTableValue(const QString& strVarFullName, const QString& strNewValue);
//// 将指定的表格设置为错误状态
//void setItemError(int row, int col);
//// 将指定的表格设置为正常状态
//void setItemOK(int row, int col);
//// Toolbar - New
//void onToolNew();
// Toolbar - MoveUp
void onVariableMoveUp();
// Toolbar - MoveDown
void onVariableMoveDown();
// Toolbar - Delete
void onVariableDelete();
// 交换两行的数据
void swapRows(int selectRow, int targetRow);
//// 设置分组名称
//void setTitle(const QString& strTitle)
//{
// this->m_strTitle = strTitle;
//}
private slots:
//// 当Type下拉框改变时
//void onTableTypeChanged(int nIndex);
// 当Serialized状态发生改变时
void onTableSerializedChanged(bool bChecked);
// 当表格单元改变时
void onTableCellChanged(int row, int col);
// 调整大小的消息中改变表格栏的宽度
virtual void resizeEvent(QResizeEvent* event) override;
private:
Ui::WindowAppVariableTable ui;
//private:
//
// // 表格中添加一行
// void addNewLine(
// bool bSerialized,
// QString strName,
// QString strType,
// QString strValue,
// QString strComment,
// TOOL_TYPE varType
// );
private:
// 用来保存表格中插入的控件及其对应的序号,否则获取不到
QHash m_cellCheckbox;
// 上一次输入的Value值和Comment值(用于处理消息被重复多次触发)
QVector m_LastValues;
// 变量全名和表格行数的对应关系
QHash m_VariablesRows;
// 本Gvl分组的名称
QString m_strGroup;
// 本Gvl分组的模式(用于切换编辑和不可编辑,以及表格头目)
GVL_MODE m_gvlMode;
};