Qmmp
filedialog.h
1 /**************************************************************************
2 * Copyright (C) 2008-2016 by Ilya Kotov *
3 * forkotov02@ya.ru *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
20 
21 #ifndef FILEDIALOG_H
22 #define FILEDIALOG_H
23 
24 #include <QString>
25 #include <QStringList>
26 #include <QFileDialog>
27 #include <QHash>
28 #include "filedialogfactory.h"
29 
30 class QmmpUiPluginCache;
31 
35 class FileDialog : public QObject
36 {
37  Q_OBJECT
38 public:
42  static QList <FileDialogFactory*> factories();
46  static void setEnabled(FileDialogFactory *factory);
50  static bool isEnabled(FileDialogFactory *factory);
55  static QString file(FileDialogFactory *factory);
59  enum Mode
60  {
61  AddFile = 0,
68  };
76  static QString getExistingDirectory(QWidget *parent = 0,
77  const QString &caption = QString(),
78  const QString &dir = QString());
89  static QString getOpenFileName(QWidget *parent = 0,
90  const QString &caption = QString(),
91  const QString &dir = QString(),
92  const QString &filter = QString(),
93  QString *selectedFilter = 0);
104  static QStringList getOpenFileNames(QWidget *parent = 0,
105  const QString &caption = QString(),
106  const QString &dir = QString(),
107  const QString &filter = QString(),
108  QString *selectedFilter = 0);
119  static QString getSaveFileName (QWidget *parent = 0,
120  const QString &caption = QString(),
121  const QString &dir = QString(),
122  const QString &filter = QString(),
123  QString *selectedFilter = 0);
140  static void popup(QWidget *parent = 0,
141  Mode mode = AddFiles,
142  QString *dir = 0,
143  QObject *receiver = 0,
144  const char *member = 0,
145  const QString &caption = QString(),
146  const QString &filters = QString());
147 
148 signals:
152  void filesSelected(const QStringList &selected, bool play = false);
153 
154 protected:
158  FileDialog();
162  virtual ~FileDialog();
172  virtual void raise(const QString &dir, Mode mode,
173  const QString &caption, const QStringList &mask);
186  virtual QStringList exec(QWidget *parent, const QString &dir, Mode mode,
187  const QString &caption, const QString &filter = QString(),
188  QString *selectedFilter = 0) = 0;
189 
190 private slots:
191  void updateLastDir(const QStringList&);
192 
193 private:
194  static void loadPlugins();
195  static FileDialog* instance();
196  static FileDialogFactory *m_currentFactory;
197  static FileDialog* m_instance;
198  static QList<QmmpUiPluginCache*> *m_cache;
199 
200  void init(QObject* receiver, const char* member, QString *dir);
201  bool m_initialized;
202  QString *m_lastDir;
203 };
204 
205 #endif
The FileDialog class is the base interface class of the file dialogs.
Definition: filedialog.h:35
void filesSelected(const QStringList &selected, bool play=false)
static QString getOpenFileName(QWidget *parent=0, const QString &caption=QString(), const QString &dir=QString(), const QString &filter=QString(), QString *selectedFilter=0)
Definition: filedialog.h:66
Definition: filedialog.h:62
static bool isEnabled(FileDialogFactory *factory)
Definition: filedialog.h:65
Mode
Definition: filedialog.h:59
Definition: filedialog.h:67
static QList< FileDialogFactory * > factories()
Definition: filedialog.h:64
virtual ~FileDialog()
static void popup(QWidget *parent=0, Mode mode=AddFiles, QString *dir=0, QObject *receiver=0, const char *member=0, const QString &caption=QString(), const QString &filters=QString())
Definition: filedialog.h:63
static QString getSaveFileName(QWidget *parent=0, const QString &caption=QString(), const QString &dir=QString(), const QString &filter=QString(), QString *selectedFilter=0)
static QString getExistingDirectory(QWidget *parent=0, const QString &caption=QString(), const QString &dir=QString())
File dialog plugin interface.
Definition: filedialogfactory.h:52
Definition: filedialog.h:61
virtual QStringList exec(QWidget *parent, const QString &dir, Mode mode, const QString &caption, const QString &filter=QString(), QString *selectedFilter=0)=0
static void setEnabled(FileDialogFactory *factory)
static QStringList getOpenFileNames(QWidget *parent=0, const QString &caption=QString(), const QString &dir=QString(), const QString &filter=QString(), QString *selectedFilter=0)
static QString file(FileDialogFactory *factory)