PunchHMI/sharedviews/colorordersetwidget.cpp

1690 lines
51 KiB
C++
Raw Permalink Normal View History

2024-02-06 06:58:57 +00:00
#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);
}
}