#ifndef ITEMSMANAGE_H
#define ITEMSMANAGE_H

#include "paraitem.h"
#include "outctrlitem.h"
#include "shortcutitem.h"
#include "assistitem.h"
#include "patternsetitem.h"
#include "parasetitem.h"
#include "embfunctionitem.h"
#include "sensoritem.h"
#include "errorcodestateitem.h"
#include "main.h"
#include <QCoreApplication>
#include <QTextCodec>

//添加快捷功能item
ShortCutItem makeAShortCutItem(int macType,int showPriority,
                      QString name,QString topImageName,
                      int enumFunction);

//添加辅助功能item
AssistItem makeAAssistItem(int macType,int showPriority,
                      QString name,QString topImageName,
                      int enumFunction);

//花样设置功能item
PatternSetItem makeAPatternSetItem(int macType,int showPriority,
                      QString name,QString topImageName,
                      int enumFunction);

//参数设置功能item
ParaSetItem makeAParaSetItem(int macType,int showPriority,
                      QString name,QString topImageName,
                      int paraType);

//刺绣功能item
EmbFunctionItem makeAEmbFunItem(int macType,int showPriority,
                      QString name,QString topImageName,
                      int enumFunction);

//传感器信号item
SensorItem makeASensorItem(int byte,int bit,QString name,int type = -1);

//错误代码/状态item
ErrorCodeStateItem makeAErrorStateItem(int code,QString name);

//添加控制动作item
OutCtrlItem makeAOutCtrlItem(int macType,int showPriority,QString name,int def,
                             QString btn1Str,bool btn1Visible,
                             int btn1ClickFun,int btn1PreFun,int btn1RelFun,
                             QString btn2Str,bool btn2Visible,
                             int btn2ClickFun,int btn2PreFun,int btn2RelFun,
                             QString btn3Str,bool btn3Visible,
                             int btn3ClickFun,int btn3PreFun,int btn3RelFun,
                             QString btn4Str,bool btn4Visible,
                             int btn4ClickFun,int btn4PreFun,int btn4RelFun,
                             QString btn5Str,bool btn5Visible,
                             int btn5ClickFun,int btn5PreFun,int btn5RelFun);


//添加参数item
ParaItem makeAParaItem(
        int64_t mcenSel,            /* 机型选择 */
        int     paraType,           /* 参数类型(机器参数、工作参数、花样设置参数...) */
        int     paraTypeSort,       /* 参数类型分类(机器参数的速度参数、机器参数的动作参数...) */
        int     indexInPara,        /* 参数索引，-1，提示型显示; >= 0，该条目在参数中的位置*/
        int     bitInWord,          /* 参数位索引 */
        int     readonly,           /* 只读标志 */
        int     valueType,          /* 参数值类型 = 0, 无值; = 1, 数字输入型; = 2, 开关选择型; = 3, 列表选择; = 4, 字符输入型*/

        QString paraName,           /* 参数名称 */

        int64_t value,              /* int输入型或选择型参数值 */
        int64_t minval,             /* int输入型参数值范围下限 */
        int64_t maxval,             /* int输入型参数值范围上限 */
        int64_t defvalue,           /* int输入型或选择型默认参数值 */
        int     afterpoint,         /* int输入型保留小数位数 */
        QString unitstr,            /* int输入型单位字符串 */
        QString valuestr,           /* 字符输入型参数字符串 */

        QString selList,            /* 列表选择型的参数列表, 通过"\n"来分割 */
        int     selIdx,             /* 当前选择项索引 */
        int     defIdx,             /* 默认选择项索引 */

        int     showPriority,       /* 显示优先级 */
        int     authority           /* 参数权限 */
        );



//比较参数优先级
bool comparePriority(const ParaItem & item1, const ParaItem & item2);

//各个机型通用参数
void initSoftwareParasList(QList <ParaItem> & parasList);//软件参数
void initTimeParasList(QList <ParaItem> & parasList);//时间设置参数
void initEmbCommonFunParasList(QList <ParaItem> & parasList);//绣花机常用功能参数
void initNetworkParasList(QList <ParaItem> & parasList);//网络管理参数
void initRootHMIConfigurationList(QList <ParaItem> & parasList);//界面配置参数
void initRootIOTConfigurationList(QList <ParaItem> &parasList); //物联网配置参数
#endif // ITEMSMANAGE_H
