diff options
| author | vovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38> | 2007-07-24 16:05:25 +0000 |
|---|---|---|
| committer | vovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38> | 2007-07-24 16:05:25 +0000 |
| commit | 6f1f9ca43a8773cdfb5e3a7d72fda79c4a442016 (patch) | |
| tree | e48d4fc57cf018e8f33442521a3f08682ff3437e /src/filedialog.h | |
| parent | e838956a1dee86e490701e72c1f04ced7a4fdda6 (diff) | |
| download | qmmp-6f1f9ca43a8773cdfb5e3a7d72fda79c4a442016.tar.gz qmmp-6f1f9ca43a8773cdfb5e3a7d72fda79c4a442016.tar.bz2 qmmp-6f1f9ca43a8773cdfb5e3a7d72fda79c4a442016.zip | |
added filedialog interface, fixed plugin paths
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@38 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/filedialog.h')
| -rw-r--r-- | src/filedialog.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/filedialog.h b/src/filedialog.h new file mode 100644 index 000000000..8e82e98b7 --- /dev/null +++ b/src/filedialog.h @@ -0,0 +1,109 @@ +#ifndef FILEDIALOG_H +#define FILEDIALOG_H + +#include <QString> +#include <QStringList> + +#include <QFileDialog> +#include <QMap> + +#define interface struct + +interface FileDialogFactory; + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////// FILE DIALOG ////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +class FileDialog : public QObject +{ +Q_OBJECT + public: + enum Mode{AddFiles,AddDirs,SaveFiles}; + static QString getExistingDirectory( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(),bool = FALSE); + static QString getOpenFileName(QWidget * parent = 0,const QString & caption = QString(),const QString & dir = QString(),const QString & filter = QString(), + QString * selectedFilter = 0,bool = FALSE); + static QStringList getOpenFileNames( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), + const QString & filter = QString(), QString * selectedFilter = 0,bool = FALSE); + static QString getSaveFileName ( QWidget * parent = 0, const QString & caption = QString(), + const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0,bool = FALSE); + static QStringList registeredFactories(); + + static bool isModal(); + static void popup(QObject* ,const QString& = QString(),Mode = AddFiles,const QStringList& nameFilters = QStringList()); + signals: + void filesAdded(const QStringList&); + protected: + FileDialog(); + virtual QString existingDirectory( QWidget* , const QString& , const QString& ); + virtual QString openFileName( QWidget* ,const QString& ,const QString& ,const QString& , QString* ); + virtual QStringList openFileNames( QWidget* , const QString& , const QString& ,const QString& , QString* ); + virtual QString saveFileName ( QWidget* , const QString& ,const QString& , const QString& , QString* ); + virtual bool modal()const{ return TRUE;} + virtual ~FileDialog(){;} + virtual void init(QObject*); + virtual void raise(const QString& = QString(),Mode = AddFiles,const QStringList& = QStringList()){;} + + static bool registerFactory(FileDialogFactory*); + public: + static void registerBuiltinFactories(); + static void registerExternalFactories(); + protected: + static FileDialog* instance(); + static FileDialog* defaultInstance(); + private: + static QMap <QString,FileDialogFactory*> factories; + static FileDialog* _instance; + static QString m_current_factory; + bool m_initialized; +}; + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + +interface FileDialogFactory +{ + virtual FileDialog* create() = 0; + virtual QString name() = 0; + virtual ~FileDialogFactory(){;} +}; + +Q_DECLARE_INTERFACE(FileDialogFactory, "FileDialogFactory/1.0"); + + +//////////////////////////////////////////// QT FILE DIALOG //////////////////////////////////////////////////////////////////// + +class QtFileDialog : public FileDialog +{ + public: + virtual ~QtFileDialog(); + virtual QString existingDirectory(QWidget * parent , const QString & , const QString & dir); + virtual QString openFileName(QWidget * parent,const QString & caption,const QString & dir,const QString & filter, + QString * selectedFilter); + virtual QStringList openFileNames(QWidget * parent, const QString & caption , const QString & dir , + const QString & filter, QString * selectedFilter); + virtual QString saveFileName ( QWidget * parent, const QString & caption, + const QString & dir, const QString & filter, QString * selectedFilter); +}; + + +class QtFileDialogFactory : public QObject, public FileDialogFactory +{ + Q_OBJECT + Q_INTERFACES(FileDialogFactory); + public: + virtual FileDialog* create(); + virtual QString name(); + virtual ~QtFileDialogFactory(){;} + static QString QtFileDialogFactoryName; +}; + + +#endif + + |
