1 /*!
2 * @file searchfiledialog.cpp
3 * Copyright (c) 2018
4 * @brief des
5 * detailed des
6 *
7 * @date 2018
8 * @author lee
9 */
10 #include "searchfiledialog.h"
11 #include "ui_searchfiledialog.h"
12
13 #include <QMutex>
14 #include <QMutexLocker>
15 #include <QDebug>
16 #include <QDir>
17 #include <QDialogButtonBox>
18 #include <QComboBox>
19 #include <QLineEdit>
20 #include <QLabel>
21 #include <QPushButton>
22 #include <QPropertyAnimation>
23 #include <QTextCodec>
24
25 /**************************************
26 Function:
27 Description:
28 ***************************************/
searchFileDialog(int Type,QWidget * parent)29 searchFileDialog::searchFileDialog(int Type, QWidget *parent) :
30 QDialog(parent),
31 ui(new Ui::searchFileDialog)
32 {
33 qDebug()<<__FUNCTION__ ;
34 ui->setupUi(this);
35 setWindowFlags(Qt::FramelessWindowHint);
36
37 m_pFileDialog = NULL;
38 m_FileType = Type;
39 m_Path="/mnt/";
40
41
42 //QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));
43
44 if(m_FileType == 0){
45 ui->titleLabel->setText("查找歌曲");
46 m_filter<<"*.mp3 *.wav *.ape *.flac *.aac *.wma";
47 }else if(m_FileType == 1){
48 ui->titleLabel->setText("查找视频");
49 m_filter << "*.divx *.3gp *.asf *.avi *.flv *.mkv *.mov *.mp4 *.mpeg *.mpg *.ra *.rm *.rmvb *.ts *.vob *.webm *.wma *.wmv";
50 }else if(m_FileType == 2){
51 ui->titleLabel->setText("查找图片");
52 m_filter<<"*.jpg";
53 }
54
55 }
56
57 /**************************************
58 Function:
59 Description:
60 ***************************************/
createFileDialog()61 void searchFileDialog::createFileDialog()
62 {
63 qDebug()<<__FUNCTION__ ;
64 if(m_pFileDialog==NULL){
65
66 m_pFileDialog = new QFileDialog(ui->stackedWidget, Qt::SubWindow);
67 m_pFileDialog->setNameFilters(m_filter);
68 m_pFileDialog->setDirectory(m_Path);
69
70 qDebug()<<__FUNCTION__<<"m_pFileDialog->setDirectory"<<m_Path;
71 qDebug()<<__FUNCTION__<<"m_pFileDialog->m_filter"<<m_filter;
72 ui->stackedWidget->addWidget(m_pFileDialog);
73 ui->stackedWidget->setCurrentWidget(m_pFileDialog);
74
75 if (QLabel *label = m_pFileDialog->findChild<QLabel *>("fileNameLabel")){
76 label->setText(tr("文件名:"));
77 }
78 if (QLabel *label = m_pFileDialog->findChild<QLabel *>("fileTypeLabel")){
79 label->setText(tr("文件类型:"));
80 }
81 if (QLabel *label = m_pFileDialog->findChild<QLabel *>("lookInLabel")){
82 label->setText(tr("文件路径:"));
83 }
84 if (QDialogButtonBox *buttonbox = m_pFileDialog->findChild<QDialogButtonBox *>("buttonBox")){
85 buttonbox->button(QDialogButtonBox::Open)->setText(tr("open"));
86 buttonbox->button(QDialogButtonBox::Cancel)->setHidden(false);
87 buttonbox->button(QDialogButtonBox::Open)->setStyleSheet("border-style: \
88 none;border: 0px;color: rgb(255,255,255);\
89 padding: 5px;border-radius:5px;\
90 background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);");
91 }
92
93 QDialogButtonBox *buttonbox = m_pFileDialog->findChild<QDialogButtonBox *>("buttonBox");
94
95 connect(buttonbox->button(QDialogButtonBox::Open),SIGNAL(clicked()),this,SLOT(onGetFileName()));
96 connect(buttonbox->button(QDialogButtonBox::Cancel),SIGNAL(clicked()),this,SLOT(onCancel()));
97 qDebug()<<__FUNCTION__<<__LINE__ ;
98 }
99
100 }
101
102
103 /**************************************
104 Function:
105 Description:
106 ***************************************/
~searchFileDialog()107 searchFileDialog::~searchFileDialog()
108 {
109 delete ui;
110 }
111
112 /**************************************
113 Function:
114 Description:
115 ***************************************/
showD()116 void searchFileDialog::showD()
117 {
118 createFileDialog();
119 this->show();
120 if(int ret = m_pFileDialog->exec())
121 {
122 qDebug()<<"m_pFileDialog->exec ret: "<< ret;
123 QStringList filelist = m_pFileDialog->selectedFiles();
124 qDebug()<<"fileDialog->selectFiles:"<<filelist;
125 qDebug()<<"the path is "<< filelist[0];
126 onGetFileName();
127 }
128 }
129
130 /**************************************
131 Function:
132 Description:
133 ***************************************/
onGetFileName()134 void searchFileDialog::onGetFileName()
135 {
136 qDebug()<<__FUNCTION__ ;
137 QFileInfo fileinfo;
138 QComboBox *combox = m_pFileDialog->findChild<QComboBox *>("lookInCombo");
139 QString fileDir = combox->currentText();
140 QLineEdit *lineEdit = m_pFileDialog->findChild<QLineEdit *>("fileNameEdit");
141 QString fileName = lineEdit->text();
142 QString filePath = fileDir + "/" + fileName;
143
144 //QTextCodec *code = QTextCodec::codecForName("gb2312");
145 //filePath = code->fromUnicode(filePath).data();
146
147 qDebug()<<"add "<<filePath<<"to list";
148
149 fileinfo.setFile(filePath);
150 if(fileinfo.isFile()){
151
152 if(m_pFileDialog!=NULL){
153 delete m_pFileDialog;
154 m_pFileDialog = NULL;
155 }
156
157 if(m_FileType == 0){
158 emit notifyMusicPlayerAddFile(filePath);
159 }else if(m_FileType == 1){
160 emit notifyVideoPlayerAddFile(filePath);
161 }else if(m_FileType == 2){
162 emit notifyGalleryAddFile(filePath);
163 }
164 }else{
165 m_Path=filePath;
166 }
167 }
168
169 /**************************************
170 Function:
171 Description:
172 ***************************************/
onCancel()173 void searchFileDialog::onCancel()
174 {
175 qDebug()<<"onCancel "<< m_FileType;
176
177 if(m_pFileDialog!=NULL){
178 delete m_pFileDialog;
179 m_pFileDialog = NULL;
180 }
181
182 if(m_FileType == 0){
183 emit notifyMusicCancelSearch();
184 }else if(m_FileType == 1){
185 emit notifyVideoCancelSearch();
186 }else if(m_FileType == 2){
187 emit notifyGalleryCancelSearch();
188 }
189
190 }
191