#ifndef MAIN_H
#define MAIN_H

#include <QImage>
#include <QDesktopWidget>
#include "settings/settings.h"
//#include "Include/machine.h"
#include "machine/machine.h"
#include "machine/lotmachine.h"
//#include "Include/embdata.h"
#include "datafile/embdata.h"

#define	VER_CODE_Y	21
#define	VER_CODE_M	11
#define	VER_CODE_D	12

#define RESOLUTIO_TYPE      2  //屏幕分辨率      1: 1920x1080   2: 1024x600
#define STYPE1     0x00000001
#define STYPE2     0x00000002
#define STYPE3     0x00000004
#define STYPE4     0x00000008
#define STYPE5     0x00000010
#define STYPE6     0x00000020
#define STYPE7     0x00000040
#define STYPE8     0x00000080
#define STYPE9     0x00000100
#define STYPE10   0x00000200

#define NAMEMAXLENGTH    8                      // 字体最大长度
#define LINUXUSBPATH     "/media/usb0/"
#define LINUXFONTPATH   "/usr/lib/fonts/"   //字体目录
#define PATTERNPATH      "datafiles"
#define IMAGE_TYPE       (QImage::Format_ARGB32)
#define PEN_WIDTH        1

//透明背景色，白色前景色
#define LABELWHITESTYLE "background-color: rgba(245, 245, 245, 0);color: rgb(255, 255, 255);"

//透明背景色，白色前景色，带边框(色序设定针杆按钮)
#define BUTTONWHITESTYLE "QPushButton{outline: none;border:1px solid rgb(235,235,235);border-style:inset;border-radius:5px;color: rgb(255, 255, 255);} QPushButton:pressed{background-color: rgba(105, 105, 127);}"

//白色背景色，黑色前景色，带边框(列表界面按钮-动框角度调节)
#define BUTTONSHEETSTYLE "QPushButton{background-color: rgba(245, 245, 245);border:0.5px solid rgb(120,120,120);color: rgb(10, 10, 10);} QPushButton:pressed{background-color: rgba(199, 226, 255);}"

//透明背景色，灰色前景色
#define LABELGREYSTYLE "background-color: rgba(245, 245, 245, 0);color: rgb(78, 78, 78);"

//透明背景色，黑色前景色
#define LABELBLACKSTYLE "background-color: rgba(245, 245, 245, 0);color: rgb(0, 0, 0);"

//透明背景色，红色前景色
#define LABELREDSTYLE "background-color: rgba(245, 245, 245, 0);color: rgb(220, 0, 0);"

//透明背景色，红色前景色   字体很大  font-size:700px;
#define LABELREDSTYLEBROKEN "background-color: rgba(245, 245, 245, 0);color: rgb(220, 0, 0);"

//透明背景色，蓝色前景色   字体很大
#define LABELREDSTYLEBROKENBLUE "background-color: rgba(245, 245, 245, 0);color: rgb(57, 95, 140);"

//透明背景色，深蓝色前景色
#define LABELNAVYBLUESTYLE "background-color: rgba(245, 245, 245, 0);color: rgb(57, 95, 140);"

//透明色、无焦点、无边框
#define TRANSPARENTSTYLE "outline:none;border:0px;background-color: rgba(255, 255, 255, 0);"

//进度条样式表
#define PROGRESSBARSTYLE "QProgressBar{border-radius: 5px;border:0px;}QProgressBar::chunk{background-color: rgb(255, 255, 255);}"

#define PROGRESSBARSTYLE2 "QProgressBar::chunk {background-color: #3a8fbc;border-radius: 5px;}QProgressBar {border:1px solid #d4d4d4;background-color: #bab0b6;border-radius: 5px;}QProgressBar {color: #efefef}"

#ifdef Q_OS_WIN
#define FONTSIZE1_1 18 //1920x1080分辨率 常规字体字体(正常)
#define FONTSIZE1_2 26  //速度显示
#define FONTSIZE1_3 16 //1920x1080分辨率色序设定界面
#define FONTSIZE1_4 11 //1024x600分辨率 常规字体字体(加大)
#define FONTSIZE1_6 18 //1920x1080分辨率 显示花样信息的字体(正常)
#define FONTSIZE1_7 10 //1024x600分辨率 显示花样信息的字体(加大)
#define FONTSIZE1_8  9   //1024x600分辨率 常规字体字体(正常)
#define FONTSIZE1_9 20 //1920x1080分辨率 的字体(加大)
#define FONTSIZE1_10 200 //1920x1080分辨率 机头断线字体34
#define FONTSIZE1_11 100 //1024x600分辨率 机头断线字体
#define FONTSIZE1_12 8 //1024x600分辨率  花样选择界面花样名称   1920x1080的字体大小不变
#endif

