#ifndef PARAITEM_H
#define PARAITEM_H

#include <QObject>
#include <QString>
#include <QStringList>
#include "items/cmdconfig.h"

class ParaItem : public QObject
{
    Q_OBJECT
public:
    explicit ParaItem(QObject *parent = 0);
    ParaItem(const ParaItem & item);
    ~ParaItem();

public:
    ParaItem &operator=(const ParaItem & item);

public:
    void clean();

private:
    void copyData(const ParaItem & item);

public:
    int64_t mcenSel;        // 机型选择
    int     paraType;       // 参数类型(机器参数、工作参数、花样设置参数...)
    int     paraTypeSort;   // 参数类型分类(机器参数的速度参数、机器参数的动作参数...)

    int     indexInPara;    // 参数索引，-1，提示型显示; >= 0，该条目在参数中的位置
    int     bitInWord;      // 参数位索引
    int     readonly;       // 只读标志
    int     valueType;      // 参数值类型 = 0, 无值; = 1, 数字输入型; = 2, 开关选择型; = 3, 列表选择型; = 4, 字符输入型
public:
    QString paraName;       // 参数名称
public:
    int64_t value;          // 数字输入型数值
    int64_t minVal;         // 输入值范围下限
    int64_t maxVal;         // 输入值范围上限
    int64_t defValue;       // 默认值
    int     afterPoint;     // 保留小数位数
    QString unitStr;        // 单位
    QString valueStr;       // 字符输入型字符

public:
    QString selList;        // 列表选择型参数列表,通过"\n"来分割
    int     selIdx;         // 选择项目
    int     defIdx;         // 默认选择
public:
    int     showPriority;   // 显示优先级
    int     authority;      // 参数权限

};

#define PARA_VALUE_TYPE_NONE          0 // 无
#define PARA_VALUE_TYPE_INT           1 // 数值输入型
#define PARA_VALUE_TYPE_SW            2 // 开关型
#define PARA_VALUE_TYPE_LIST          3 // 列表选择型
#define PARA_VALUE_TYPE_STRINPUT      4 // 字符串输入型
#define PARA_VALUE_TYPE_CLICK         5 // 点击触发型

//参数类型(点击触发型的参数种类)
#define	PARA_TYPE_MACH              0x00000001	 // 主控机器参数
#define	PARA_TYPE_WORK              0x00000002	 // 主控工作参数
#define PARA_TYPE_DEF_MC            0x00000004	 // 出厂默认机器配置参数（读取有效）
#define PARA_TYPE_DEF_WK            0x00000008	 // 出厂默认机器工作参数（读取有效）
#define PARA_TYPE_PATTERN           0x00000010   // 花样参数
#define PARA_TYPE_SOFTWARESET       0x00000020   // 软件设置参数
#define PARA_TYPE_TIMESET           0x00000040   // 时间设置参数
#define PARA_TYPE_COMMONFUN         0x00000080   // 常用功能设置参数
#define PARA_TYPE_NETWORKSET        0x00000100   // 网络管理设置参数
#define PARA_TYPE_ROOT              0x00000200   // 超级用户参数
#define PARA_TYPE_ROOTTRAVERSE      0x00000400   // 超级用户遍历参数
#define PARA_TYPE_PATTERNOUTLINE    0x00000800   // 花样轮廓参数
#define PARA_TYPE_PATTERNPATCH_COLOR     0x00001000   // 按色贴布绣参数
#define PARA_TYPE_PATTERNPATCH_NEEDLE    0x00002000   // 按针贴布绣参数
#define PARA_TYPE_SPINDLETEST      0x00004000   //主轴研车参数
#define PARA_TYPE_EMBLOCKTEST      0x00008000   //平绣锁头测试参数
#define PARA_TYPE_EXBUPGRADE       0x00010000   //外围板升级参数
#define PARA_TYPE_HEADPARAMETER    0x00020000   //平绣机头板参数
#define PARA_TYPE_HCPSPARAMETER    0x00040000   //平绣换色板参数
#define PARA_TYPE_HMICONFIGURATION    0x00080000   //界面配置
#define PARA_TYPE_IOTCONFIGURATION   0x00100000   //物联网配置
#define PARA_TYPE_NETWORKSETTINGS   0x00200000    //网络设置
#define PARA_TYPE__ROOT_PATTERN           0x00400000   // 超级用户花样参数(目前用于配置针步补偿)
#define PARA_TYPE_TOWELHEADPARAMETER    0x00800000   //毛巾机头板参数
#define PARA_TYPE_TOWELDEBUG    0x01000000   //毛巾调试参数
#define PARA_TYPE_TOWELHCPSPARAMETER    0x02000000   //毛巾换色板参数
#define PARA_TYPE_COILHEADPARAMETER    0x04000000   //缠绕机头板参数
#define PARA_TYPE_REPEATEMBPARA    0x08000000   //反复绣参数


//参数分类
#define MC_SORT_SPEED         0x00000001	// 速度参数
#define MC_SORT_ACTION        0x00000002	// 动作参数
#define MC_SORT_DETECT       0x00000004	// 检测参数
#define MC_SORT_POSITION      0x00000008	// 位置参数
#define MC_SORT_SETTING        0x00000010    // 设置参数(绣花公用参数)
#define ROOT_SORT_CHENSENSOR   0x00000020    // 缠绕毛巾平绣    机头遍历状态信号参数
#define MC_SORT_DOUBLE_SEQUIN        0x00000040    // 双亮片参数
#define MC_SORT_EMB           0x00000080    // 绣花参数
#define MC_SORT_CHEN         0x00000100    // 毛巾参数
#define MC_SORT_FEED          0x00000200    // 上下料参数
#define MC_SORT_SHUTTLE        0x00000400    // 自动换梭参数
#define MC_SORT_LASER        0x00000800    // 激光参数
#define MC_SORT_CUT        0x00001000  //剪线参数
#define MC_SORT_COIL        0x00002000  //缠绕参数
#define ROOT_SORT_EMBSENSOR  0x00004000 // 平绣机头遍历状态信号参数
#define MC_SORT_BEAD         0x00008000    // 散珠参数
#define MC_SORT_SIMPLETOWEL        0x00010000    // 简易毛巾参数
#define MC_REPEATED    0x00020000 //反复绣参数
#define MC_SORT_EIGHT_SEQUIN        0x00040000    // 八亮片参数//(双亮片和八亮片的配置显示的参数不一样)
#define MC_SORT_TRACKROPR        0x00080000    // 跟踪绳绣参数


#define PATCH_SORT_IDX      0x0001	// 贴布绣针数索引
#define PATCH_SORT_MOVE   0x0002    // 贴布绣针数索引移动距离
#define PATCH_SORT_COLOR   0x0003    // 贴布绣按色

#endif // PARAITEM_H
