246 lines
7.4 KiB
C++
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();
|
|
}
|