#ifdef Q_OS_LINUX
#define FONTSIZE1_1 14
#define FONTSIZE1_2 20
#define FONTSIZE1_3 12
#define FONTSIZE1_4 17 //1024x600分辨率 常规字体字体(加大)
#define FONTSIZE1_5 15
#define FONTSIZE1_6 16
#define FONTSIZE1_7 13  //LINUX 1024x600分辨率 显示花样信息的字体
#define FONTSIZE1_8 11  //1024x600分辨率 常规字体字体(正常)
#define FONTSIZE1_9 22 //1920x1080分辨率 的字体(加大)
#define FONTSIZE1_10 220 //1920x1080分辨率 机头断线字体
#define FONTSIZE1_11 120 //1024x600分辨率 机头断线字体
#define FONTSIZE1_12 10 //1024x600分辨率  花样选择界面花样名称
#endif

#define BORDER_RADIUS1 "10"
#define BORDER_RADIUS2 "5"

#define FONTTYPE    "Microsoft YaHei"
#define FONTBOLD    QFont::Bold //加粗
#define FONTNORMAL  QFont::Normal //正常

#define LINUX_APPNAME "OPRT_CP"
#define WIN_APPNAME   "oprt_up.exe"
#define APPNAME       "XPLATFORM"
#define PASSWORD_ONE  "290810"        //一级密码
#define PASSWORD_TWO  "262574"        //二级密码
#define PASSWORD_THREE  "951103"        //三级密码
#define PASSWORD_RESETPARA  "123456"        //重置参数密码

#define HMI_UPDATA          1   // 界面升级
#define MC_UPDATA           2   // 主控升级
#define PARA_IMPORT         3   // 参数导入
#define PARA_EXPORT         4   // 参数导出
#define EXBOARD_UPDATA  5   // 外围板升级
#define PRODUCTSTATIS     6   // 生产统计
#define BOARD_LIST          7   // 显示板卡列表
#define WKPARA_IMPORT         8   // 工作参数导入
#define FRAMEPARA_IMPORT         9   // 动框参数导入
#define FRAMEPARA_EXPORT         10   // 动框参数导出
#define JOURNAL     11   // 日志文件

enum ConnectState
{
    NoConnect = 1, //未连接
    Connectting = 2, //连接中
    Connected = 3 //已连接
};

//用户权限
enum UserRoles
{
    operate = 0,//不需要密码
    repair  = 1,//290810
    factory = 2,//262574
    root  = 3,//951103
    resetpara = 4//123456
};

//分辨率
enum Resolution
{
    resolution1910 = 0, //1920x1080
    resolution1006 = 1  //1024x600
};

//主题
enum Theme
{
    theme1 = 1, //主题1
    theme2 = 2, //主题2
    theme3 = 3  //主题3
};

//语言
enum Language
{
    chinese = 0, //中文
    english = 1 ,  //英文
    spanish = 2, //西班牙文
    bengal = 3, //孟加拉文
    //turkey = 4,  //土耳其文
    portugal = 4,  //葡萄牙文
    french = 5,   //法语
    arabic = 6,  //阿拉伯语
    ukrainian = 7,   //乌克兰语
    korean = 8,   //韩语
    russian=9,  //俄语
    uzbek = 10,  //乌兹别克语
    vietnamese = 11,//越南文
    turkey = 12  //土耳其文
};

//字体大小
enum FontSize
{
    normal = 0, //标准
    larger = 1  //加大
};
enum DebugMode
{
    debugMode = 0,     //是调试模式
    nodebugMode = 1  //不是调试模式
};

//机器类型
enum MachineType
{
    MACHINE_EMB = 0,           //绣花机
    QUIMACHINE_EMB             // 绗绣机
};

//机器的附带功能
enum IncidentalFunction
{
    PRODUCT_EMB = 0, //纯平绣
    RODUCT_SEQUIN ,    //亮片
    PRODUCT_TOWEL,  //毛巾
   PRODUCT_COIL  //缠绕
};

//产品类型
enum ProductType
{
    //绣花机
    PRODUCT_EMB_EMB = 0, //纯平绣
    PRODUCT_CHEN, //纯毛巾
    PRODUCT_EMB_FEED, //带上下料机构
    PRODUCT_QUI_SINGLE, //绗绣机单排
    PRODUCT_QUI_DOUBLE, //绗绣机双排
    PRODUCT_NULL //无产品类型
};

