Qmmp
Loading...
Searching...
No Matches
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
31class QmmpUiPluginCache;
32
36class QMMPUI_EXPORT FileDialog : public QObject
37{
38 Q_OBJECT
39public:
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
149signals:
153 void filesSelected(const QStringList &selected, bool play = false);
154
155protected:
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
191private slots:
192 void updateLastDir(const QStringList&);
193
194private:
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 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 QList< FileDialogFactory * > factories()
virtual void raise(const QString &dir, Mode mode, const QString &caption, const QStringList &mask)
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)