Quilting-lw/sharedviews/fileselectdialog.cpp

220 lines
7.2 KiB
C++
Raw Permalink Normal View History

2026-01-23 08:37:18 +00:00
#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);
//根据不同分辨率设置控件的位置和尺寸
initResolution();
initControlStyle();//初始化窗体控件样式
}
//初始化窗体控件为任意分辨率
void FileSelectDialog::initResolution()
{
double factoryX = getFactoryX();
double factoryY = getFactoryY();
this->resize(GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*factoryY);
ui->frameBack->setGeometry(0*factoryX,0*factoryY,GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*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:" + borderRadius() + "px;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(0*factoryX,(GLB_SCR_HEIGHT-GLB_LBUT_HEIGHT-GLB_EDGE_WIGHT)*factoryY,GLB_SCR_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->labelPage->setGeometry(GLB_EDGE_WIGHT*factoryX,(GLB_SCR_HEIGHT-GLB_TEXT_HEIGHT-GLB_EDGE_WIGHT)*factoryY,(GLB_SCR_WIGHT/3)*factoryX,GLB_TEXT_HEIGHT*factoryY);
ui->buttonPgUp->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*3+GLB_LBUT_WIGHT*4))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->buttonPgDn->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*2+GLB_LBUT_WIGHT*3))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->buttonOk->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*1+GLB_LBUT_WIGHT*2))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->buttonCancel->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*0+GLB_LBUT_WIGHT*1))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
}
void FileSelectDialog::initControlStyle()
{
SetStyle 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(fontSize_M());
connect(m_itemBtnList[i], SIGNAL(clicked(bool)), this, SLOT(btnclicked()));
}
//四个按钮样式表一样
ui->buttonPgUp->setStyleSheet(confirmIconStyle());
ui->buttonPgUp->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgUp->objectName()));
ui->buttonPgDn->setStyleSheet(confirmIconStyle());
ui->buttonPgDn->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgDn->objectName()));
ui->buttonOk->setStyleSheet(confirmIconStyle());
ui->buttonCancel->setStyleSheet(confirmIconStyle());
if(g_emTheme == theme2)
{
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet("buttonOk_1"));
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet("buttonCancel_1"));
}else
{
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()));
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()));
}
}
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);
ui->labelPage->setStyleSheet(commonTextColour());
}
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:" + borderRadius() + "px;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:" + borderRadius() + "px;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();
}