QuiltingHMI/sharedviews/fileselectdialog.cpp
2024-02-06 15:10:48 +08:00

246 lines
7.4 KiB
C++

#include "fileselectdialog.h"
#include "ui_fileselectdialog.h"
FileSelectDialog::FileSelectDialog(QString filePath, QWidget *parent) :
QDialog(parent),
ui(new Ui::FileSelectDialog),
m_filePath(filePath),
m_itemPerPage(8)
{
ui->setupUi(this);
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setWindowModality(Qt::ApplicationModal);
initControl();
initData();
refreshUi();
m_fileName.clear();
}
FileSelectDialog::~FileSelectDialog()
{
delete ui;
}
void FileSelectDialog::initControl()
{
m_itemBtnList.clear();
m_itemBtnList.append(ui->button1);
m_itemBtnList.append(ui->button2);
m_itemBtnList.append(ui->button3);
m_itemBtnList.append(ui->button4);
m_itemBtnList.append(ui->button5);
m_itemBtnList.append(ui->button6);
m_itemBtnList.append(ui->button7);
m_itemBtnList.append(ui->button8);
//根据不同分辨率设置控件的位置和尺寸
switch (g_emResolut)
{
case resolution1910:
initResolution1910();
break;
case resolution1006:
initResolution1006();
break;
default:
this->resize(1920,1080);
break;
}
initControlStyle();//初始化窗体控件样式
}
void FileSelectDialog::initResolution1910()
{
double factoryX = 1.875; //缩放比例系数
double factoryY = 1.8;
this->resize(1024*factoryX,600*factoryY);
ui->frameBack->setGeometry(0,0,1024*factoryX,600*factoryY);
for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果
{
m_itemBtnList[i]->setGeometry(153*factoryX,(96 + i * 53)*factoryY,718*factoryX,53*factoryY);
QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 0);color: rgb(255, 255, 255);}";
m_itemBtnList[i]->setStyleSheet(style1);
m_itemBtnList[i]->setTopImage(NULL);
}
ui->framePageBtn->setGeometry(595*factoryX, 545*factoryY, 600*factoryX, 45*factoryY);
ui->buttonPgUp->setGeometry(0, 0, 96*factoryX, 40*factoryY);
ui->buttonPgDn->setGeometry(106*factoryX, 0, 96*factoryX, 40*factoryY);
ui->buttonOk->setGeometry(212*factoryX, 0, 96*factoryX, 40*factoryY);
ui->buttonCancel->setGeometry(318*factoryX, 0, 96*factoryX, 40*factoryY);
ui->labelPage->setGeometry(10*factoryX, 570*factoryY, 181*factoryX, 21*factoryY);
}
void FileSelectDialog::initResolution1006()
{
this->resize(1024,600);
ui->frameBack->setGeometry(0,0,1024,600);
for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果
{
m_itemBtnList[i]->setGeometry(153,96 + i * 53,718,53);
QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 0);color: rgb(255, 255, 255);}";
m_itemBtnList[i]->setStyleSheet(style1);
m_itemBtnList[i]->setTopImage(NULL);
m_itemBtnList[i]->setFont(fontNormal_6);
}
ui->framePageBtn->setGeometry(595,545,600,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);
ui->labelPage->setGeometry(10, 570, 181, 21);
}
void FileSelectDialog::initControlStyle()
{
SetControlStyle setControlStyle;
setControlStyle.setUiName(this->parent()->objectName());
//背景图
QString frameBackImgPath = setControlStyle.getSharedStyleSheet();
ui->frameBack->setStyleSheet(frameBackImgPath);
//条目
for(int i = 0; i < m_itemPerPage; i++)
{
m_itemBtnList[i]->setLabelFont(fontNormal_1);
connect(m_itemBtnList[i], SIGNAL(clicked(bool)), this, SLOT(btnclicked()));
}
//四个按钮样式表一样
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 FileSelectDialog::refreshUi()
{
//清空全部按钮数据
foreach (QPushButton* button, m_itemBtnList) {
button->setText("");
button->setEnabled(false);
button->setVisible(false);
}
//计算页码范围
m_pageNums = m_fileNameList.size() / m_itemPerPage;//向上取整 总页数
m_pageNums = (m_fileNameList.size() % m_itemPerPage == 0) ? m_pageNums : m_pageNums + 1;
if (m_curPages > m_pageNums)// 当前页
{
m_curPages = m_pageNums;
}
if (m_curPages < 1)
{
m_curPages = 1;
}
// qDebug()<<"m_pageNums" <<m_pageNums;
// qDebug()<<"m_curPages" <<m_curPages;
//显示已存在的数据
for(int i = 0; i < m_itemPerPage; i++){
int index = (m_curPages - 1) * m_itemPerPage + i;
// qDebug() << index;
if(index > m_fileNameList.size() - 1)
{
break;
}
else{
QString str = m_fileNameList[index];
m_itemBtnList[i]->setText(str);
m_itemBtnList[i]->setEnabled(true);
m_itemBtnList[i]->setVisible(true);
}
}
// 页信息
QString str = tr("pageNum: ") + QString("%1/%2").arg(m_curPages).arg(m_pageNums);//页数:
ui->labelPage->setText(str);
}
void FileSelectDialog::initData()
{
m_fileNameList.clear();
QDir dir(m_filePath);
m_curPages = 0;
m_pageNums = 0;
// 打开文件所在的路径
if(!dir.exists())
{
qDebug() << "dirpath not exist, name=" << m_filePath;
dir.mkdir(m_filePath);//创建花样文件夹
}
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); // 设置类型过滤器
dir.setSorting(QDir::DirsFirst | QDir::IgnoreCase); // 设置排序方式
QFileInfoList fileList = dir.entryInfoList();
int count = fileList.count();
for(int i = 0; i < count ; i++){
QFileInfo fileInfo = fileList[i];
if(fileInfo.suffix().toUpper() == "HS"){
QString str = fileInfo.fileName();
m_fileNameList.append(str);
qDebug()<<fileInfo.fileName();
}
}
}
void FileSelectDialog::btnclicked()
{
MyButton* pBtn = (MyButton*)this->sender();
qDebug()<< pBtn->text();
for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果
{
QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 0);color: rgb(255, 255, 255);}";
m_itemBtnList[i]->setStyleSheet(style1);
}
QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 50);color: rgb(255, 255, 255);}";
pBtn->setStyleSheet(style1);
m_fileName = pBtn->text();
}
QString FileSelectDialog::getFileName()
{
return m_fileName;
}
void FileSelectDialog::on_buttonOk_clicked()
{
done(1);
}
void FileSelectDialog::on_buttonCancel_clicked()
{
done(0);
}
void FileSelectDialog::on_buttonPgDn_clicked()
{
m_curPages++;
refreshUi();
}
void FileSelectDialog::on_buttonPgUp_clicked()
{
m_curPages--;
refreshUi();
}