PunchHMI/sharedviews/colorordersetwidget.cpp
2024-02-06 14:58:57 +08:00

1690 lines
51 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "colorordersetwidget.h"
#include "ui_colorordersetwidget.h"
ColorOrderSetWidget::ColorOrderSetWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ColorOrderSetWidget),
m_itemPerPage(72),
m_pEmbNeedleBtn(NULL),
m_pColorBtn(NULL)
{
ui->setupUi(this);
setWindowFlags (Qt::Window | Qt::FramelessWindowHint);
setWindowModality(Qt::ApplicationModal);
m_greyBeginStep = 0;//灰色起始
m_greyEndStep = 0; //灰色结束
ui->buttonColorSetLock->setVisible(false);
initWidget();
initPatternColorTable();
initControl();
refreshLockBtn();
}
ColorOrderSetWidget::~ColorOrderSetWidget()
{
if(m_pCurEmbData != NULL)
{
delete m_pCurEmbData;
}
delete ui;
}
void ColorOrderSetWidget::initWidget()
{
m_pCurEmbData = new EmbData();
m_pCurEmbData->initColor(g_pSettings->getColorRgbArray().size(),(QRgb*)g_pSettings->getColorRgbArray().data());
m_colorBeginStepCtrl = 0;
m_colorEndStepCtrl = 0;
m_curSelectColor = -1;
m_curPages = 1;
m_pageNums = 1;
m_colorNums = 0;
m_colorSetBtnLockFlag = 1;//锁住
m_setType = TYPE_COLORSET;
m_fileType = FILE_TYPE_DST;
ui->frameGear->setVisible(false);
ui->buttonValue->setEnabled(false);
m_singleMulMode = 0;
m_pColorBuf = (QRgb *)(g_pSettings->getColorRgbArray().data());
m_buttonStyle1 = "QPushButton{outline: none;border:0px solid rgb(0,0,0);border-style:inset;border-radius:5px;";
m_buttonStyle2 = "QPushButton:checked{outline: none;border:3px groove rgb(80,80,80);}";
m_buttonColorOrderList.clear();//色序按钮
for(int i = 0; i < m_itemPerPage; i++)
{
MyButton *buttonColorOrder = new MyButton(ui->frameColorOrder);
m_buttonColorOrderList.append(buttonColorOrder);
connect(buttonColorOrder,
SIGNAL(clicked()),
this,
SLOT(colorOrderBtnClick())
);
}
m_buttonEmbNeedleList.clear();//针杆按钮
for(int i = 0; i < 32; i++)
{
QPushButton *buttonEmbNeedle = new QPushButton(ui->frameColorOrder);
m_buttonEmbNeedleList.append(buttonEmbNeedle);
connect(buttonEmbNeedle,
SIGNAL(pressed()),
this,
SLOT(embNeedleBtnPressed()));
connect(buttonEmbNeedle,
SIGNAL(released()),
this,
SLOT(embNeedleBtnReleased()));
}
//定制冲孔机有6个冲刀深度显示
m_buttonPunchDepthList.clear();
for(int i = 0; i < 6; i++)
{
QPushButton *buttonEmbNeedle = new QPushButton(ui->frameColorOrder);
m_buttonPunchDepthList.append(buttonEmbNeedle);
connect(buttonEmbNeedle,
SIGNAL(clicked()),
this,
SLOT(punchDepthBtnClick())
);
m_buttonPunchDepthList[i]->hide();
double value = g_pSettings->readFromIniFile("AUFUS/punchDepth"+QString::number(i)).toDouble();
m_buttonPunchDepthList[i]->setText(QString::number(value,'f',2));
m_buttonPunchDepthList[i]->setFont(fontNormal_1);
}
}
void ColorOrderSetWidget::initControl()
{
//根据不同分辨率设置控件的位置和尺寸
switch (g_emResolut)
{
case resolution1910:
initResolution1910();
break;
case resolution1006:
initResolution1006();
break;
default:
this->resize(1920,1080);
break;
}
initControlStyle();//初始化窗体控件样式
}
void ColorOrderSetWidget::initResolution1910()
{
this->resize(1920,1080);
ui->frameBack->setGeometry(0,0,1920,1080);
ui->buttonTypeLogo->setGeometry(128,66,78,78);
ui->labelMainTitle->setGeometry(226,60,400,44);
ui->labelSubTitle->setGeometry(302,112,1000,36);
ui->frameRightUp->setGeometry(1130,92,768,72);
ui->buttonColorOrderClear->setGeometry(692,0,66,66);
ui->buttonColorOrderCycle->setGeometry(604,0,66,66);
ui->buttonColorSetLock->setGeometry(516,0,66,66);
ui->frameColorOrder->setGeometry(84,220,1344,704);
ui->buttonNeedle->setGeometry(0,0,200,52);
QRect rectImage(0,0,88,52);
QRect rectName(28,47,44,28);
QRect rectValue(0,0,88,52);
for(int i = 0; i < 6; i++)
{
int num = m_buttonColorOrderList.size()/6;
for(int j = 0; j < num; j++)
{
m_buttonColorOrderList[i*num+j]->setGeometry(j*114,220+i*82,88,80);
m_buttonColorOrderList[i*num+j]->initUpImageDownName(rectImage,rectName);
m_buttonColorOrderList[i*num+j]->initLabelValue(rectValue);
m_buttonColorOrderList[i*num+j]->setLabelNameFont(fontNormal_3);
m_buttonColorOrderList[i*num+j]->setLabelValueFont(fontNormal_1);
m_buttonColorOrderList[i*num+j]->setStyleSheet("border:0px;outline:none;");//无边框、无焦点
}
}
for(int i = 0; i < 6; i++)
{
m_buttonPunchDepthList[i]->setGeometry(i*114+228,220-156,88,52);//下边控件的大小
}
for(int i = 0; i < 3; i++)
{
int num,xSp,idx;
if(i == 0)
{
num = 10;//第一行10个
xSp = 228;
idx = 0;
}
else if(i == 1)
{
num = 12;//第二行12个
xSp = 0;
idx = 10;
}
else if(i == 2)
{
num = 10;//第三行10个
xSp = 0;
idx = 22;
}
for(int j = 0; j < num; j++)
{
m_buttonEmbNeedleList[idx+j]->setGeometry(xSp+j*114,i*70,88,52);
m_buttonEmbNeedleList[idx+j]->setFont(fontNormal_1);
m_buttonEmbNeedleList[idx+j]->setText(QString::number(idx+j+1));
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
m_buttonEmbNeedleList[idx+j]->hide();
}
}
}
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
ui->frameGear->setVisible(true);
ui->frameGear->setGeometry(300,0,600,80);
ui->buttonSingle->setGeometry(4,0,88,76);
ui->buttonSingle->setFont(fontNormal_1);
ui->buttonMul->setGeometry(120,0,88,76);
ui->buttonMul->setFont(fontNormal_1);
ui->buttonValue->setGeometry(220,0,88,76);
ui->buttonValue->setFont(fontNormal_1);
}
ui->labelPatternView->setGeometry(1536,220,302,302);
ui->labelNameValue->setGeometry(1538,564,400,36);
ui->labelTotalNeedle->setGeometry(1538,604,200,36);
ui->labelTotalNeedleValue->setGeometry(1760,604,94,36);
ui->labelTotalColor->setGeometry(1538,644,200,36);
ui->labelTotalColorValue->setGeometry(1760,644,94,36);
ui->labelCurColorNum->setGeometry(1538,684,200,36);
ui->labelCurColorNumValue->setGeometry(1760,684,94,36);
ui->labelBeginIdx->setGeometry(1538,724,200,36);
ui->labelBeginIdxValue->setGeometry(1760,724,94,36);
ui->labelEndIdx->setGeometry(1538,764,200,36);
ui->labelEndIdxValue->setGeometry(1760,764,94,36);
ui->labelNeedleSelect->setGeometry(1538,804,180,36);
ui->labelNeedleSelectValue->setGeometry(1655,804,200,36);
ui->framePageBtn->setGeometry(1120,990,800,70);
ui->labelPage->setGeometry(32,1008,400,40);
ui->buttonPgUp->setGeometry(0,0,168,70);
ui->buttonPgDn->setGeometry(200,0,168,70);
ui->buttonOk->setGeometry(400,0,168,70);
ui->buttonCancel->setGeometry(600,0,168,70);
}
void ColorOrderSetWidget::initResolution1006()
{
this->resize(1024,600);
ui->frameBack->setGeometry(0,0,1024,600);
ui->buttonTypeLogo->setGeometry(25,30,60,60);
ui->labelMainTitle->setGeometry(100,30,200,24);
ui->labelSubTitle->setGeometry(130,64,240,21);
ui->frameRightUp->setGeometry(560,40,857,61);
ui->buttonColorOrderClear->setGeometry(399,0,50,50);
ui->buttonColorOrderCycle->setGeometry(342,0,50,50);
ui->buttonColorSetLock->setGeometry(285,0,50,50);
ui->frameColorOrder->setGeometry(20,120,740,420);
ui->buttonNeedle->setGeometry(24,0,110,32);
QRect rectImage(0,0,56,32);//下边颜色图片的大小和位置
QRect rectName(18,30,28,16);//数字
QRect rectValue(0,0,56,32);//下边颜色图片里的文字
for(int i = 0; i < 6; i++)
{
int num = m_buttonColorOrderList.size()/6;
for(int j = 0; j < num; j++)
{
m_buttonColorOrderList[i*num+j]->setGeometry(25+j*60,124+i*50,56,46);//下边控件的大小
m_buttonColorOrderList[i*num+j]->initUpImageDownName(rectImage,rectName);
m_buttonColorOrderList[i*num+j]->initLabelValue(rectValue);
m_buttonColorOrderList[i*num+j]->setLabelNameFont(fontNormal_1);
m_buttonColorOrderList[i*num+j]->setLabelValueFont(fontNormal_1);
m_buttonColorOrderList[i*num+j]->setStyleSheet("border:0px;outline:none;");//无边框、无焦点
}
}
for(int i = 0; i < 6; i++)
{
m_buttonPunchDepthList[i]->setGeometry(25+i*60+120,124-90,56,32);//下边控件的大小
}
for(int i = 0; i < 3; i++)
{
int num,xSp,idx;
if(i == 0)
{
num = 10;//第一行10个
xSp = 145;
idx = 0;
}
else if(i == 1)
{
num = 12;//第二行12个
xSp = 25;
idx = 10;
}
else if(i == 2)
{
num = 10;//第三行10个
xSp = 25;
idx = 22;
}
for(int j = 0; j < num; j++)
{
m_buttonEmbNeedleList[idx+j]->setGeometry(xSp+j*60,i*38,56,32);//上边颜色的大小
m_buttonEmbNeedleList[idx+j]->setFont(fontNormal_1);
m_buttonEmbNeedleList[idx+j]->setText(QString::number(idx+j+1));
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
m_buttonEmbNeedleList[idx+j]->hide();
}
}
}
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
ui->frameGear->setVisible(true);
ui->frameGear->setGeometry(120,0,400,80);
ui->buttonSingle->setGeometry(4,0,56,40);
ui->buttonSingle->setFont(fontNormal_1);
ui->buttonMul->setGeometry(96,0,56,40);
ui->buttonMul->setFont(fontNormal_1);
ui->buttonValue->setGeometry(160,0,56,40);
ui->buttonValue->setFont(fontNormal_1);
}
ui->labelPatternView->setGeometry(790,98,220,220);
ui->labelNameValue->setGeometry(816,320,141,20);
ui->labelTotalNeedle->setGeometry(816,350,141,20);
ui->labelTotalNeedleValue->setGeometry(895,350,91,20);
ui->labelTotalColor->setGeometry(816,375,91,20);
ui->labelTotalColorValue->setGeometry(895,375,91,20);
ui->labelCurColorNum->setGeometry(816,400,91,20);
ui->labelCurColorNumValue->setGeometry(895,400,91,20);
ui->labelBeginIdx->setGeometry(816,425,91,20);
ui->labelBeginIdxValue->setGeometry(895,425,91,20);
ui->labelEndIdx->setGeometry(816,450,91,20);
ui->labelEndIdxValue->setGeometry(895,450,91,20);
ui->labelNeedleSelect->setGeometry(816,475,91,20);
ui->labelNeedleSelectValue->setGeometry(895,475,91,20);
ui->framePageBtn->setGeometry(595,545,600,40);
ui->labelPage->setGeometry(20,550,102,45);
ui->buttonPgUp->setGeometry(0,0,96,40);
ui->buttonPgDn->setGeometry(106,0,96,40);
ui->buttonOk->setGeometry(212,0,96,40);
ui->buttonCancel->setGeometry(318,0,96,40);
}
void ColorOrderSetWidget::initControlStyle()
{
SetControlStyle setControlStyle;
setControlStyle.setUiName(this->objectName());
//背景图
QString frameBackImgPath = setControlStyle.getStyleSheet(this->objectName());
ui->frameBack->setStyleSheet(frameBackImgPath);
ui->frameColorOrder->setStyleSheet(TRANSPARENTSTYLE);
ui->frameGear->setStyleSheet(TRANSPARENTSTYLE);
//label样式
ui->labelMainTitle->setFont(fontBold_1);
ui->labelMainTitle->setStyleSheet(LABELWHITESTYLE);
ui->labelSubTitle->setFont(fontNormal_1);
ui->labelSubTitle->setStyleSheet(LABELWHITESTYLE);
ui->labelPage->setFont(fontNormal_1);
ui->labelPage->setStyleSheet(LABELWHITESTYLE);
ui->buttonNeedle->setFont(fontNormal_6);
ui->labelPatternView->setStyleSheet(TRANSPARENTSTYLE);
ui->labelNameValue->setFont(fontNormal_6);
ui->labelNameValue->setStyleSheet(LABELWHITESTYLE);
ui->labelTotalNeedle->setFont(fontNormal_6);
ui->labelTotalNeedle->setStyleSheet(LABELWHITESTYLE);
ui->labelTotalNeedleValue->setFont(fontNormal_6);
ui->labelTotalNeedleValue->setStyleSheet(LABELWHITESTYLE);
ui->labelTotalColor->setFont(fontNormal_6);
ui->labelTotalColor->setStyleSheet(LABELWHITESTYLE);
ui->labelTotalColorValue->setFont(fontNormal_6);
ui->labelTotalColorValue->setStyleSheet(LABELWHITESTYLE);
ui->labelCurColorNum->setFont(fontNormal_6);
ui->labelCurColorNum->setStyleSheet(LABELWHITESTYLE);
ui->labelCurColorNumValue->setFont(fontNormal_6);
ui->labelCurColorNumValue->setStyleSheet(LABELWHITESTYLE);
ui->labelBeginIdx->setFont(fontNormal_6);
ui->labelBeginIdx->setStyleSheet(LABELWHITESTYLE);
ui->labelBeginIdxValue->setFont(fontNormal_6);
ui->labelBeginIdxValue->setStyleSheet(LABELWHITESTYLE);
ui->labelEndIdx->setFont(fontNormal_6);
ui->labelEndIdx->setStyleSheet(LABELWHITESTYLE);
ui->labelEndIdxValue->setFont(fontNormal_6);
ui->labelEndIdxValue->setStyleSheet(LABELWHITESTYLE);
ui->labelNeedleSelect->setFont(fontNormal_6);
ui->labelNeedleSelect->setStyleSheet(LABELWHITESTYLE);
ui->labelNeedleSelectValue->setFont(fontNormal_6);
ui->labelNeedleSelectValue->setStyleSheet(LABELWHITESTYLE);
ui->framePageBtn->setStyleSheet(TRANSPARENTSTYLE);
//右上方
ui->frameRightUp->setStyleSheet(TRANSPARENTSTYLE);
ui->buttonColorOrderClear->setGreenGradientBottomStyle(BORDER_RADIUS1);
ui->buttonColorOrderClear->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonColorOrderClear->objectName()));
ui->buttonColorOrderCycle->setGreenGradientBottomStyle(BORDER_RADIUS1);
ui->buttonColorOrderCycle->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonColorOrderCycle->objectName()));
ui->buttonColorSetLock->setGreenGradientBottomStyle(BORDER_RADIUS1);
//四个按钮样式表一样
ui->buttonPgUp->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonPgUp->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgUp->objectName()),12);
ui->buttonPgDn->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonPgDn->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgDn->objectName()),12);
ui->buttonOk->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()),12);
ui->buttonCancel->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()),12);
}
void ColorOrderSetWidget::initPatternColorTable()
{
//设置颜色列表(针杆色序表)
for(int i = 0; i < TOTAL_NEEDLE_NUM; i++)
{
QString idxStr;
idxStr.clear();
//绣花针杆
if(i >= 0 && i <= EMB_NEEDLE_NUM - 1)
{
idxStr = "EmbNeedle/"+QString::number(i+1)+"_coloridx";
}
//冲孔针杆
else if(i >= (EMB_NEEDLE_NUM - 1) && i < (EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM))
{
int punchIdx = i + 1 - EMB_NEEDLE_NUM;
idxStr = "PunchNeedle/"+QString::number(punchIdx)+"_coloridx";
}
//缝纫针杆
else if(i == EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM)
{
int sewIdx = i + 1 - EMB_NEEDLE_NUM - PUNCH_NEEDLE_NUM;
idxStr = "SewNeedle/"+QString::number(sewIdx)+"_coloridx";
}
if(g_pSettings->ifKeyExists(idxStr) == true)
{
int idx = g_pSettings->readFromIniFile(idxStr).toInt();
m_pCurEmbData->setNeedleColorTable(i,idx);
}
else
{
m_pCurEmbData->setNeedleColorTable(i,i);
}
}
}
void ColorOrderSetWidget::initNeedleBar()
{
//读入配置
QDir apppath(qApp->applicationDirPath());
//配置文件路径
QString configFile = apppath.path() + apppath.separator() + "config.ini";
QFile iniFile(configFile);
int highFlag = g_pSettings->readFromIniFile("AUFUS/highSpeed").toInt();
int num,idx;
if(!iniFile.exists())
{
num = 1;
idx = 0;
QRgb rgb = m_pColorBuf[(idx % BF_SW_ND)];
rgb |= 0xff000000;
QColor bkcolor(rgb);
QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168);
QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"
+ " color:" + tcolor.name() + ";";
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
if(i < num)
{
m_buttonEmbNeedleList[i]->setText(QString::number(i+1));
m_buttonEmbNeedleList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2);
m_buttonEmbNeedleList.at(i)->show();
}
else
{
m_buttonEmbNeedleList.at(i)->hide();
}
}
}
else
{
QRgb rgb = qRgb(0,255,0);
switchNeedleNum(num);//显示当前色序所选的针杆
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
QString idxStr;
idxStr = getNeedleColorStr(i+1);
if(g_pSettings->ifKeyExists(idxStr) == true)
{
idx = g_pSettings->readFromIniFile(idxStr).toInt();
rgb = m_pColorBuf[(idx % BF_SW_ND)];
}
else
{
rgb = m_pColorBuf[(i % MC_SW_ND)];
}
rgb |= 0xff000000;
QColor bkcolor(rgb);
QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168);
QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"
+ " color:" + tcolor.name() + ";";
if(i < num)
{
m_buttonEmbNeedleList[i]->setText(QString::number(i+1));
//属于冲缝绣才显示针杆设置按钮,因为有的色序里只有偏移针步
if(m_colorBeginStepCtrl == DATA_SEWING ||
m_colorBeginStepCtrl == DATA_EMB ||
m_colorBeginStepCtrl == DATA_PUNCH ||
m_colorBeginStepCtrl == 0)
{
m_buttonEmbNeedleList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2);
m_buttonEmbNeedleList.at(i)->show();
if(highFlag == 1)
{
if(i < m_buttonPunchDepthList.size())
{
m_buttonPunchDepthList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2);
m_buttonPunchDepthList.at(i)->show();
}
}
}
else
{
m_buttonEmbNeedleList.at(i)->hide();
if(highFlag == 1)
{
if(i < m_buttonPunchDepthList.size())
{
m_buttonPunchDepthList.at(i)->hide();
}
}
}
}
else
{
m_buttonEmbNeedleList.at(i)->hide();
if(highFlag == 1)
{
if(i < m_buttonPunchDepthList.size())
{
m_buttonPunchDepthList.at(i)->hide();
}
}
}
}
}
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
m_buttonEmbNeedleList.at(i)->setChecked(false);
m_buttonEmbNeedleList.at(i)->setCheckable(false);
}
}
void ColorOrderSetWidget::switchNeedleBar()
{
//读入配置
QDir apppath(qApp->applicationDirPath());
//配置文件路径
QString configFile = apppath.path() + apppath.separator() + "config.ini";
QFile iniFile(configFile);
int num,idx;
num = 0;
if(!iniFile.exists())
{
num = 1;
idx = 0;
QRgb rgb = m_pColorBuf[(idx % BF_SW_ND)];
rgb |= 0xff000000;
QColor bkcolor(rgb);
QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168);
QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"
+ " color:" + tcolor.name() + ";";
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
if(i < num)
{
m_buttonEmbNeedleList[i]->setText(QString::number(i+1));
m_buttonEmbNeedleList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2);
//压胶机时隐藏,不显示
if(g_emMacType != MACHINE_ADHESIVE)
{
m_buttonEmbNeedleList.at(i)->show();
}
}
else
{
m_buttonEmbNeedleList.at(i)->hide();
}
}
}
else
{
QRgb rgb = qRgb(0,255,0);
if(m_colorBeginStepCtrl == DATA_PUNCH)//冲孔
{
num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Punch (P):"));//冲孔(P)
}
else if(m_colorBeginStepCtrl == DATA_EMB)//绣花
{
num = g_pSettings->readFromIniFile("EmbNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Emb (P):"));//绣花(E)
}
else if(m_colorBeginStepCtrl == DATA_SEWING)//缝纫
{
num = g_pSettings->readFromIniFile("SewNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Sew (S):"));//缝纫(S)
}
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
ui->buttonNeedle->setText(tr("Gear:"));//档位:
}
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
QString idxStr;
idxStr = getNeedleColorStr(i+1);
if(g_pSettings->ifKeyExists(idxStr) == true)
{
idx = g_pSettings->readFromIniFile(idxStr).toInt();
rgb = m_pColorBuf[(idx % BF_SW_ND)];
}
else
{
rgb = m_pColorBuf[(i % MC_SW_ND)];
}
rgb |= 0xff000000;
QColor bkcolor(rgb);
QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168);
QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"
+ " color:" + tcolor.name() + ";";
if(i < num)
{
m_buttonEmbNeedleList[i]->setText(QString::number(i+1));
//属于冲缝绣,毛巾针步才显示针杆设置按钮,因为有的色序里只有偏移针步
if(m_colorBeginStepCtrl == DATA_SEWING ||
m_colorBeginStepCtrl == DATA_EMB ||
m_colorBeginStepCtrl == DATA_PUNCH ||
m_colorBeginStepCtrl == 0)
{
m_buttonEmbNeedleList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2);
//压胶机时隐藏,不显示
if(g_emMacType != MACHINE_ADHESIVE)
{
m_buttonEmbNeedleList.at(i)->show();
}
}
else
{
m_buttonEmbNeedleList.at(i)->hide();
}
}
else
{
m_buttonEmbNeedleList.at(i)->hide();
}
}
}
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
m_buttonEmbNeedleList.at(i)->setChecked(false);
m_buttonEmbNeedleList.at(i)->setCheckable(false);
}
}
//刷新色序显示
void ColorOrderSetWidget::refreshColorShow()
{
QString str;
QString strNeedle;
int num = 0;
getNeedleNum(num);//获取配置文件针杆数量
int colorNum = m_colorNums;
m_pageNums = (colorNum + m_itemPerPage - 1)/m_itemPerPage;// 计算页数
if (m_curPages > m_pageNums)// 当前页
{
m_curPages = m_pageNums;
}
if (m_curPages <= 1 && colorNum != 0)
{
m_curPages = 1;
}
int colorIdx = (m_curPages-1) * m_itemPerPage;
if(colorIdx < 0)
{
colorIdx = 0;
}
for (int i = 0; i < m_itemPerPage; i++)
{
// 颜色显示
if (colorIdx < colorNum)
{
s16 needleIdx = m_colorTable.at(colorIdx);//花版里的第一个色序
strNeedle = getCurColorTabStr(needleIdx);
s16 needleIdxCp = needleIdx;
//不等于压胶机时
if(g_emMacType != MACHINE_ADHESIVE)
{
getCurColorTabValue(needleIdx);
}
QString idxStr;
idxStr = getNeedleColorStr(needleIdxCp,needleIdx);//needleIdx 针杆索引
s16 colorInTab;
if(g_pSettings->ifKeyExists(idxStr) == true)
{
colorInTab = g_pSettings->readFromIniFile(idxStr).toInt();
}
else
{
colorInTab = m_colorTable.at(colorIdx);
getCurColorTabValue(colorInTab);
colorInTab -= 1;
if(colorInTab < 0){colorInTab = 0;}
}
if(g_emMacType == MACHINE_ADHESIVE)
{
colorInTab = m_colorTable.at(colorIdx);
}
// 文件中的色序
QRgb rgb = m_pColorBuf[(colorInTab % BF_SW_ND)];
rgb |= 0xff000000;
QColor bkcolor(rgb);
QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168);
QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"
+ " color:" + tcolor.name() + ";";
m_buttonColorOrderList.at(i)->setImageBackColor(cstyle);
QString cstyle1 = "outline: none;background-color:rgba(255, 255, 255, 0);color:" + tcolor.name() + ";";
m_buttonColorOrderList.at(i)->setLabelValueStyle(cstyle1);
if(needleIdx <= 0)
{
m_buttonColorOrderList.at(i)->setLabelValue("");//色序里的数字是空
}
else
{
m_buttonColorOrderList.at(i)->setLabelValue(strNeedle+QString::number(needleIdx));
}
str.sprintf("%d", colorIdx+1);
if(g_emMacType == MACHINE_PUNCH_AUTOPOS)
{
if( i < 256)
{
//int size = m_colorTable.length();
int val = m_colorTable.at(TABLE_HEIGHT_IDX+i)-EMB_NEEDLE_NUM-1;
for(int m = 0; m < 10; m++)
{
if(m <= val && val <= (m*10 + 9))
{
str = QString::number(m)+"." + QString::number(val-m*10);
break;
}
}
}
}
//下方的色序按钮
//设置数字 花版里的色序个数
m_buttonColorOrderList.at(i)->setLabelName(str);
m_buttonColorOrderList.at(i)->show();
//选择显示
if (colorIdx == m_curSelectColor)
{
m_buttonColorOrderList.at(i)->setLabelImageChecked(cstyle);
}
}
else
{
m_buttonColorOrderList.at(i)->setLabelName("");
m_buttonColorOrderList.at(i)->hide();
}
colorIdx++;
}
// 翻页按钮
if (m_curPages <= 1)
{
ui->buttonPgUp->setEnabled(false);
}
else
{
ui->buttonPgUp->setEnabled(true);
}
if (m_curPages >= m_pageNums)
{
ui->buttonPgDn->setEnabled(false);
}
else
{
ui->buttonPgDn->setEnabled(true);
}
// 页信息
if(m_pageNums == 0)
{
m_curPages = 0;
}
QString pStr = tr("pageNum: ") + QString("%1/%2").arg(m_curPages).arg(m_pageNums);//页数:
ui->labelPage->setText(pStr);
}
//刷新花样选中的色序显示(刷新花样部分线迹)
void ColorOrderSetWidget::refreshPatternCurColorShow()
{
if(m_curSelectColor < 0)
{
return;
}
int beginIdx, endIdx;
if(m_colorTable.size() == 1)//只有一个换色
{
endIdx = m_pCurEmbData->getStitchNums();
m_pCurEmbData->getNeedleIdxFromColorIdx(beginIdx, m_curSelectColor+1, m_colorBeginStepCtrl);
beginIdx = 1;
}
else
{
if(m_curSelectColor+1 <= m_colorNums)//当前选择颜色数等于总的颜色数
{
//获取起始针步和换色后第一个针步的针步属性(非跳针跨步等)
m_pCurEmbData->getNeedleIdxFromColorIdx(beginIdx, m_curSelectColor+1, m_colorBeginStepCtrl);
}
if(m_curSelectColor+1 >= m_colorNums)//当前选择颜色数等于总的颜色数
{
endIdx = m_pCurEmbData->getStitchNums();
}
else
{
m_pCurEmbData->getNeedleIdxFromColorIdx(endIdx, m_curSelectColor+2, m_colorEndStepCtrl);
}
}
m_pCurEmbData->setGreyAreaRange(m_greyBeginStep,m_greyEndStep);
m_pCurEmbData->setDispAreaRange(beginIdx,endIdx,0);
m_pCurEmbData->setDispMode(EmbData::DISP_ALL_AREA, 1); // 重新画灰图
m_greyBeginStep = beginIdx;//灰色起始
m_greyEndStep = endIdx; //灰色结束
QPixmap patternPix = m_pCurEmbData->getPreviewImage();
ui->labelPatternView->setPixmap(patternPix);
ui->labelCurColorNumValue->setText(QString::number(m_curSelectColor+1));
ui->labelBeginIdxValue->setText(QString::number(beginIdx));
ui->labelEndIdxValue->setText(QString::number(endIdx));
//根据 beginStepCtrl 切换到相应针杆设置
int num = 0;
getNeedleNum(num);
s16 selIdx = m_colorTable[m_curSelectColor];
int idx = selIdx;
getCurColorTabValue(selIdx);
QString str;
if(selIdx <= 0)
{
str = tr("Not set");//未设置
}
else
{
QString typeStr;
typeStr = getCurColorTabStr(idx);
str = typeStr + QString::number(selIdx);//针杆
}
ui->labelNeedleSelectValue->setText(str);// 右下角显示当前色序的针杆
ui->buttonColorSetLock->setEnabled(true);//右上方色序设定解锁按钮可按
}
//获取配置文件针杆数量
void ColorOrderSetWidget::getNeedleNum(int &num)
{
if(m_colorBeginStepCtrl == 0)//界面没打开的时候,进来这个里边
{
num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Punch (P):"));//冲孔
return;
}
if(m_colorBeginStepCtrl == DATA_SEWING)//缝纫
{
num = g_pSettings->readFromIniFile("SewNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Sew (S):"));//缝纫
}
else if(m_colorBeginStepCtrl == DATA_PUNCH)//冲孔
{
num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Punch (P):"));//冲孔
}
else if(m_colorBeginStepCtrl == DATA_EMB)//绣花
{
num = g_pSettings->readFromIniFile("EmbNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Emb (E):"));//绣花
}
else if(m_colorBeginStepCtrl == 0)
{
num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Punch (P):"));//冲孔
}
else
{
//非冲缝绣针步
ui->buttonNeedle->setText(tr("Non needle step"));//非下针针步
}
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
ui->buttonNeedle->setText(tr("Gear:"));//档位
}
}
void ColorOrderSetWidget::switchNeedleNum(int &num)
{
//m_curSelectColor 花版中的第几个色序
//m_colorTable 色序表
//selIdx 色序表里的色序 0就是没有色序
if(m_colorTable.size() <= 0)
{
return;
}
int selIdx = m_colorTable[m_curSelectColor];
if(selIdx > EMB_NEEDLE_NUM+PUNCH_NEEDLE_NUM)//缝纫
{
num = g_pSettings->readFromIniFile("SewNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Sew (S):"));//缝纫
m_colorBeginStepCtrl = DATA_SEWING;
}
else if(selIdx > EMB_NEEDLE_NUM)//冲孔
{
num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Punch (P):"));//冲孔
m_colorBeginStepCtrl = DATA_PUNCH;
}
else
{
if(selIdx > 0)
{
num = g_pSettings->readFromIniFile("EmbNeedle/number").toInt();
ui->buttonNeedle->setText(tr("Emb (E):"));//绣花
m_colorBeginStepCtrl = DATA_EMB;
}
else
{
if(m_colorBeginStepCtrl == DATA_PUNCH)
{
num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
}
else if(m_colorBeginStepCtrl == DATA_SEWING)
{
num = g_pSettings->readFromIniFile("SewNeedle/number").toInt();
}
else if(m_colorBeginStepCtrl == DATA_EMB)
{
num = g_pSettings->readFromIniFile("EmbNeedle/number").toInt();
}
else
{
num = 0;
}
}
}
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
ui->buttonNeedle->setText(tr("Gear:"));//档位:
}
}
//获取配置文件针杆颜色索引字符
QString ColorOrderSetWidget::getNeedleColorStr(s16 idx)
{
QString idxStr;
idxStr.clear();
if(m_colorBeginStepCtrl == DATA_EMB)//绣花
{
idxStr = "EmbNeedle/"+QString::number(idx)+"_coloridx";//绣花
}
else if(m_colorBeginStepCtrl == DATA_PUNCH)//冲孔
{
idxStr = "PunchNeedle/"+QString::number(idx)+"_coloridx";//冲孔
}
else if(m_colorBeginStepCtrl == DATA_SEWING)//缝纫
{
idxStr = "SewNeedle/"+QString::number(idx)+"_coloridx";//缝纫
}
else
{
idxStr = "PunchNeedle/"+QString::number(idx)+"_coloridx";//冲孔
}
return idxStr;
}
QString ColorOrderSetWidget::getNeedleColorStr(s16 colorIdx, s16 idx)
{
QString idxStr;
idxStr.clear();
if(colorIdx > EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM)//缝纫
{
idxStr = "SewNeedle/";
}
else if(colorIdx > EMB_NEEDLE_NUM)//冲孔
{
idxStr = "PunchNeedle/";
}
else
{
idxStr = "EmbNeedle/";
}
idxStr += QString::number(idx)+"_coloridx";
return idxStr;
}
//刷新色序锁定按钮
void ColorOrderSetWidget::refreshLockBtn()
{
SetControlStyle setControlStyle;
setControlStyle.setUiName(this->objectName());
if(m_colorSetBtnLockFlag == 1)//锁住
{
ui->buttonColorSetLock->setCheckable(true);
ui->buttonColorSetLock->setChecked(true);
ui->buttonColorSetLock->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonColorSetLock->objectName()));
ui->buttonNeedle->setStyleSheet(LABELWHITESTYLE);
ui->buttonNeedle->setEnabled(false);//针杆按钮不可按
}
else//解锁
{
ui->buttonColorSetLock->setChecked(false);
ui->buttonColorSetLock->setCheckable(false);
ui->buttonColorSetLock->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonColorSetLock->objectName()+"_unlock"));
ui->buttonNeedle->setStyleSheet(BUTTONWHITESTYLE);
ui->buttonNeedle->setEnabled(true);//针杆按钮可按
}
}
QString ColorOrderSetWidget::getCurColorTabStr(s16 needleIdx)
{
QString strNeedle;
strNeedle.clear();
if(needleIdx > EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM)//缝纫
{
strNeedle = tr("S");
}
else if(needleIdx > EMB_NEEDLE_NUM)//冲孔
{
strNeedle = tr("P");
}
else
{
strNeedle = tr("E");
}
//等于压胶机
if(g_emMacType == MACHINE_ADHESIVE)
{
strNeedle = tr("G");
}
return strNeedle;
}
void ColorOrderSetWidget::getCurColorTabValue(s16 &colorInTab)
{
if(colorInTab > EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM)//缝纫
{
colorInTab -= EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM;
}
else if(colorInTab > EMB_NEEDLE_NUM)//冲孔
{
colorInTab -= EMB_NEEDLE_NUM;
}
}
void ColorOrderSetWidget::showPunchShape(QString filePath)
{
DataFileDsr dsr;
int ret = dsr.createPunchShapeData(filePath);
if(ret < 0)
{
return;
}
int num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt();
for(int i = 0; i < num; i++)
{
QLabel *pcLabel=new QLabel(ui->frameColorOrder);
int widthImg,heightImg;
if(i >= 0 && i <= 9)//仅一排
{
if(g_emResolut == resolution1910)
{
pcLabel->setGeometry(250+i*42+i*72,120,68,68);
widthImg = pcLabel->width()-5;
heightImg = pcLabel->height()-5;
}
else if(g_emResolut == resolution1006)
{
pcLabel->setGeometry(150+i*42+i*18,70,42,42);//42是单个控件高度18是控件间距
widthImg = pcLabel->width()-5;
heightImg = pcLabel->height()-5;
}
}
QImage Image(widthImg,heightImg, QImage::Format_ARGB32);
dsr.createPunchShapeImage(&Image,i);
pcLabel->setPixmap(QPixmap::fromImage(Image));
pcLabel->show();
}
}
//设置类型图标
void ColorOrderSetWidget::setTypeLogo(QString tStyle)
{
ui->buttonTypeLogo->setUnPreBtnLogo(tStyle);
}
//设置主title
void ColorOrderSetWidget::setMainTitle(QString str)
{
ui->labelMainTitle->setText(str);
}
void ColorOrderSetWidget::setSubTitle(QString str)
{
ui->labelSubTitle->setText(str);
}
void ColorOrderSetWidget::show(QString filePath)
{
m_colorSetBtnLockFlag = 1;//锁住
refreshLockBtn();
m_singleMulMode = 0;
ui->buttonSingle->setCheckable(true);
ui->buttonSingle->setChecked(true);
ui->buttonMul->setChecked(false);
ui->buttonMul->setCheckable(false);
QFileInfo file(filePath);
QString ext = file.suffix().toUpper();
m_pCurEmbData->setViewInfo(ui->labelPatternView->width(),ui->labelPatternView->height());
m_pCurEmbData->clear();
if(ext == "DST")//dst文件
{
DataFileDst dst;
dst.initFile(filePath);
dst.convertDataToAbs();
m_pCurEmbData->appendAbsFile(filePath,dst.getEmbAbsData());//生成文件信息
//m_colorTable.resize(dst.getColorNums());
m_colorNums = dst.getColorNums();
}
else if(ext == "DSR")//dsr文件
{
DataFileDsr dsr;
dsr.initFile(filePath);
dsr.convertDataToEmbAbs();
m_pCurEmbData->appendAbsFile(filePath,dsr.getEmbAbsData());//生成文件信息
//m_colorTable.resize(dsr.getColorNums());
m_colorNums = dsr.getColorNums();
}
m_pCurEmbData->getDsDat();
//转换为ds16数据后设置色序表
m_pCurEmbData->setDs16ColorOfTable((u8*)m_colorTable.data());
m_pCurEmbData->setEmbData();
m_greyBeginStep = 0;//灰色起始
m_greyEndStep = m_pCurEmbData->getStitchNums(); //灰色结束
QFileInfo info(filePath);
QString fileName = info.fileName();
int size = fileName.length();
if(size > NAMEMAXLENGTH+12)//花样名称过长时截取
{
fileName = fileName.mid(0,NAMEMAXLENGTH+12) + "~";
}
ui->labelNameValue->setText(fileName);
if(size <= 0)//未选择文件时
{
ui->labelTotalNeedleValue->setText("");
ui->labelTotalColorValue->setText("");
}
else
{
ui->labelTotalNeedleValue->setText(QString::number(m_pCurEmbData->getStitchNums()));
ui->labelTotalColor->setText(tr("Total color:"));//总颜色数:
ui->labelTotalColorValue->setText(QString::number(m_pCurEmbData->getColorNums()));
}
m_curSelectColor = 0;
if(m_buttonColorOrderList.size() > 0)
{
m_pColorBtn = m_buttonColorOrderList.at(0);//默认选中(等于)第一个色序按钮
}
refreshPatternCurColorShow();
refreshColorShow();
//不等于压胶机时
if(g_emMacType != MACHINE_ADHESIVE)
{
initNeedleBar();
}
if(g_emMacType == MACHINE_PUNCH_AUTOPOS)
{
showPunchShape(filePath);
}
#if(0)
ui->labelCurColorNumValue->setText("");
ui->labelBeginIdxValue->setText("");
ui->labelEndIdxValue->setText("");
ui->labelNeedleSelectValue->setText("");
#endif
QWidget::show();
}
void ColorOrderSetWidget::setColorTable(QByteArray table, int type)
{
ui->labelCurColorNum->setText(tr("Color num:"));//当前色序:
ui->labelNeedleSelect->setText(tr("Punch:"));//冲孔:
m_setType = type;
m_beforeColorTable.clear();
m_colorTable.clear();
if(m_setType == TYPE_HIGHSET)
{
m_beforeColorTable.append(table.data()+TABLE_HEIGHT_IDX,table.length()-TABLE_HEIGHT_IDX);
m_colorTable.append(table.data()+TABLE_HEIGHT_IDX,table.length()-TABLE_HEIGHT_IDX);
}
else
{
m_beforeColorTable.append(table);
m_colorTable.append(table);
}
}
void ColorOrderSetWidget::colorOrderBtnClick()
{
int idx = 0;
m_pColorBtn = (MyButton*) this->sender();
if(m_pColorBtn == NULL)
{
return;
}
for(int i = 0; i < m_buttonColorOrderList.size(); i++)
{
if(m_pColorBtn == m_buttonColorOrderList.at(i))
{
idx = i;
}
}
m_curSelectColor = (m_curPages - 1) * m_itemPerPage + idx;
//针杆按钮不选中
if(m_pEmbNeedleBtn != NULL)
{
m_pEmbNeedleBtn->setChecked(false);
m_pEmbNeedleBtn->setCheckable(false);
}
int minVal = 0;
int maxVal = 0;
int defVal = 0;
if(m_setType == TYPE_COLORSET)//色序设定
{
minVal = 1;
maxVal = 255;
defVal = 10;
}
else if(m_setType == TYPE_HIGHSET)
{
minVal = -127;
maxVal = 127;
defVal = 0;
}
//等于压胶机时
if(g_emMacType == MACHINE_ADHESIVE)
{
int idx = 0;
if(m_setType == TYPE_HIGHSET)
{
idx = TABLE_HEIGHT_IDX;
}
if(m_singleMulMode == 0)//单选
{
NumerInputDialog numberInputDlg;
numberInputDlg.setTitleStr(tr("Gear set"));//档位设置
numberInputDlg.setUnitStr("");
numberInputDlg.setValueAndRange(defVal, minVal, maxVal, 0);//默认10
if(numberInputDlg.exec() == 1)
{
s32 val = numberInputDlg.getValue();
m_colorTable[m_curSelectColor] = val;
emit siChangeColorTable(m_curSelectColor+idx,val);
}
}
else//多选
{
int val = ui->buttonValue->text().toInt();
m_colorTable[m_curSelectColor] = val;
emit siChangeColorTable(m_curSelectColor+idx,val);
}
}
refreshColorShow();
refreshPatternCurColorShow();//右下角花样数据
//不等于压胶机时
if(g_emMacType != MACHINE_ADHESIVE)
{
initNeedleBar();
}
}
//针杆按钮被按下
void ColorOrderSetWidget::embNeedleBtnPressed()
{
m_pEmbNeedleBtn = (QPushButton*) this->sender();
m_pEmbNeedleBtn->setCheckable(true);
m_pEmbNeedleBtn->setChecked(true);
}
//针杆按钮抬起
void ColorOrderSetWidget::embNeedleBtnReleased()
{
if(m_pColorBtn == NULL || m_pEmbNeedleBtn == NULL || m_curSelectColor == -1)
{
//按钮都不选中
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
m_buttonEmbNeedleList.at(i)->setChecked(false);
m_buttonEmbNeedleList.at(i)->setCheckable(false);
}
return;
}
int btnIdx = 0;
for(int i = 0; i < m_buttonEmbNeedleList.size(); i++)
{
if(m_pEmbNeedleBtn == m_buttonEmbNeedleList.at(i))
{
btnIdx = i+1;
}
m_buttonEmbNeedleList.at(i)->setChecked(false);
m_buttonEmbNeedleList.at(i)->setCheckable(false);
}
int num = 0;
getNeedleNum(num);//显示当前的色序的针杆
#if(0)
if(m_combineEmb == -1)//组合模式
{
if(btnIdx > num)
{
btnIdx = btnIdx-num;
}
}
#endif
int colorInPage = btnIdx;
if(m_colorBeginStepCtrl == DATA_SEWING)//缝纫
{
colorInPage += EMB_NEEDLE_NUM + PUNCH_NEEDLE_NUM;
}
else if(m_colorBeginStepCtrl == DATA_PUNCH)//冲孔
{
colorInPage += EMB_NEEDLE_NUM;
}
if(m_curSelectColor >= 0)
{
int colorInTab = m_colorTable.at(m_curSelectColor); // 文件中的色序
if (colorInTab != colorInPage || colorInTab == TOTAL_NEEDLE_NUM)
{
m_colorTable[m_curSelectColor] = colorInPage;
emit siChangeColorTable(m_curSelectColor,colorInPage);//针杆写入色序表
}
s16 selIdx = m_colorTable[m_curSelectColor];
getCurColorTabValue(selIdx);
QString str;
if(selIdx <= 0)
{
str = tr("Not set");//未设置
}
else
{
str = tr("Needle ") + QString::number(selIdx);//针杆
}
ui->labelNeedleSelectValue->setText(str);
//当前色序设定完成后自动跳到下一色序
if(m_curSelectColor < m_colorNums-1)
{
m_curSelectColor += 1;//花版中的第几个色序
}
refreshColorShow();
refreshPatternCurColorShow();
initNeedleBar();//下一个色序针杆变,在这个函数里
}
}
void ColorOrderSetWidget::punchDepthBtnClick()
{
int idx = 0;
m_pColorBtn = (MyButton*) this->sender();
if(m_pColorBtn == NULL)
{
return;
}
for(int i = 0; i < m_buttonPunchDepthList.size(); i++)
{
if(m_pColorBtn == m_buttonPunchDepthList[i])
{
idx = i;
}
}
NumerInputDialog numberInputDlg;
numberInputDlg.setTitleStr(tr("Punch depth"));//冲刀深度
numberInputDlg.setUnitStr("");
numberInputDlg.setValueAndRange(0, 0, 200, 2);//默认0,0~2
if(numberInputDlg.exec() == 1)
{
double val = (double)numberInputDlg.getValue() / 100;
g_pSettings->writeToIniFile("AUFUS/punchDepth"+QString::number(idx),QString::number(val,'f',2));
m_buttonPunchDepthList[idx]->setText(QString::number(val,'f',2));
}
}
void ColorOrderSetWidget::on_buttonPgUp_clicked()
{
m_curPages--;
refreshColorShow();
}
void ColorOrderSetWidget::on_buttonPgDn_clicked()
{
m_curPages++;
refreshColorShow();
}
void ColorOrderSetWidget::on_buttonOk_clicked()
{
if(m_setType == TYPE_COLORSET)//色序设定
{
emit siBackHome();
}
else if(m_setType == TYPE_HIGHSET)
{
emit siHighBackHome();
}
this->hide();
}
void ColorOrderSetWidget::on_buttonCancel_clicked()
{
//恢复之前的色序表
if(m_setType == TYPE_COLORSET)
{
emit siCancelChangeColor(m_beforeColorTable);
}
else if(m_setType == TYPE_HIGHSET)
{
emit siCancelChangeHigh(m_beforeColorTable);
}
this->hide();
}
//色序循环
void ColorOrderSetWidget::on_buttonColorOrderCycle_clicked()
{
QByteArray cycleTable;
cycleTable.clear();
//拷贝循环列表
for(int i = 0; i < m_colorTable.length(); i++)
{
int colorInTab = m_colorTable.at(i); // 色序
if(colorInTab != 0)
{
cycleTable.append(m_colorTable[i]);
}
else
{
break;
}
}
if(cycleTable.length() <= 0)
{
return;
}
//将循环列表循环复制到m_colorTable中
for(int i = 0; i < m_colorTable.length();)
{
memcpy((char*)m_colorTable.data() + i,(char*)cycleTable.data(),cycleTable.length());
i += cycleTable.length();
}
for(int i = 0; i < m_colorTable.length(); i++)
{
int colorInTab = m_colorTable.at(i); // 色序
if(m_setType == TYPE_COLORSET)
{
emit siChangeColorTable(i,colorInTab);
}
else if(m_setType == TYPE_HIGHSET)
{
emit siChangeColorTable(i+TABLE_HEIGHT_IDX,colorInTab);
}
}
m_pCurEmbData->setGreyAreaRange(0,m_pCurEmbData->getStitchNums());
m_pCurEmbData->setDispMode(EmbData::DISP_ALL_AREA, 1); // 重绘
QPixmap patternPix = m_pCurEmbData->getPreviewImage();
ui->labelPatternView->setPixmap(patternPix);
m_curSelectColor = -1;
refreshColorShow();
}
//色序清空
void ColorOrderSetWidget::on_buttonColorOrderClear_clicked()
{
for(int i = 0; i < m_colorTable.length(); i++)
{
m_colorTable[i] = 0;//清空
int colorInTab = m_colorTable.at(i); // 色序
if(m_setType == TYPE_COLORSET)
{
emit siChangeColorTable(i,colorInTab);
}
else if(m_setType == TYPE_HIGHSET)
{
emit siChangeColorTable(i+TABLE_HEIGHT_IDX,colorInTab);
}
}
m_pCurEmbData->setGreyAreaRange(0,m_pCurEmbData->getStitchNums());
m_pCurEmbData->setDispAreaRange(0,0);
m_pCurEmbData->setDispMode(EmbData::DISP_ALL_AREA, 1); // 重绘
QPixmap patternPix = m_pCurEmbData->getPreviewImage();
ui->labelPatternView->setPixmap(patternPix);
m_curSelectColor = -1;
refreshColorShow();
}
//色序设定是否解锁,锁住时针杆不可切换,未锁住时针杆可切换
void ColorOrderSetWidget::on_buttonColorSetLock_clicked()
{
m_colorSetBtnLockFlag *= -1;
refreshLockBtn();
}
//切换成不同的针杆显示
void ColorOrderSetWidget::on_buttonNeedle_clicked()
{
switch (m_colorBeginStepCtrl)
{
case DATA_EMB://第一次进来是平绣
{
break;
}
}
switchNeedleBar();
}
void ColorOrderSetWidget::on_buttonSingle_clicked()
{
m_singleMulMode = 0;
ui->buttonSingle->setCheckable(true);
ui->buttonSingle->setChecked(true);
ui->buttonMul->setChecked(false);
ui->buttonMul->setCheckable(false);
}
void ColorOrderSetWidget::on_buttonMul_clicked()
{
m_singleMulMode = 1;
ui->buttonMul->setCheckable(true);
ui->buttonMul->setChecked(true);
ui->buttonSingle->setChecked(false);
ui->buttonSingle->setCheckable(false);
//等于压胶机时
if(g_emMacType == MACHINE_ADHESIVE)
{
NumerInputDialog numberInputDlg;
numberInputDlg.setTitleStr(tr("Gear set"));//档位设置
numberInputDlg.setUnitStr("");
numberInputDlg.setValueAndRange(10, 1, 255, 0);//默认10
if(numberInputDlg.exec() == 1)
{
s32 val = numberInputDlg.getValue();
ui->buttonValue->setText(QString::number(val));
}
}
}
void ColorOrderSetWidget::slotChangeNeedleColor(int idx, int colorIdx)
{
if(m_pCurEmbData != NULL)
{
m_pCurEmbData->setNeedleColorTable(idx,colorIdx);
}
}