#ifdef _IN_MAIN_CPP

LotMachine * g_pLotMachine;//物联网Machine,作为客户端发送数据给mqtt网关
Machine * g_pMachine;
EmbData * g_pCurEmbData = NULL;
UserRoles g_emUser = operate;
QString g_passwordOne = PASSWORD_ONE;
Settings * g_pSettings = NULL;
Resolution g_emResolut = resolution1910;
Theme g_emTheme = theme1;
MachineType g_emMacType = MACHINE_EMB;
ProductType g_emProductType = PRODUCT_EMB_EMB;
DebugMode g_emDebugMode = nodebugMode;
QPoint g_mainWidgetPos;

QFont fontNormal_1(FONTTYPE,FONTSIZE1_1,FONTNORMAL);//微软雅黑常规
QFont fontNormal_2(FONTTYPE,FONTSIZE1_2,FONTNORMAL);//微软雅黑常规
QFont fontNormal_3(FONTTYPE,FONTSIZE1_3,FONTNORMAL);//微软雅黑常规
QFont fontNormal_4(FONTTYPE,FONTSIZE1_4,FONTNORMAL);//微软雅黑常规
QFont fontNormal_6(FONTTYPE,FONTSIZE1_6,FONTNORMAL);//微软雅黑常规
QFont fontNormal_7(FONTTYPE,FONTSIZE1_7,FONTNORMAL);//微软雅黑常规
QFont fontNormal_8(FONTTYPE,FONTSIZE1_8,FONTNORMAL);//微软雅黑常规
QFont fontNormal_9(FONTTYPE,FONTSIZE1_9,FONTNORMAL);//微软雅黑常规
QFont fontNormal_10(FONTTYPE,FONTSIZE1_10,FONTNORMAL);//微软雅黑常规
QFont fontNormal_11(FONTTYPE,FONTSIZE1_11,FONTNORMAL);//微软雅黑常规
QFont fontNormal_12(FONTTYPE,FONTSIZE1_12,FONTNORMAL);//微软雅黑常规

QFont fontBold_1(FONTTYPE,FONTSIZE1_2,FONTBOLD);//微软雅黑26加粗
QFont fontBold_2(FONTTYPE,FONTSIZE1_3,FONTBOLD);//微软雅黑16加粗
QFont fontBold_3(FONTTYPE,FONTSIZE1_1,FONTBOLD);//微软雅黑20加粗
QFont fontBold_4(FONTTYPE,FONTSIZE1_4,FONTBOLD);//微软雅黑14加粗
QFont fontBold_5(FONTTYPE,FONTSIZE1_8,FONTBOLD);//微软雅黑14加粗
#else

extern Machine * g_pMachine;
extern LotMachine * g_pLotMachine;//物联网Machine,作为客户端发送数据给mqtt网关
extern EmbData * g_pCurEmbData;//绣花数据(库)
extern UserRoles g_emUser;
extern QString g_passwordOne;//一级密码
extern Settings * g_pSettings;
extern Resolution g_emResolut;
extern Theme g_emTheme;
extern MachineType g_emMacType;
extern ProductType g_emProductType;
//extern IncidentalFunction g_emIncidentalFunction;       //附加功能
extern DebugMode g_emDebugMode;
extern QPoint g_mainWidgetPos;

//1920x1080字体
extern QFont fontNormal_1;//微软雅黑常规14
extern QFont fontNormal_2;//微软雅黑常规22
extern QFont fontNormal_3;//微软雅黑常规12
extern QFont fontNormal_6;//微软雅黑常规16
extern QFont fontNormal_9;//微软雅黑常规16
extern QFont fontNormal_10;//微软雅黑常规35
extern QFont fontNormal_11;//微软雅黑常规28
extern QFont fontNormal_12;//微软雅黑常规28

extern QFont fontBold_1;//微软雅黑26加粗
extern QFont fontBold_2;//微软雅黑18加粗
extern QFont fontBold_3;//微软雅黑20加粗
///1024x600字体
extern QFont fontNormal_4;//微软雅黑常规9
extern QFont fontNormal_7;//微软雅黑常规16
extern QFont fontNormal_8;//微软雅黑常规16
extern QFont fontBold_4;//微软雅黑14加粗
extern QFont fontBold_5;//微软雅黑8加粗
#endif


#endif // MAIN_H
