#ifndef COLORORDERSETWIDGET_H
#define COLORORDERSETWIDGET_H

#include <QWidget>
#include <QDir>
#include <QMouseEvent>
#include "promptdialog.h"
#include "mybutton.h"
#include "setcontrolstyle.h"
//#include "Include/datafiledst.h"
#include "datafile/datafiledst.h"
#include "datafile/datafiledsr.h"
#include "mctype/mainwidgetfunction.h"
#include <QDateTime>
#include <QDebug>

#define TOWELHIGHRANGE 10 //毛巾高度取值范围1-10
#define TYPE_COLORSET 0 //色序设定
#define TYPE_TOWELHIGHSET 1 //毛巾高度设定

#define FILE_TYPE_DST 0 //dst文件类型
#define FILE_TYPE_DSR 1 //dsr文件类型

namespace Ui {
class ColorOrderSetWidget;
}

class ColorOrderSetWidget : public QWidget
{
    Q_OBJECT

public:
    explicit ColorOrderSetWidget(QWidget *parent = 0);
    ~ColorOrderSetWidget();

private:
    Ui::ColorOrderSetWidget *ui;
    int m_itemPerPage;//界面每页条目数

private:
    EmbData *m_pCurEmbData;
    QList<MyButton*> m_buttonColorOrderList;
    QList<QPushButton*> m_buttonEmbNeedleList;
    QPushButton *m_pEmbNeedleBtn;
    MyButton *m_pColorBtn;
    u8 m_colorBeginStepCtrl;//换色后起始针步属性(除偏移、跳针等)
    u8 m_colorEndStepCtrl;  //换色后结束针步属性(除偏移、跳针等)
    int m_greyBeginStep;//灰色起始
    int m_greyEndStep;  //灰色结束

    QRgb *m_pColorBuf;
    QString m_buttonStyle1;
    QString m_buttonStyle2;

    QByteArray m_beforeColorTable;//变换之前的色序表
    QByteArray m_colorTable;//变换之后的色序表
    int m_curSelectColor;
    int m_curPages;//当前页
    int m_pageNums;//总页数

    s16 m_combineEmbFirst;//最初的双头组合绣的标志
    s16 m_threeCombineEmbFirst;//最初的三头组合绣的标志
    s16 m_combineEmb;//双头组合绣的标志 -1:组合绣模式 1:非组合绣模式
    s16 m_threeCombineEmb;//三头组合绣的标志 -1:组合绣模式 1:非组合绣模式
    s16 m_colorOrderLimitFlag;//针位超出限制的标志，若是非组合模式针位超出针杆会报错
    u8 m_headBuf[HEADBUF];
    s16 m_colorSetBtnLockFlag;//色序设定可切换按钮是否锁住1：锁住    -1：解锁

    s16 m_setType;//设置类型  0：色序设定        1：毛巾高度设置
    s16 m_fileType;//文件类型  0：dst        1：dsr
    int m_refreshColorOrder;//-1,不刷新


private:
    void initWidget();
    void initControl();//初始化窗体控件，包括位置、尺寸、样式
    void initResolution1910();//初始化窗体控件为1920x1080分辨率
    void initResolution1006();//初始化窗体控件为1024x600分辨率
    void initControlStyle();//初始化窗体控件样式
    void initArabControlPos();//设置阿拉伯语时控件对齐方式

    void initNeedleBar();//初始化针杆
    void switchNeedleBar();//切换针杆
    void refreshColorShow(int colorInPage = -1);//刷新色序显示
    void refreshPatternCurColorShow();//刷新花样选中的色序显示(刷新花样部分线迹)
    void getNeedleNum(int & num);//获取配置文件针杆数量
    void switchNeedleNum(int & num);//针杆数量
    QString getNeedleColorStr(s16 idx);//获取配置文件针杆颜色索引字符
    void refreshLockBtn();//刷新色序锁定按钮

    void initTowelHeightValue();//初始化毛巾高度值
    void refreshTowelHeightShow();//刷新毛巾高度显示
    void refreshPatternCurTowelHeightShow();//刷新花样选中的毛巾高度显示(刷新花样部分线迹)
    QString getCurColorTabStr(s16 needleIdx);
    void getCurColorTabValue(s16 &colorInTab);

public:
    void setTypeLogo(QString tStyle);//设置类型图标
    void setMainTitle(QString str);//设置主title
    void setSubTitle(QString str);//设置副title
    void show(QString filePath);
    void showTowelHeight(QString filePath);
    void setColorTable(QByteArray table,s16 combineMode);
    void setTowelHighTable(QByteArray table);
    void setThreeColorTable(QByteArray table,s16 threeCombineMode);
    void initHeadBuf(QString filePath);//初始化隔头绣数据

public:
    inline u8* getHeadBuf(){return m_headBuf;}

signals:
    void siChangeColorTable(int selColor,int colorIdx);
    void siChangeTowelHighTable(int selColor,int colorIdx);
    void siBackHome(s16 combineMode,s16 threeCombineMode);//组合模式
    void siTowelHighBackHome();
    void siCancelChangeColor(QByteArray table);
    void siCancelChangeTowelHigh(QByteArray table);
    void siHeadEmb();
    void siSetHeadEmbBtnEnable(bool bl);

public slots:
    void slotResetHeadBuf(u8* buf);//重置隔头绣数据
    void slotSetEmbDatNeedleTable();//设置针杆颜色

private slots:
    void colorOrderBtnClick();
    void embNeedleBtnPressed();//针杆按钮被按下
    void embNeedleBtnReleased();//针杆按钮抬起
    void on_buttonPgUp_clicked();
    void on_buttonPgDn_clicked();
    void on_buttonOk_clicked();
    void on_buttonCancel_clicked();
    void on_buttonColorOrderCycle_clicked();
    void on_buttonColorOrderClear_clicked();
    void on_buttonHeadEmb_clicked();
    void on_buttonCombineEmb_clicked();
    void on_buttonColorSetLock_clicked();
    void on_buttonNeedle_clicked();
    void on_buttonExplanation_clicked();
    void on_buttonColorLaser_clicked();
    void on_buttonThreeCombineEmb_clicked();
    void on_buttonRefreshColorOrder_clicked();

protected:
    void mousePressEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *e);

private:
    int m_mousePressX;
    int m_mousePressY;
    int m_mouseReleaseX;
    int m_mouseReleaseY;

};

#endif // COLORORDERSETWIDGET_H
