Qmmp
|
00001 /************************************************************************** 00002 * Copyright (C) 2008-2013 by Ilya Kotov * 00003 * forkotov02@hotmail.ru * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the GNU General Public License * 00016 * along with this program; if not, write to the * 00017 * Free Software Foundation, Inc., * 00018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 00019 ***************************************************************************/ 00020 00021 #ifndef FILEDIALOG_H 00022 #define FILEDIALOG_H 00023 00024 #include <QString> 00025 #include <QStringList> 00026 #include <QFileDialog> 00027 #include <QHash> 00028 #include "filedialogfactory.h" 00029 00030 class QmmpUiPluginCache; 00031 00035 class FileDialog : public QObject 00036 { 00037 Q_OBJECT 00038 public: 00042 static QList <FileDialogFactory*> factories(); 00046 static void setEnabled(FileDialogFactory *factory); 00050 static bool isEnabled(FileDialogFactory *factory); 00055 static QString file(FileDialogFactory *factory); 00059 enum Mode 00060 { 00061 AddFile = 0, 00062 AddDir, 00063 AddFiles, 00064 AddDirs, 00065 AddDirsFiles, 00066 SaveFile 00067 }; 00075 static QString getExistingDirectory(QWidget *parent = 0, 00076 const QString &caption = QString(), 00077 const QString &dir = QString()); 00088 static QString getOpenFileName(QWidget *parent = 0, 00089 const QString &caption = QString(), 00090 const QString &dir = QString(), 00091 const QString &filter = QString(), 00092 QString *selectedFilter = 0); 00103 static QStringList getOpenFileNames(QWidget *parent = 0, 00104 const QString &caption = QString(), 00105 const QString &dir = QString(), 00106 const QString &filter = QString(), 00107 QString *selectedFilter = 0); 00118 static QString getSaveFileName (QWidget *parent = 0, 00119 const QString &caption = QString(), 00120 const QString &dir = QString(), 00121 const QString &filter = QString(), 00122 QString *selectedFilter = 0); 00139 static void popup(QWidget *parent = 0, 00140 Mode mode = AddFiles, 00141 QString *dir = 0, 00142 QObject *receiver = 0, 00143 const char *member = 0, 00144 const QString &caption = QString(), 00145 const QString &filters = QString()); 00146 00147 signals: 00151 void filesAdded(const QStringList&); 00152 00153 protected: 00157 FileDialog(); 00166 virtual QString existingDirectory(QWidget *parent, 00167 const QString &caption, 00168 const QString &dir); 00180 virtual QString openFileName( QWidget *parent, 00181 const QString &caption, 00182 const QString &dir, 00183 const QString &filter, 00184 QString *selectedFilter); 00196 virtual QStringList openFileNames(QWidget *parent, 00197 const QString &caption, 00198 const QString &dir, 00199 const QString &filter, 00200 QString *selectedFilter); 00212 virtual QString saveFileName (QWidget *parent, const QString &caption, const QString &dir, 00213 const QString &filter, QString *selectedFilter); 00217 virtual ~FileDialog(); 00227 virtual void raise(const QString &dir = QString(), Mode mode = AddFiles, 00228 const QString &caption = QString(), const QStringList &mask = QStringList()); 00229 00230 private slots: 00231 void updateLastDir(const QStringList&); 00232 00233 private: 00234 static void loadPlugins(); 00235 static FileDialog* instance(); 00236 static FileDialog* createDefault(); 00237 static FileDialogFactory *m_currentFactory; 00238 static FileDialog* m_instance; 00239 static QList<QmmpUiPluginCache*> *m_cache; 00240 00241 void init(QObject* receiver, const char* member, QString *dir); 00242 bool m_initialized; 00243 QString *m_lastDir; 00244 }; 00245 00246 #endif 00247 00248