xref: /OK3568_Linux_fs/app/forlinx/flapp/src/plugins/allwinner/music/common/searchfiledialog.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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