913 lines
26 KiB
C++
913 lines
26 KiB
C++
|
#include "patternselectwidget.h"
|
|||
|
#include "ui_patternselectwidget.h"
|
|||
|
|
|||
|
PatternSelectWidget::PatternSelectWidget(QWidget *parent) :
|
|||
|
QWidget(parent),
|
|||
|
ui(new Ui::PatternSelectWidget),
|
|||
|
m_itemPerPage(10)
|
|||
|
{
|
|||
|
ui->setupUi(this);
|
|||
|
setWindowFlags (Qt::Window | Qt::FramelessWindowHint);
|
|||
|
setWindowModality(Qt::ApplicationModal);
|
|||
|
|
|||
|
this->move(0,0);
|
|||
|
initControl();
|
|||
|
initialize();
|
|||
|
}
|
|||
|
|
|||
|
PatternSelectWidget::~PatternSelectWidget()
|
|||
|
{
|
|||
|
delete ui;
|
|||
|
}
|
|||
|
|
|||
|
//初始化窗体控件,包括位置、尺寸、样式
|
|||
|
void PatternSelectWidget::initControl()
|
|||
|
{
|
|||
|
m_imageButtonList.clear();
|
|||
|
m_imageButtonList.append(ui->buttonImage1);
|
|||
|
m_imageButtonList.append(ui->buttonImage2);
|
|||
|
m_imageButtonList.append(ui->buttonImage3);
|
|||
|
m_imageButtonList.append(ui->buttonImage4);
|
|||
|
m_imageButtonList.append(ui->buttonImage5);
|
|||
|
m_imageButtonList.append(ui->buttonImage6);
|
|||
|
m_imageButtonList.append(ui->buttonImage7);
|
|||
|
m_imageButtonList.append(ui->buttonImage8);
|
|||
|
m_imageButtonList.append(ui->buttonImage9);
|
|||
|
m_imageButtonList.append(ui->buttonImage10);
|
|||
|
|
|||
|
//根据不同分辨率设置控件的位置和尺寸
|
|||
|
switch (g_emResolut)
|
|||
|
{
|
|||
|
case resolution1910:
|
|||
|
initResolution1910();
|
|||
|
break;
|
|||
|
case resolution1006:
|
|||
|
initResolution1006();
|
|||
|
break;
|
|||
|
default:
|
|||
|
this->resize(1920,1080);
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
initControlStyle();//初始化窗体控件样式
|
|||
|
}
|
|||
|
|
|||
|
//初始化窗体控件为1920x1080分辨率
|
|||
|
void PatternSelectWidget::initResolution1910()
|
|||
|
{
|
|||
|
this->resize(1920,1080);
|
|||
|
ui->frameBack->setGeometry(0,0,1920,1080);
|
|||
|
ui->buttonTypeLogo->setGeometry(128,66,78,78);
|
|||
|
ui->labelMainTitle->setGeometry(226,60,1000,44);
|
|||
|
ui->labelSubTitle->setGeometry(302,112,1000,36);
|
|||
|
ui->frameImage->setGeometry(48,194,1422,748);
|
|||
|
|
|||
|
//预览图片
|
|||
|
QRect rectImage(14,12,230,230);
|
|||
|
QRect rectName(36,262,210,82);
|
|||
|
for(int i = 0; i < 2; i++)
|
|||
|
{
|
|||
|
s16 num = m_imageButtonList.size()/2;
|
|||
|
for(int j = 0; j < num; j++)
|
|||
|
{
|
|||
|
m_imageButtonList.at(i*num + j)->setGeometry(0+j*288 ,0+i*390,256,356);
|
|||
|
m_imageButtonList.at(i*num + j)->initUpImageDownName(rectImage,rectName);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
ui->frameRightUp->setGeometry(1716,92,172,72);
|
|||
|
ui->buttonBackUpDir->setGeometry(102,0,66,66);
|
|||
|
|
|||
|
//label样式
|
|||
|
ui->labelMainTitle->setFont(fontBold_1);
|
|||
|
ui->labelMainTitle->setStyleSheet(LABELWHITESTYLE);
|
|||
|
ui->labelSubTitle->setFont(fontNormal_1);
|
|||
|
ui->labelSubTitle->setStyleSheet(LABELWHITESTYLE);
|
|||
|
ui->labelPageNum->setFont(fontNormal_1);
|
|||
|
ui->labelPageNum->setStyleSheet(LABELWHITESTYLE);
|
|||
|
|
|||
|
ui->frameInfo1->setGeometry(1528,210,328,284);
|
|||
|
|
|||
|
QList<QLabel*> labelList1;
|
|||
|
labelList1.append(ui->labelPatternName);
|
|||
|
labelList1.append(ui->labelTotalNeedle);
|
|||
|
labelList1.append(ui->labelColorNum);
|
|||
|
labelList1.append(ui->labelPatternWidth);
|
|||
|
labelList1.append(ui->labelPatternHeight);
|
|||
|
labelList1.append(ui->labelX);
|
|||
|
labelList1.append(ui->labelY);
|
|||
|
for(int i = 0; i < labelList1.size(); i++)
|
|||
|
{
|
|||
|
labelList1[i]->setGeometry(0,i*40,138,32);
|
|||
|
labelList1[i]->setFont(fontNormal_6);
|
|||
|
labelList1[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
QList<QLabel*> labelList2;
|
|||
|
labelList2.append(ui->labelPatternNameValue);
|
|||
|
labelList2.append(ui->labelTotalNeedleValue);
|
|||
|
labelList2.append(ui->labelColorNumValue);
|
|||
|
labelList2.append(ui->labelPatternWidthValue);
|
|||
|
labelList2.append(ui->labelPatternHeightValue);
|
|||
|
labelList2.append(ui->labelXValue);
|
|||
|
labelList2.append(ui->labelYValue);
|
|||
|
for(int i = 0; i < labelList2.size(); i++)
|
|||
|
{
|
|||
|
labelList2[i]->setGeometry(138,i*40,176,32);
|
|||
|
labelList2[i]->setFont(fontNormal_6);
|
|||
|
labelList2[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
ui->frameInfo2->setGeometry(1528,526,328,398);
|
|||
|
|
|||
|
QList<QLabel*> labelList3;
|
|||
|
labelList3.append(ui->labelRotate);
|
|||
|
labelList3.append(ui->labelDirection);
|
|||
|
labelList3.append(ui->labelHor);
|
|||
|
labelList3.append(ui->labelVer);
|
|||
|
for(int i = 0; i < labelList3.size(); i++)
|
|||
|
{
|
|||
|
labelList3[i]->setGeometry(0,40+i*40,200,32);
|
|||
|
labelList3[i]->setFont(fontNormal_6);
|
|||
|
labelList3[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
QList<QLabel*> labelList4;
|
|||
|
labelList4.append(ui->labelRotateValue);
|
|||
|
labelList4.append(ui->labelDirectionValue);
|
|||
|
labelList4.append(ui->labelHorValue);
|
|||
|
labelList4.append(ui->labelVerValue);
|
|||
|
for(int i = 0; i < labelList4.size(); i++)
|
|||
|
{
|
|||
|
labelList4[i]->setGeometry(192,40+i*40,130,32);
|
|||
|
labelList4[i]->setFont(fontNormal_6);
|
|||
|
labelList4[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
ui->framePageBtn->setGeometry(1120,990,800,70);
|
|||
|
ui->labelPageNum->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);
|
|||
|
}
|
|||
|
|
|||
|
//初始化窗体控件为1024x600分辨率
|
|||
|
void PatternSelectWidget::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->frameImage->setGeometry(27,108,791,431);
|
|||
|
|
|||
|
//预览图片
|
|||
|
QRect rectImage(7,9,120,120);
|
|||
|
QRect rectName(18,144,112,42);
|
|||
|
for(int i = 0; i < 2; i++)
|
|||
|
{
|
|||
|
s16 num = m_imageButtonList.size()/2;
|
|||
|
for(int j = 0; j < num; j++)
|
|||
|
{
|
|||
|
m_imageButtonList.at(i*num + j)->setGeometry(0+j*155,0+i*220,134,197);
|
|||
|
m_imageButtonList.at(i*num + j)->initUpImageDownName(rectImage,rectName);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
ui->frameRightUp->setGeometry(800,40,300,61);
|
|||
|
ui->buttonBackUpDir->setGeometry(150,0,50,50);
|
|||
|
|
|||
|
//label样式
|
|||
|
ui->labelMainTitle->setFont(fontBold_1);
|
|||
|
ui->labelMainTitle->setStyleSheet(LABELWHITESTYLE);
|
|||
|
ui->labelSubTitle->setFont(fontNormal_1);
|
|||
|
ui->labelSubTitle->setStyleSheet(LABELWHITESTYLE);
|
|||
|
ui->labelPageNum->setFont(fontNormal_1);
|
|||
|
ui->labelPageNum->setStyleSheet(LABELWHITESTYLE);
|
|||
|
|
|||
|
ui->frameInfo1->setGeometry(804,110,222,191);
|
|||
|
|
|||
|
QList<QLabel*> labelList1;
|
|||
|
labelList1.append(ui->labelPatternName);
|
|||
|
labelList1.append(ui->labelTotalNeedle);
|
|||
|
labelList1.append(ui->labelColorNum);
|
|||
|
labelList1.append(ui->labelPatternWidth);
|
|||
|
labelList1.append(ui->labelPatternHeight);
|
|||
|
labelList1.append(ui->labelX);
|
|||
|
labelList1.append(ui->labelY);
|
|||
|
for(int i = 0; i < labelList1.size(); i++)
|
|||
|
{
|
|||
|
labelList1[i]->setGeometry(5,i*26,90,32);
|
|||
|
labelList1[i]->setFont(fontNormal_6);
|
|||
|
labelList1[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
QList<QLabel*> labelList2;
|
|||
|
labelList2.append(ui->labelPatternNameValue);
|
|||
|
labelList2.append(ui->labelTotalNeedleValue);
|
|||
|
labelList2.append(ui->labelColorNumValue);
|
|||
|
labelList2.append(ui->labelPatternWidthValue);
|
|||
|
labelList2.append(ui->labelPatternHeightValue);
|
|||
|
labelList2.append(ui->labelXValue);
|
|||
|
labelList2.append(ui->labelYValue);
|
|||
|
for(int i = 0; i < labelList2.size(); i++)
|
|||
|
{
|
|||
|
labelList2[i]->setGeometry(42,i*26,140,32);
|
|||
|
labelList2[i]->setFont(fontNormal_6);
|
|||
|
labelList2[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
ui->frameInfo2->setGeometry(804,310,222,232);
|
|||
|
|
|||
|
QList<QLabel*> labelList3;
|
|||
|
labelList3.append(ui->labelRotate);
|
|||
|
labelList3.append(ui->labelDirection);
|
|||
|
labelList3.append(ui->labelHor);
|
|||
|
labelList3.append(ui->labelVer);
|
|||
|
for(int i = 0; i < labelList3.size(); i++)
|
|||
|
{
|
|||
|
labelList3[i]->setGeometry(5,i*26,110,32);
|
|||
|
labelList3[i]->setFont(fontNormal_6);
|
|||
|
labelList3[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
QList<QLabel*> labelList4;
|
|||
|
labelList4.append(ui->labelRotateValue);
|
|||
|
labelList4.append(ui->labelDirectionValue);
|
|||
|
labelList4.append(ui->labelHorValue);
|
|||
|
labelList4.append(ui->labelVerValue);
|
|||
|
for(int i = 0; i < labelList4.size(); i++)
|
|||
|
{
|
|||
|
labelList4[i]->setGeometry(72,i*26,110,32);
|
|||
|
labelList4[i]->setFont(fontNormal_6);
|
|||
|
labelList4[i]->setStyleSheet(LABELWHITESTYLE);
|
|||
|
}
|
|||
|
|
|||
|
ui->framePageBtn->setGeometry(595,545,600,45);
|
|||
|
ui->labelPageNum->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 PatternSelectWidget::initControlStyle()
|
|||
|
{
|
|||
|
SetControlStyle setControlStyle;
|
|||
|
setControlStyle.setUiName(this->objectName());
|
|||
|
|
|||
|
//背景图
|
|||
|
QString frameBackImgPath = setControlStyle.getStyleSheet(this->objectName());
|
|||
|
ui->frameBack->setStyleSheet(frameBackImgPath);
|
|||
|
|
|||
|
//frame样式
|
|||
|
ui->framePageBtn->setStyleSheet(TRANSPARENTSTYLE);
|
|||
|
ui->frameImage->setStyleSheet(TRANSPARENTSTYLE);
|
|||
|
ui->frameInfo1->setStyleSheet(TRANSPARENTSTYLE);
|
|||
|
ui->frameInfo2->setStyleSheet(TRANSPARENTSTYLE);
|
|||
|
ui->frameRightUp->setStyleSheet(TRANSPARENTSTYLE);
|
|||
|
|
|||
|
//条目
|
|||
|
for(int i = 0; i < m_itemPerPage; i++)
|
|||
|
{
|
|||
|
m_imageButtonList[i]->setCheckedBottomImage(setControlStyle.getBottomStyleSheet(m_imageButtonList[i]->parent()->objectName()));
|
|||
|
m_imageButtonList[i]->setLabelFont(fontNormal_12);
|
|||
|
}
|
|||
|
|
|||
|
ui->buttonBackUpDir->setGreenGradientBottomStyle(BORDER_RADIUS1);
|
|||
|
ui->buttonBackUpDir->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonBackUpDir->objectName()));
|
|||
|
|
|||
|
//四个按钮样式表一样
|
|||
|
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 PatternSelectWidget::initialize()
|
|||
|
{
|
|||
|
m_firstFilePath.clear();
|
|||
|
m_curFilePath.clear();
|
|||
|
m_fileItemList.clear();
|
|||
|
|
|||
|
m_curPages = 1;//花样选择界面当前页数
|
|||
|
m_pageNums = 1;//总页数
|
|||
|
m_selectedPattenIdx = -1;//被选中的花版号
|
|||
|
|
|||
|
initPattern();
|
|||
|
}
|
|||
|
|
|||
|
//初始化花样
|
|||
|
void PatternSelectWidget::initPattern()
|
|||
|
{
|
|||
|
//花样文件目录
|
|||
|
QDir apppath(qApp->applicationDirPath());
|
|||
|
QString filePath = apppath.path() + apppath.separator() + PATTERNPATH;
|
|||
|
m_firstFilePath = QDir(filePath).absolutePath();//为了将"\"变为"/"
|
|||
|
getDirPatternFiles(m_firstFilePath);
|
|||
|
}
|
|||
|
|
|||
|
//获取花样文件下的路径或者花样
|
|||
|
void PatternSelectWidget::getDirPatternFiles(QString dirPath)
|
|||
|
{
|
|||
|
m_curFilePath = dirPath;//记录当前目录
|
|||
|
if(m_curFilePath == m_firstFilePath)//如果当前目录为一级目录
|
|||
|
{
|
|||
|
ui->buttonBackUpDir->setEnabled(false);//设置按钮不可按(返回上级目录按钮)
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ui->buttonBackUpDir->setEnabled(true);//设置按钮可按(返回上级目录按钮)
|
|||
|
}
|
|||
|
|
|||
|
createCurDirPatterns();
|
|||
|
}
|
|||
|
//刷新界面显示
|
|||
|
void PatternSelectWidget::refreshPageUi()
|
|||
|
{
|
|||
|
int itemNum;
|
|||
|
if (m_fileItemList.size() <= 0)
|
|||
|
{
|
|||
|
itemNum = 0;
|
|||
|
|
|||
|
for (int i = 0; i < m_itemPerPage; i++)
|
|||
|
{
|
|||
|
m_imageButtonList.at(i)->hide();
|
|||
|
}
|
|||
|
ui->labelPageNum->setText(tr("PageNum: 0/0"));//页数: 0/0
|
|||
|
ui->buttonPgUp->setEnabled(false);
|
|||
|
ui->buttonPgDn->setEnabled(false);
|
|||
|
ui->buttonOk->setEnabled(false);
|
|||
|
|
|||
|
clearFileInfo();
|
|||
|
return;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
itemNum = m_fileItemList.size();
|
|||
|
}
|
|||
|
|
|||
|
m_pageNums = (itemNum + m_itemPerPage - 1)/m_itemPerPage;// 计算页数
|
|||
|
if (m_curPages > m_pageNums)// 当前页
|
|||
|
{
|
|||
|
m_curPages = m_pageNums;
|
|||
|
}
|
|||
|
if (m_curPages <= 1)
|
|||
|
{
|
|||
|
m_curPages = 1;
|
|||
|
}
|
|||
|
|
|||
|
int itemidx = (m_curPages - 1) * m_itemPerPage;
|
|||
|
|
|||
|
for (int i = 0; i < m_itemPerPage; i++)
|
|||
|
{
|
|||
|
if (itemidx < itemNum)
|
|||
|
{
|
|||
|
QImage image = m_fileItemList.at(itemidx).getPreviewImage();
|
|||
|
m_imageButtonList[i]->setPreviewImage(image);
|
|||
|
m_imageButtonList[i]->setLabelName(m_fileItemList.at(itemidx).getShowInfo());
|
|||
|
m_imageButtonList.at(i)->show();
|
|||
|
|
|||
|
itemidx++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_imageButtonList.at(i)->hide();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 翻页按钮
|
|||
|
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 str = tr("pageNum: ") + QString("%1/%2").arg(m_curPages).arg(m_pageNums);//页数:
|
|||
|
ui->labelPageNum->setText(str);
|
|||
|
|
|||
|
//refreshCheckedPage();
|
|||
|
refreshChecked();
|
|||
|
}
|
|||
|
|
|||
|
//刷新条目选中状态
|
|||
|
void PatternSelectWidget::refreshCheckedPage()
|
|||
|
{
|
|||
|
int num =m_fileItemList.size();
|
|||
|
if (num <= m_selectedPattenIdx)//没有花版 num = 0
|
|||
|
{
|
|||
|
m_selectedPattenIdx = -1;
|
|||
|
}
|
|||
|
|
|||
|
if(m_selectedPattenIdx == -1)//被选中的花版号初始化的时候就是-1
|
|||
|
{
|
|||
|
clearFileInfo();//清空花样信息
|
|||
|
ui->buttonOk->setEnabled(false);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ui->buttonOk->setEnabled(true);
|
|||
|
}
|
|||
|
|
|||
|
// 刷新页面中被选择的条目
|
|||
|
for(int var = 0; var < m_itemPerPage; var++)//var < 花样选择界面每页图片数
|
|||
|
{
|
|||
|
int idx = (m_curPages - 1) * (m_itemPerPage) + var;
|
|||
|
if(m_selectedPattenIdx == idx)//选中的花版号等于 idx
|
|||
|
{
|
|||
|
QString filePath = m_fileItemList.at(m_selectedPattenIdx).getFilePath();//m_fileItemList 花样列表,从0开始
|
|||
|
QFileInfo file(filePath);
|
|||
|
if(file.isDir())//为文件夹
|
|||
|
{
|
|||
|
m_selectedPattenIdx = -1;
|
|||
|
getDirPatternFiles(filePath);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
//所选文件
|
|||
|
QString ext = file.suffix().toUpper();
|
|||
|
getFileInfo(filePath,ext);//获取花样信息
|
|||
|
|
|||
|
// 条目被选中
|
|||
|
m_imageButtonList.at(var)->setCheckable(true);
|
|||
|
m_imageButtonList.at(var)->setChecked(true);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 不被选中
|
|||
|
m_imageButtonList.at(var)->setChecked(false);
|
|||
|
m_imageButtonList.at(var)->setCheckable(false);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::refreshChecked()
|
|||
|
{
|
|||
|
int num =m_fileItemList.size();
|
|||
|
if (num <= m_selectedPattenIdx)//没有花版 num = 0
|
|||
|
{
|
|||
|
m_selectedPattenIdx = -1;
|
|||
|
}
|
|||
|
|
|||
|
if(m_selectedPattenIdx == -1)//被选中的花版号初始化的时候就是-1
|
|||
|
{
|
|||
|
clearFileInfo();//清空花样信息
|
|||
|
ui->buttonOk->setEnabled(false);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ui->buttonOk->setEnabled(true);
|
|||
|
}
|
|||
|
|
|||
|
// 刷新页面中被选择的条目
|
|||
|
for(int var = 0; var < m_itemPerPage; var++)//var < 花样选择界面每页图片数
|
|||
|
{
|
|||
|
int idx = (m_curPages - 1) * (m_itemPerPage) + var;
|
|||
|
if(m_selectedPattenIdx == idx)//选中的花版号等于 idx
|
|||
|
{
|
|||
|
if(m_selectedPattenIdx == -1 ||
|
|||
|
m_selectedPattenIdx >= m_fileItemList.size())
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
QString filePath = m_fileItemList.at(m_selectedPattenIdx).getFilePath();//m_fileItemList 花样列表,从0开始
|
|||
|
QFileInfo file(filePath);
|
|||
|
if(file.isDir())//为文件夹
|
|||
|
{
|
|||
|
m_selectedPattenIdx = -1;
|
|||
|
getDirPatternFiles(filePath);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 条目被选中
|
|||
|
m_imageButtonList.at(var)->setCheckable(true);
|
|||
|
m_imageButtonList.at(var)->setChecked(true);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// 不被选中
|
|||
|
m_imageButtonList.at(var)->setChecked(false);
|
|||
|
m_imageButtonList.at(var)->setCheckable(false);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//点击花样图片
|
|||
|
void PatternSelectWidget::clickItem(int idx)
|
|||
|
{
|
|||
|
if(m_fileItemList.size() <= 0)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
m_selectedPattenIdx = (m_curPages - 1) * m_itemPerPage + idx - 1;
|
|||
|
refreshCheckedPage();
|
|||
|
}
|
|||
|
|
|||
|
//清空花样信息
|
|||
|
void PatternSelectWidget::clearFileInfo()
|
|||
|
{
|
|||
|
ui->labelColorNumValue->clear();
|
|||
|
ui->labelDirectionValue->clear();
|
|||
|
ui->labelPatternHeightValue->clear();
|
|||
|
ui->labelPatternNameValue->clear();
|
|||
|
ui->labelPatternWidthValue->clear();
|
|||
|
ui->labelRotateValue->clear();
|
|||
|
ui->labelTotalNeedleValue->clear();
|
|||
|
ui->labelXValue->clear();
|
|||
|
ui->labelYValue->clear();
|
|||
|
}
|
|||
|
|
|||
|
//获取花样信息
|
|||
|
void PatternSelectWidget::getFileInfo(QString filePath, QString suffix)
|
|||
|
{
|
|||
|
QFileInfo file(filePath);
|
|||
|
QString fileName = file.fileName();
|
|||
|
int size = fileName.length();
|
|||
|
if(size > NAMEMAXLENGTH)//花样名称过长时截取
|
|||
|
{
|
|||
|
fileName = fileName.mid(0,NAMEMAXLENGTH) + "~";
|
|||
|
}
|
|||
|
|
|||
|
if(suffix == "DST")//dst文件
|
|||
|
{
|
|||
|
//qDebug()<<"dst click begin";
|
|||
|
|
|||
|
DataFileDst dst;
|
|||
|
dst.initFile(filePath);
|
|||
|
|
|||
|
//qDebug()<<"dst.convertDataToAbs() begin";
|
|||
|
dst.convertDataToAbs();
|
|||
|
//qDebug()<<"dst.convertDataToAbs() end";
|
|||
|
|
|||
|
ui->labelPatternNameValue->setText(fileName);
|
|||
|
ui->labelTotalNeedleValue->setText(QString::number(dst.getStitchNums()));
|
|||
|
ui->labelColorNumValue->setText(QString::number(dst.getColorNums()));
|
|||
|
|
|||
|
double width = dst.getDatWidth()*0.01;
|
|||
|
ui->labelPatternWidthValue->setText(QString("%1").arg(width));
|
|||
|
|
|||
|
double height = dst.getDatHeight()*0.01;
|
|||
|
ui->labelPatternHeightValue->setText(QString("%1").arg(height));
|
|||
|
|
|||
|
double maxX = dst.getMaxX()*0.01;
|
|||
|
double minX = dst.getMinX()*0.01;
|
|||
|
ui->labelXValue->setText(QString("(%1,%2)").arg(maxX).arg(minX));
|
|||
|
|
|||
|
double maxY = dst.getMaxY()*0.01;
|
|||
|
double minY = dst.getMinY()*0.01;
|
|||
|
ui->labelYValue->setText(QString("(%1,%2)").arg(maxY).arg(minY));
|
|||
|
|
|||
|
//qDebug()<<"showfileinfo end";
|
|||
|
}
|
|||
|
else if(suffix == "DSR")//dsr文件
|
|||
|
{
|
|||
|
DataFileDsr dsr;
|
|||
|
dsr.initFile(filePath);
|
|||
|
dsr.convertDataToEmbAbs();
|
|||
|
|
|||
|
ui->labelPatternNameValue->setText(fileName);
|
|||
|
ui->labelTotalNeedleValue->setText(QString::number(dsr.getStitchNums()));
|
|||
|
ui->labelColorNumValue->setText(QString::number(dsr.getColorNums()));
|
|||
|
|
|||
|
double width = dsr.getDatWidth()*0.01;
|
|||
|
ui->labelPatternWidthValue->setText(QString("%1").arg(width));
|
|||
|
|
|||
|
double height = dsr.getDatHeight()*0.01;
|
|||
|
ui->labelPatternHeightValue->setText(QString("%1").arg(height));
|
|||
|
|
|||
|
double maxX = dsr.getMaxX()*0.01;
|
|||
|
double minX = dsr.getMinX()*0.01;
|
|||
|
ui->labelXValue->setText(QString("(%1,%2)").arg(maxX).arg(minX));
|
|||
|
|
|||
|
double maxY = dsr.getMaxY()*0.01;
|
|||
|
double minY = dsr.getMinY()*0.01;
|
|||
|
ui->labelYValue->setText(QString("(%1,%2)").arg(maxY).arg(minY));
|
|||
|
}
|
|||
|
|
|||
|
//qDebug()<<"get patternpara begin";
|
|||
|
|
|||
|
refreshSettingInfo(filePath);
|
|||
|
}
|
|||
|
|
|||
|
//设置类型图标
|
|||
|
void PatternSelectWidget::setTypeLogo(QString tStyle)
|
|||
|
{
|
|||
|
ui->buttonTypeLogo->setUnPreBtnLogo(tStyle);
|
|||
|
}
|
|||
|
|
|||
|
//设置主title
|
|||
|
void PatternSelectWidget::setMainTitle(QString str)
|
|||
|
{
|
|||
|
ui->labelMainTitle->setText(str);
|
|||
|
}
|
|||
|
|
|||
|
//设置副title
|
|||
|
void PatternSelectWidget::setSubTitle(QString str)
|
|||
|
{
|
|||
|
ui->labelSubTitle->setText(str);
|
|||
|
}
|
|||
|
|
|||
|
//生成当前路径花样
|
|||
|
void PatternSelectWidget::createCurDirPatterns()
|
|||
|
{
|
|||
|
m_fileItemList.clear();
|
|||
|
QDir dir(m_curFilePath);
|
|||
|
|
|||
|
// 打开文件所在的路径
|
|||
|
if(!dir.exists())
|
|||
|
{
|
|||
|
m_curPages = 0;
|
|||
|
m_pageNums = 0;
|
|||
|
qDebug() << "dirpath not exist, name=" << m_curFilePath;
|
|||
|
|
|||
|
dir.mkdir(m_curFilePath);//创建花样文件夹
|
|||
|
}
|
|||
|
|
|||
|
FileItem item;
|
|||
|
QString fileName;
|
|||
|
QString filePath;
|
|||
|
DataFileDst dst;
|
|||
|
DataFileDsr dsr;
|
|||
|
|
|||
|
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); // 设置类型过滤器,只为文件夹和dst文件格式
|
|||
|
dir.setSorting(QDir::DirsFirst | QDir::IgnoreCase); // 设置排序方式
|
|||
|
|
|||
|
QFileInfoList fileList = dir.entryInfoList();
|
|||
|
int count = fileList.count();
|
|||
|
for(int i = 0; i < count; i++)
|
|||
|
{
|
|||
|
QImage image(QSize(ui->buttonImage1->labelImage->width(), ui->buttonImage1->labelImage->height()), IMAGE_TYPE);
|
|||
|
QFileInfo fileInfo = fileList[i];
|
|||
|
|
|||
|
if(fileInfo.isDir())//为文件夹
|
|||
|
{
|
|||
|
filePath = fileInfo.absoluteFilePath();
|
|||
|
fileName = fileInfo.baseName();
|
|||
|
if(g_emResolut == resolution1910)
|
|||
|
{
|
|||
|
image.load(":/images/folderBig.png");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
image.load(":/images/folder.png");
|
|||
|
}
|
|||
|
item.setFileInfo(filePath,fileName,image);
|
|||
|
m_fileItemList.append(item);
|
|||
|
}
|
|||
|
else//为文件
|
|||
|
{
|
|||
|
filePath = fileInfo.absoluteFilePath();
|
|||
|
fileName = fileInfo.fileName();
|
|||
|
QString imageName = filePath + ".preview.png";
|
|||
|
QFile imageFile(imageName);
|
|||
|
|
|||
|
if(fileInfo.suffix().toUpper() == "DST")//为dst文件
|
|||
|
{
|
|||
|
if(!imageFile.exists())//图片不存在时生成图片
|
|||
|
{
|
|||
|
//重新改变图片大小,因为文件夹的图标大小与图片大小不同
|
|||
|
dst.initColor(g_pSettings->getColorRgbArray().size(),(QRgb*)g_pSettings->getColorRgbArray().data());
|
|||
|
dst.initFile(filePath);
|
|||
|
dst.createPreviewImage(&image, 1, PEN_WIDTH);// 生成预览文件
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
image.load(imageName);
|
|||
|
}
|
|||
|
item.setFileInfo(filePath,fileName,image);
|
|||
|
m_fileItemList.append(item);
|
|||
|
}
|
|||
|
else if(fileInfo.suffix().toUpper() == "DSR")//dsr文件
|
|||
|
{
|
|||
|
if(!imageFile.exists())//图片不存在时生成图片
|
|||
|
{
|
|||
|
dsr.initColor(g_pSettings->getColorRgbArray().size(),(QRgb*)g_pSettings->getColorRgbArray().data());
|
|||
|
dsr.initFile(filePath);
|
|||
|
dsr.createPreviewImage(&image, 1, PEN_WIDTH);// 生成预览文件
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
image.load(imageName);
|
|||
|
}
|
|||
|
item.setFileInfo(filePath,fileName,image);
|
|||
|
m_fileItemList.append(item);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
refreshPageUi();
|
|||
|
refreshChecked();
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::refreshSettingInfo(QString filePath)
|
|||
|
{
|
|||
|
//得到花样参数
|
|||
|
DataFileHead filehead;
|
|||
|
memset(&filehead,0,sizeof(DataFileHead));
|
|||
|
QString fPath = filePath + ".fcg";
|
|||
|
QFile sfile(fPath);
|
|||
|
if(sfile.exists())//存在fcg文件
|
|||
|
{
|
|||
|
if(sfile.open(QIODevice::ReadOnly))
|
|||
|
{
|
|||
|
QByteArray ary = sfile.readAll();
|
|||
|
|
|||
|
if((u32)ary.size() >= sizeof(DataFileHead))
|
|||
|
{
|
|||
|
memcpy(&filehead,ary.data(),sizeof(DataFileHead));
|
|||
|
}
|
|||
|
}
|
|||
|
sfile.close();
|
|||
|
}
|
|||
|
|
|||
|
//存在fcg的文件时fcg的数据
|
|||
|
s16 para1 = filehead.rotateStyle; //旋转式样
|
|||
|
QString str1;
|
|||
|
switch (para1)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
str1 = "p";
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
str1 = "q";
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
str1 = "b";
|
|||
|
break;
|
|||
|
case 3:
|
|||
|
str1 = "d";
|
|||
|
break;
|
|||
|
default:
|
|||
|
str1 = "p";
|
|||
|
break;
|
|||
|
}
|
|||
|
ui->labelDirectionValue->setText(str1);
|
|||
|
|
|||
|
s16 para2 = filehead.horizontalStyle; //水平旋转式样
|
|||
|
if(para2 == 0)
|
|||
|
{
|
|||
|
ui->labelHorValue->setText("No");//否
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ui->labelHorValue->setText("Yes");//是
|
|||
|
}
|
|||
|
|
|||
|
s16 para3 = filehead.verticalStyle; //垂直旋转式样
|
|||
|
if(para3 == 0)
|
|||
|
{
|
|||
|
ui->labelVerValue->setText("No");//否
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ui->labelVerValue->setText("Yes");//是
|
|||
|
}
|
|||
|
|
|||
|
s16 para4 = filehead.rotateAngle; //旋转角度
|
|||
|
ui->labelRotateValue->setText(QString::number(para4));
|
|||
|
}
|
|||
|
|
|||
|
//获取绘图区域大小
|
|||
|
QSize PatternSelectWidget::getImageSize()
|
|||
|
{
|
|||
|
QSize size = ui->buttonImage1->labelImage->size();
|
|||
|
return size;
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage1_clicked()
|
|||
|
{
|
|||
|
clickItem(1);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage2_clicked()
|
|||
|
{
|
|||
|
clickItem(2);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage3_clicked()
|
|||
|
{
|
|||
|
clickItem(3);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage4_clicked()
|
|||
|
{
|
|||
|
clickItem(4);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage5_clicked()
|
|||
|
{
|
|||
|
clickItem(5);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage6_clicked()
|
|||
|
{
|
|||
|
clickItem(6);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage7_clicked()
|
|||
|
{
|
|||
|
clickItem(7);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage8_clicked()
|
|||
|
{
|
|||
|
clickItem(8);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage9_clicked()
|
|||
|
{
|
|||
|
clickItem(9);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonImage10_clicked()
|
|||
|
{
|
|||
|
clickItem(10);
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonBackUpDir_clicked()
|
|||
|
{
|
|||
|
if(m_curFilePath.size() <= 0)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
QDir dir(m_curFilePath);
|
|||
|
dir.cdUp();//返回上级目录
|
|||
|
QString path = dir.absolutePath();//得到上级目录
|
|||
|
m_fileItemList.clear();
|
|||
|
m_selectedPattenIdx = -1;
|
|||
|
getDirPatternFiles(path);//打开上级目录
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonPgUp_clicked()
|
|||
|
{
|
|||
|
m_curPages--;
|
|||
|
refreshPageUi();
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonPgDn_clicked()
|
|||
|
{
|
|||
|
m_curPages++;
|
|||
|
refreshPageUi();
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonOk_clicked()
|
|||
|
{
|
|||
|
if(m_selectedPattenIdx < 0)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
int patternNeedles = ui->labelTotalNeedleValue->text().toInt();
|
|||
|
if(patternNeedles > EMBALLOWNEEDLELIMIT)//大于200万针
|
|||
|
{
|
|||
|
PromptDialog promptDlg(this);
|
|||
|
promptDlg.initDialog(PromptDialog::BTN_OK);
|
|||
|
promptDlg.setTitleStr(tr("Prompt"));
|
|||
|
|
|||
|
QString str;
|
|||
|
//所选花样针数已达上限(200万针),不可绣作!
|
|||
|
str = tr("The number of stitches of the selected pattern has reached the upper limit (2 million stitches), and it cannot be embroidered!");
|
|||
|
promptDlg.setContentStr(str);
|
|||
|
|
|||
|
promptDlg.exec();
|
|||
|
return;
|
|||
|
}
|
|||
|
emit siSelectPattern(m_fileItemList.at(m_selectedPattenIdx).getFilePath());
|
|||
|
|
|||
|
//this->hide();
|
|||
|
}
|
|||
|
|
|||
|
void PatternSelectWidget::on_buttonCancel_clicked()
|
|||
|
{
|
|||
|
this->hide();
|
|||
|
}
|