Qmmp
filedialog.h
1 /**************************************************************************
2 * Copyright (C) 2008-2022 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 "qmmpui_export.h"
29 #include "filedialogfactory.h"
30 
31 class QmmpUiPluginCache;
32 
36 class QMMPUI_EXPORT FileDialog : public QObject
37 {
38  Q_OBJECT
39 public:
43  static QList <FileDialogFactory*> factories();
47  static void setEnabled(const FileDialogFactory *factory);
51  static bool isEnabled(const FileDialogFactory *factory);
56  static QString file(const FileDialogFactory *factory);
60  enum Mode
61  {
62  AddFile = 0,
68  SaveFile
69  };
77  static QString getExistingDirectory(QWidget *parent = nullptr,
78  const QString &caption = QString(),
79  const QString &dir = QString());
90  static QString getOpenFileName(QWidget *parent = nullptr,
91  const QString &caption = QString(),
92  const QString &dir = QString(),
93  const QString &filter = QString(),
94  QString *selectedFilter = nullptr);
105  static QStringList getOpenFileNames(QWidget *parent = nullptr,
106  const QString &caption = QString(),
107  const QString &dir = QString(),
108  const QString &filter = QString(),
109  QString *selectedFilter = nullptr);
120  static QString getSaveFileName (QWidget *parent = nullptr,
121  const QString &caption = QString(),
122  const QString &dir = QString(),
123  const QString &filter = QString(),
124  QString *selectedFilter = nullptr);
141  static void popup(QWidget *parent = nullptr,
142  Mode mode = AddFiles,
143  QString *dir = nullptr,
144  QObject *receiver = nullptr,
145  const char *member = nullptr,
146  const QString &caption = QString(),
147  const QString &filters = QString());
148 
149 signals:
153  void filesSelected(const QStringList &selected, bool play = false);
154 
155 protected:
163  virtual ~FileDialog();
173  virtual void raise(const QString &dir, Mode mode,
174  const QString &caption, const QStringList &mask);
187  virtual QStringList exec(QWidget *parent, const QString &dir, Mode mode,
188  const QString &caption, const QString &filter = QString(),
189  QString *selectedFilter = nullptr) = 0;
190 
191 private slots:
192  void updateLastDir(const QStringList&);
193 
194 private:
195  static void loadPlugins();
196  static FileDialog* instance();
197  static FileDialogFactory *m_currentFactory;
198  static FileDialog* m_instance;
199  static QList<QmmpUiPluginCache*> *m_cache;
200 
201  void init(QObject* receiver, const char* member, QString *dir);
202  bool m_initialized;
203  QString *m_lastDir;
204 };
205 
206 #endif
File dialog plugin interface.
Definition: filedialogfactory.h:45
The FileDialog class is the base interface class of the file dialogs.
Definition: filedialog.h:37
static QString getExistingDirectory(QWidget *parent=nullptr, const QString &caption=QString(), const QString &dir=QString())
static QString getOpenFileName(QWidget *parent=nullptr, const QString &caption=QString(), const QString &dir=QString(), const QString &filter=QString(), QString *selectedFilter=nullptr)
static QString file(const FileDialogFactory *factory)
void filesSelected(const QStringList &selected, bool play=false)
Mode
Definition: filedialog.h:61
@ AddDirs
Definition: filedialog.h:65
@ AddDirsFiles
Definition: filedialog.h:66
@ PlayDirsFiles
Definition: filedialog.h:67
@ AddFiles
Definition: filedialog.h:64
@ AddDir
Definition: filedialog.h:63
static void setEnabled(const FileDialogFactory *factory)
static QList< FileDialogFactory * > factories()
static void popup(QWidget *parent=nullptr, Mode mode=AddFiles, QString *dir=nullptr, QObject *receiver=nullptr, const char *member=nullptr, const QString &caption=QString(), const QString &filters=QString())
static QString getSaveFileName(QWidget *parent=nullptr, const QString &caption=QString(), const QString &dir=QString(), const QString &filter=QString(), QString *selectedFilter=nullptr)
virtual ~FileDialog()
static QStringList getOpenFileNames(QWidget *parent=nullptr, const QString &caption=QString(), const QString &dir=QString(), const QString &filter=QString(), QString *selectedFilter=nullptr)
virtual QStringList exec(QWidget *parent, const QString &dir, Mode mode, const QString &caption, const QString &filter=QString(), QString *selectedFilter=nullptr)=0
static bool isEnabled(const FileDialogFactory *factory)