diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-06-19 13:54:07 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-06-19 13:54:07 +0000 |
| commit | c2a415452b1dc62b68cb3f5cd9ca4214e2299e84 (patch) | |
| tree | 95b8e4df59e5678992e4f13cbeb331feb57bf2d2 /src/ui | |
| parent | 41f4d6994cff2aa55638b5b4f47146d82ebf185d (diff) | |
| download | qmmp-c2a415452b1dc62b68cb3f5cd9ca4214e2299e84.tar.gz qmmp-c2a415452b1dc62b68cb3f5cd9ca4214e2299e84.tar.bz2 qmmp-c2a415452b1dc62b68cb3f5cd9ca4214e2299e84.zip | |
enabled qmmp file dialog
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@428 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ui/configdialog.cpp | 2 | ||||
| -rw-r--r-- | src/ui/eqwidget.cpp | 2 | ||||
| -rw-r--r-- | src/ui/filedialog.cpp | 296 | ||||
| -rw-r--r-- | src/ui/filedialog.h | 109 | ||||
| -rw-r--r-- | src/ui/mainwindow.cpp | 8 | ||||
| -rw-r--r-- | src/ui/ui.pro | 2 |
7 files changed, 7 insertions, 414 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index d20634781..23da7421a 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -48,7 +48,6 @@ SET(ui_SRCS eqslider.cpp eqtitlebar.cpp eqwidget.cpp - filedialog.cpp fileloader.cpp jumptotrackdialog.cpp keyboardmanager.cpp @@ -102,7 +101,6 @@ SET(ui_MOC_HDRS eqtitlebar.h eqwidget.h fft.h - filedialog.h fileloader.h inlines.h jumptotrackdialog.h diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp index 9c5566f33..eac2272a6 100644 --- a/src/ui/configdialog.cpp +++ b/src/ui/configdialog.cpp @@ -36,10 +36,10 @@ #include <qmmpui/generalfactory.h> #include <qmmpui/general.h> #include <qmmpui/generalhandler.h> +#include <qmmpui/filedialog.h> #include "skin.h" -#include "filedialog.h" #include "pluginitem.h" #include "configdialog.h" #include "skinreader.h" diff --git a/src/ui/eqwidget.cpp b/src/ui/eqwidget.cpp index 7fcabfedd..459d99974 100644 --- a/src/ui/eqwidget.cpp +++ b/src/ui/eqwidget.cpp @@ -22,8 +22,8 @@ #include <QMenu> #include <QInputDialog> #include <QCloseEvent> +#include <qmmpui/filedialog.h> -#include "filedialog.h" #include "skin.h" #include "eqslider.h" #include "eqtitlebar.h" diff --git a/src/ui/filedialog.cpp b/src/ui/filedialog.cpp deleted file mode 100644 index 0c844e8db..000000000 --- a/src/ui/filedialog.cpp +++ /dev/null @@ -1,296 +0,0 @@ -#include "filedialog.h" - -#include <QSettings> - - -#include <QApplication> -#include <QPluginLoader> - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - -#include "playlistmodel.h" - -FileDialog* FileDialog::_instance = 0; - -QMap<QString,FileDialogFactory*> FileDialog::factories = QMap<QString,FileDialogFactory*>(); - -FileDialog::FileDialog() : QObject(), m_initialized(false) -{ -} - - -bool FileDialog::isModal() -{ - return instance()->modal(); -} - - -void FileDialog::init(QObject* o) -{ - if(!m_initialized && !instance()->modal()) - { - PlayListModel* model = NULL; - if( ( model = qobject_cast<PlayListModel*>(o)) ) - { - connect(this,SIGNAL(filesAdded(const QStringList&)),model,SLOT(addFileList(const QStringList&))); - m_initialized = true; - } - } -} - - - -QString FileDialog::getExistingDirectory( QWidget * parent, const QString & caption, const QString & dir,bool def) -{ - QString s; - if(def) - s = defaultInstance()->existingDirectory(parent,caption,dir); - else - s = instance()->existingDirectory(parent,caption,dir); - delete _instance; - _instance = 0; - return s; -} - -QString FileDialog::getOpenFileName(QWidget * parent, - const QString & caption, - const QString & dir, - const QString & filter, - QString * selectedFilter,bool def) -{ - QString s; - if(def) - s = defaultInstance()->openFileName(parent,caption,dir,filter,selectedFilter); - else - s = instance()->openFileName(parent,caption,dir,filter,selectedFilter); - delete _instance; - _instance = 0; - return s; -} - -QStringList FileDialog::getOpenFileNames(QWidget * parent, const QString & caption , const QString & dir , - const QString & filter, QString * selectedFilter,bool def) -{ - QStringList sl; - if(def) - sl = defaultInstance()->openFileNames(parent,caption ,dir ,filter, selectedFilter); - else - sl = instance()->openFileNames(parent,caption,dir,filter,selectedFilter); - delete _instance; - _instance = 0; - return sl; -} - -QString FileDialog::getSaveFileName ( QWidget * parent, const QString & caption, - const QString & dir, const QString & filter, QString * selectedFilter,bool def) -{ - QString s; - if(def) - s = defaultInstance()->saveFileName(parent,caption,dir,filter,selectedFilter); - else - s = instance()->saveFileName(parent,caption,dir,filter,selectedFilter); - delete _instance; - _instance = 0; - return s; -} - - -QString FileDialog::existingDirectory(QWidget *, const QString &, const QString &) -{ - return QString(); -} - -QString FileDialog::openFileName(QWidget *, const QString &, const QString &, const QString &, QString *) -{ - return QString(); -} - -QStringList FileDialog::openFileNames(QWidget *, const QString &, const QString &, const QString &, QString *) -{ - return QStringList(); -} - -QString FileDialog::saveFileName(QWidget *, const QString &, const QString &, const QString &, QString *) -{ - return QString(); -} - - -void FileDialog::registerBuiltinFactories() -{ - registerFactory(new QtFileDialogFactory()); - //registerFactory(new QmmpFileDialogFactory()); -} - -void FileDialog::registerExternalFactories() -{ - QDir pluginsDir (QDir::homePath()+"/.qmmp/plugins/FileDialogs"); - - foreach (QString fileName, pluginsDir.entryList(QDir::Files)) - { - QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); - QObject *plugin = loader.instance(); - if (loader.isLoaded()) - qDebug("FileDialog: plugin loaded - %s", qPrintable(fileName)); - else - qDebug("FileDialog: %s",qPrintable(loader.errorString())); - - FileDialogFactory *fct = 0; - if (plugin) - fct = qobject_cast<FileDialogFactory *>(plugin); - - if (fct) - if (!registerFactory(fct)) - qDebug("Warning: Plugin with name %s is already registered...", - qPrintable(fct->name())); - } -} - -bool FileDialog::registerFactory(FileDialogFactory *f) -{ - QString name = f->name(); - if (!factories.contains(name)) - { - factories.insert(name,f); - return true; - } - return false; -} - -QString FileDialog::m_current_factory = QString(); - -FileDialog* FileDialog::instance() -{ - if(_instance && _instance->modal()) - { - delete _instance; - _instance = 0; - } - - if(factories.isEmpty()) - { - registerBuiltinFactories(); - registerExternalFactories(); - } - - QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); - QString f_dialogName = - settings.value("FileDialog",QtFileDialogFactory::QtFileDialogFactoryName).toString(); - - QStringList names = factories.keys(); - - if(m_current_factory != f_dialogName || !_instance) - { - if(_instance) - delete _instance; - - foreach(QString name,names) - { - if(name == f_dialogName) - { - _instance = factories[name]->create(); - m_current_factory = f_dialogName; - break; - } - } - - if(!_instance) - _instance = factories[QtFileDialogFactory::QtFileDialogFactoryName]->create(); - } - //else if(!_instance->modal()) - //return _instance; - // _instance->raise(); - return _instance; - -} - -FileDialog* FileDialog::defaultInstance() -{ - if(_instance) - { - delete _instance; - _instance = 0; - } - - if(factories.isEmpty()) - { - registerBuiltinFactories(); - registerExternalFactories(); - } - - _instance = factories[QtFileDialogFactory::QtFileDialogFactoryName]->create(); - - return _instance; -} - -QStringList FileDialog::registeredFactories() -{ - if(factories.isEmpty()) - { - registerBuiltinFactories(); - registerExternalFactories(); - } - return factories.keys(); -} - - -void FileDialog::popup(QObject* o,const QString& d,Mode m,const QStringList& f) -{ - FileDialog* inst = instance(); - inst->init(o); - inst->raise(d,m,f); -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -QtFileDialog::~QtFileDialog() -{ - qWarning("QtFileDialog::~QtFileDialog()"); -} - -QString QtFileDialog::existingDirectory(QWidget * parent, const QString & caption, const QString & dir) -{ - return QFileDialog::getExistingDirectory(parent,caption,dir,QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly); -} - -QString QtFileDialog::openFileName(QWidget * parent,const QString & caption,const QString & dir,const QString & filter, - QString * selectedFilter) -{ - return QFileDialog::getOpenFileName(parent,caption,dir,filter); -} - -QStringList QtFileDialog::openFileNames(QWidget * parent, const QString & caption , const QString & dir , - const QString & filter, QString * selectedFilter) -{ - return QFileDialog::getOpenFileNames(parent,caption,dir,filter,selectedFilter); -} - - QString QtFileDialog::saveFileName ( QWidget * parent, const QString & caption, - const QString & dir, const QString & filter, QString * selectedFilter) -{ - return QFileDialog::getSaveFileName(parent,caption,dir,filter,selectedFilter); -} - - - - - - -FileDialog* QtFileDialogFactory::create() -{ - return new QtFileDialog(); -} - -QString QtFileDialogFactory::name() -{ - return QtFileDialogFactoryName; -} - -QString QtFileDialogFactory::QtFileDialogFactoryName = "Qt File Dialog"; - - diff --git a/src/ui/filedialog.h b/src/ui/filedialog.h deleted file mode 100644 index f8e6c4f93..000000000 --- a/src/ui/filedialog.h +++ /dev/null @@ -1,109 +0,0 @@ -#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(){;} - 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 - - diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index e80ea9cd1..14f56ec47 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -31,6 +31,7 @@ #include <qmmpui/playlistparser.h> #include <qmmpui/playlistformat.h> #include <qmmpui/commandlinemanager.h> +#include <qmmpui/filedialog.h> #include "textscroller.h" #include "mainwindow.h" @@ -45,7 +46,6 @@ #include "jumptotrackdialog.h" #include "aboutdialog.h" #include "addurldialog.h" -#include "filedialog.h" #include "listwidget.h" #include "visualmenu.h" #include "builtincommandlineoption.h" @@ -458,7 +458,8 @@ void MainWindow::addDir() m_lastDir = s+"../"; } else - FileDialog::popup(m_playListModel,m_lastDir,FileDialog::AddDirs,Decoder::nameFilters()); + FileDialog::popup(m_lastDir,FileDialog::AddDirs,Decoder::nameFilters(), + m_playListModel, SLOT(addFileList(const QStringList&))); } void MainWindow::addFile() @@ -497,7 +498,8 @@ void MainWindow::addFile() m_lastDir = files.at(0); } else - FileDialog::popup(m_playListModel,m_lastDir,FileDialog::AddFiles,Decoder::nameFilters()); + FileDialog::popup(m_lastDir,FileDialog::AddFiles,Decoder::nameFilters(), + m_playListModel, SLOT(addFileList(const QStringList&))); } diff --git a/src/ui/ui.pro b/src/ui/ui.pro index cd28f33a4..e6ac09941 100644 --- a/src/ui/ui.pro +++ b/src/ui/ui.pro @@ -53,7 +53,6 @@ HEADERS += mainwindow.h \ aboutdialog.h \ timeindicator.h \ keyboardmanager.h \ - filedialog.h \ unixdomainsocket.h \ addurldialog.h \ skinreader.h \ @@ -105,7 +104,6 @@ SOURCES += mainwindow.cpp \ aboutdialog.cpp \ timeindicator.cpp \ keyboardmanager.cpp \ - filedialog.cpp \ unixdomainsocket.cpp \ addurldialog.cpp \ skinreader.cpp \ |
