diff options
Diffstat (limited to 'src')
26 files changed, 392 insertions, 255 deletions
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt index a72b8e51b..32dc59f34 100644 --- a/src/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -4,4 +4,5 @@ add_subdirectory(Visual) add_subdirectory(Effect) add_subdirectory(General) add_subdirectory(PlaylistFormats) -add_subdirectory(CommandLineOptions)
\ No newline at end of file +add_subdirectory(CommandLineOptions) +add_subdirectory(FileDialogs) diff --git a/src/plugins/FileDialogs/CMakeLists.txt b/src/plugins/FileDialogs/CMakeLists.txt new file mode 100644 index 000000000..8fd39edfd --- /dev/null +++ b/src/plugins/FileDialogs/CMakeLists.txt @@ -0,0 +1,5 @@ +SET(USE_QMMP_DIALOG TRUE CACHE BOOL "enable/disable Qmmp file dialog") + +IF(USE_QMMP_DIALOG) +add_subdirectory(QmmpFileDialog) +ENDIF(USE_QMMP_DIALOG) diff --git a/src/plugins/FileDialogs/FileDialogs.pro b/src/plugins/FileDialogs/FileDialogs.pro new file mode 100644 index 000000000..7893b306e --- /dev/null +++ b/src/plugins/FileDialogs/FileDialogs.pro @@ -0,0 +1,2 @@ +TEMPLATE = subdirs +SUBDIRS += QmmpFileDialog diff --git a/src/plugins/FileDialogs/QmmpFileDialog/CMakeLists.txt b/src/plugins/FileDialogs/QmmpFileDialog/CMakeLists.txt new file mode 100644 index 000000000..e952b1d35 --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/CMakeLists.txt @@ -0,0 +1,61 @@ +project(libqmmpfiledialog) + +cmake_minimum_required(VERSION 2.4.0) + +if(COMMAND cmake_policy) +cmake_policy(SET CMP0003 NEW) +endif(COMMAND cmake_policy) + + +# qt plugin +ADD_DEFINITIONS( -Wall ) +ADD_DEFINITIONS(${QT_DEFINITIONS}) +ADD_DEFINITIONS(-DQT_PLUGIN) +ADD_DEFINITIONS(-DQT_NO_DEBUG) +ADD_DEFINITIONS(-DQT_SHARED) +ADD_DEFINITIONS(-DQT_THREAD) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +SET(QT_INCLUDES + ${QT_INCLUDES} + ${CMAKE_CURRENT_BINARY_DIR}/../../../ +) + +# libqmmpui +include_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui) + +SET(libqmmpfiledialog_SRCS + qmmpfiledialogimpl.cpp + qmmpfiledialog.cpp +) + +SET(libqmmpfiledialog_MOC_HDRS + qmmpfiledialogimpl.h + qmmpfiledialog.h +) + +#SET(libqmmpfiledialog_RCCS +# translations/translations.qrc +# qmmpfiledialog_images.qrc) + +#QT4_ADD_RESOURCES(libqmmpfiledialog_RCC_SRCS ${libqmmpfiledialog_RCCS}) + +QT4_WRAP_CPP(libqmmpfiledialog_MOC_SRCS ${libqmmpfiledialog_MOC_HDRS}) + +# user interface + + +SET(libqmmpfiledialog_UIS + qmmpfiledialog.ui +) + +QT4_WRAP_UI(libqmmpfiledialog_UIS_H ${libqmmpfiledialog_UIS}) +# Don't forget to include output directory, otherwise +# the UI file won't be wrapped! +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +ADD_LIBRARY(qmmpfiledialog SHARED ${libqmmpfiledialog_SRCS} ${libqmmpfiledialog_MOC_SRCS} ${libqmmpfiledialog_UIS_H} ${libqmmpfiledialog_RCC_SRCS}) +target_link_libraries(qmmpfiledialog ${QT_LIBRARIES} -lqmmpui) +install(TARGETS qmmpfiledialog DESTINATION ${LIB_DIR}/qmmp/FileDialogs) diff --git a/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro b/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro new file mode 100644 index 000000000..8722d6f86 --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro @@ -0,0 +1,31 @@ +include(../../plugins.pri) + +INCLUDEPATH += ../../../../src + +TARGET =$$PLUGINS_PREFIX/FileDialogs/qmmpfiledialog +QMAKE_CLEAN =$$PLUGINS_PREFIX/FileDialogs/libqmmpfiledialog.so + +HEADERS += qmmpfiledialog.h \ + qmmpfiledialogimpl.h + +SOURCES += qmmpfiledialog.cpp \ + qmmpfiledialogimpl.cpp + + +FORMS += qmmpfiledialog.ui + + +QMAKE_CLEAN += ../libqmmpfiledialog.so + + +CONFIG += release warn_on plugin + +TEMPLATE = lib + +QMAKE_LIBDIR += ../../../../lib + +isEmpty(LIB_DIR){ + LIB_DIR = /lib +} +target.path = $$LIB_DIR/qmmp/FileDialogs +INSTALLS += target diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp index fce9f6e53..fce9f6e53 100644 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h index 30a4fef59..2b69e06c3 100644 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.h +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h @@ -1,7 +1,7 @@ #ifndef QMMPFILEDIALOG_H #define QMMPFILEDIALOG_H -#include <filedialog.h> +#include <qmmpui/filedialog.h> class QmmpFileDialogImpl; diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui index dbfb2edc2..932e0b961 100644 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui @@ -12,21 +12,42 @@ <property name="windowTitle" > <string>Add Files</string> </property> + <property name="sizeGripEnabled" > + <bool>true</bool> + </property> <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> <property name="spacing" > <number>6</number> </property> + <property name="leftMargin" > + <number>9</number> + </property> + <property name="topMargin" > + <number>9</number> + </property> + <property name="rightMargin" > + <number>9</number> + </property> + <property name="bottomMargin" > + <number>9</number> + </property> <item> <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> <property name="spacing" > <number>6</number> </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> <item> <widget class="QLabel" name="label_2" > <property name="text" > @@ -37,9 +58,7 @@ <item> <widget class="QComboBox" name="lookInComboBox" > <property name="sizePolicy" > - <sizepolicy> - <hsizetype>5</hsizetype> - <vsizetype>0</vsizetype> + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > <horstretch>1</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -54,8 +73,8 @@ <property name="text" > <string>Up</string> </property> - <property name="icon" > - <iconset resource="images/images.qrc" >:/cdup.png</iconset> + <property name="autoRaise" > + <bool>true</bool> </property> </widget> </item> @@ -67,12 +86,12 @@ <property name="text" > <string>lst</string> </property> - <property name="icon" > - <iconset resource="images/images.qrc" >:/list.png</iconset> - </property> <property name="checkable" > <bool>true</bool> </property> + <property name="autoRaise" > + <bool>true</bool> + </property> </widget> </item> <item> @@ -83,9 +102,6 @@ <property name="text" > <string>icn</string> </property> - <property name="icon" > - <iconset resource="images/images.qrc" >:/detail.png</iconset> - </property> <property name="iconSize" > <size> <width>16</width> @@ -95,6 +111,9 @@ <property name="checkable" > <bool>true</bool> </property> + <property name="autoRaise" > + <bool>true</bool> + </property> </widget> </item> </layout> @@ -108,7 +127,7 @@ <bool>true</bool> </property> <property name="dragDropMode" > - <enum>QAbstractItemView::NoDragDrop</enum> + <enum>QAbstractItemView::DragDrop</enum> </property> <property name="alternatingRowColors" > <bool>false</bool> @@ -120,7 +139,13 @@ <enum>QAbstractItemView::SelectItems</enum> </property> <property name="movement" > - <enum>QListView::Static</enum> + <enum>QListView::Free</enum> + </property> + <property name="isWrapping" stdset="0" > + <bool>true</bool> + </property> + <property name="resizeMode" > + <enum>QListView::Adjust</enum> </property> <property name="layoutMode" > <enum>QListView::Batched</enum> @@ -128,6 +153,9 @@ <property name="viewMode" > <enum>QListView::ListMode</enum> </property> + <property name="uniformItemSizes" > + <bool>false</bool> + </property> <property name="wordWrap" > <bool>true</bool> </property> @@ -135,12 +163,21 @@ </item> <item> <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> <property name="spacing" > <number>6</number> </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> <item> <widget class="QLabel" name="label" > <property name="text" > @@ -155,12 +192,21 @@ </item> <item> <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> <property name="spacing" > <number>6</number> </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> <item> <spacer> <property name="orientation" > diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp index 984cc7204..cef212d9f 100644 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp @@ -1,7 +1,9 @@ #include "qmmpfiledialogimpl.h" #include <QDirModel> +#include <QApplication> #include <QFileInfo> +#include <QStyle> QmmpFileDialogImpl::QmmpFileDialogImpl( QWidget * parent, Qt::WindowFlags f) : QDialog(parent,f) { @@ -9,10 +11,13 @@ QmmpFileDialogImpl::QmmpFileDialogImpl( QWidget * parent, Qt::WindowFlags f) : Q setAttribute(Qt::WA_QuitOnClose, FALSE); m_model = new QDirModel(this); m_model->setSorting(QDir::Type /*| QDir::Name*/); - fileListView->setModel(m_model); + fileListView->setModel(m_model); //fileListView->setViewMode(QListView::IconMode); listToolButton->setChecked(true); -} + upToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowUp)); + listToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogListView)); + iconToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogDetailedView)); +} QmmpFileDialogImpl::~QmmpFileDialogImpl() { @@ -20,7 +25,7 @@ QmmpFileDialogImpl::~QmmpFileDialogImpl() void QmmpFileDialogImpl::on_lookInComboBox_activated(const QString&) { - qWarning("TODO: %s %d",__FILE__,__LINE__); + qWarning("TODO: %s %d",__FILE__,__LINE__); } void QmmpFileDialogImpl::on_upToolButton_clicked() @@ -31,10 +36,10 @@ void QmmpFileDialogImpl::on_upToolButton_clicked() void QmmpFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind) { - if(ind.isValid()) + if (ind.isValid()) { QFileInfo info = m_model->fileInfo(ind); - if(info.isDir()) + if (info.isDir()) { fileListView->setRootIndex(ind); lookInComboBox->setEditText(m_model->filePath(ind)); @@ -46,12 +51,12 @@ void QmmpFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind) emit filesAdded(l); } } - + } void QmmpFileDialogImpl::on_fileNameLineEdit_returnPressed() { - on_addPushButton_clicked(); + on_addPushButton_clicked(); } void QmmpFileDialogImpl::on_addPushButton_clicked() @@ -59,19 +64,19 @@ void QmmpFileDialogImpl::on_addPushButton_clicked() QModelIndexList ml = fileListView->selectionModel()->selectedIndexes(); QStringList l; foreach(QModelIndex i,ml) - l << m_model->filePath(i); + l << m_model->filePath(i); qWarning("!!!!!!!!!"); emit filesAdded(l); } void QmmpFileDialogImpl::setModeAndMask(const QString& d,FileDialog::Mode m, const QStringList & mask) { - if(m == FileDialog::AddFiles) + if (m == FileDialog::AddFiles) { setWindowTitle("Add Files"); m_model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); } - else if(m == FileDialog::AddDirs) + else if (m == FileDialog::AddDirs) { setWindowTitle("Add Dirs"); m_model->setFilter(QDir::Dirs | QDir::NoDotAndDotDot); @@ -86,24 +91,26 @@ void QmmpFileDialogImpl::setModeAndMask(const QString& d,FileDialog::Mode m, con m_model->setSorting(QDir::Type); fileListView->setRootIndex(m_model->index(d)); m_model->sort(0); - lookInComboBox->setEditText(d); + lookInComboBox->setEditText(QDir::cleanPath(d)); } void QmmpFileDialogImpl::on_listToolButton_toggled(bool yes) { - if(yes) + if (yes) { iconToolButton->setChecked(false); fileListView->setViewMode(QListView::ListMode); + fileListView->setGridSize(QSize(-1, -1)); } } void QmmpFileDialogImpl::on_iconToolButton_toggled(bool yes) { - if(yes) + if (yes) { listToolButton->setChecked(false); fileListView->setViewMode(QListView::IconMode); + fileListView->setGridSize(QSize(80, 80)); } } diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h index 2be25bf05..12cd63e21 100644 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h @@ -4,24 +4,24 @@ #include "ui_qmmpfiledialog.h" #include <QDialog> -#include "filedialog.h" +#include <qmmpui/filedialog.h> class QDirModel; class QmmpFileDialogImpl : public QDialog , private Ui::QmmpFileDialog { -Q_OBJECT + Q_OBJECT public: - QmmpFileDialogImpl( QWidget * parent = 0, Qt::WindowFlags f = 0 ); - ~QmmpFileDialogImpl(); + QmmpFileDialogImpl( QWidget * parent = 0, Qt::WindowFlags f = 0 ); + ~QmmpFileDialogImpl(); void setModeAndMask(const QString&,FileDialog::Mode m,const QStringList& mask); protected slots: - void on_lookInComboBox_activated(const QString&); - void on_upToolButton_clicked(); - void on_fileListView_doubleClicked(const QModelIndex&); - void on_fileNameLineEdit_returnPressed(); - void on_addPushButton_clicked(); + void on_lookInComboBox_activated(const QString&); + void on_upToolButton_clicked(); + void on_fileListView_doubleClicked(const QModelIndex&); + void on_fileNameLineEdit_returnPressed(); + void on_addPushButton_clicked(); void on_listToolButton_toggled(bool); void on_iconToolButton_toggled(bool); signals: diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro b/src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro deleted file mode 100644 index d9b8a96df..000000000 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro +++ /dev/null @@ -1,28 +0,0 @@ -QMMPROOT = ../../../qmmp - -INCLUDEPATH += $$QMMPROOT/src -INCLUDEPATH += $$QMMPROOT/lib - -HEADERS += qmmpfiledialog.h \ - qmmpfiledialogimpl.h \ - $$QMMPROOT/src/filedialog.h \ - $$QMMPROOT/src/playlistmodel.h - -SOURCES += qmmpfiledialog.cpp \ - qmmpfiledialogimpl.cpp \ - $$QMMPROOT/src/filedialog.cpp \ - $$QMMPROOT/src/playlistmodel.cpp - - -FORMS += qmmpfiledialog.ui - -RESOURCES += images/images.qrc - -DESTDIR = ../ -QMAKE_CLEAN += ../libqmmpfiledialog.so - - -CONFIG += release warn_on plugin - -TEMPLATE = lib - diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/cdup.png b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/cdup.png Binary files differdeleted file mode 100644 index 5d966a77b..000000000 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/cdup.png +++ /dev/null diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.png b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.png Binary files differdeleted file mode 100644 index 2e552a425..000000000 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.png +++ /dev/null diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc deleted file mode 100644 index c194a6b91..000000000 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc +++ /dev/null @@ -1,8 +0,0 @@ -<!DOCTYPE RCC> -<RCC version="1.0"> - <qresource> - <file>cdup.png</file> - <file>detail.png</file> - <file>list.png</file> - </qresource> -</RCC> diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/list.png b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/list.png Binary files differdeleted file mode 100644 index 13b44a620..000000000 --- a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/list.png +++ /dev/null diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index b14a5fc4b..2058ad53a 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -5,5 +5,6 @@ SUBDIRS += Input \ Effect \ General \ PlaylistFormats \ - CommandLineOptions + CommandLineOptions \ + FileDialogs TEMPLATE = subdirs diff --git a/src/qmmpui/CMakeLists.txt b/src/qmmpui/CMakeLists.txt index 6d98e5e56..a7d0f5a0f 100644 --- a/src/qmmpui/CMakeLists.txt +++ b/src/qmmpui/CMakeLists.txt @@ -29,6 +29,7 @@ SET(libqmmpui_SRCS control.cpp playlistparser.cpp commandlinemanager.cpp + filedialog.cpp ) SET(libqmmpui_MOC_HDRS @@ -41,6 +42,7 @@ SET(libqmmpui_MOC_HDRS playlistformat.h commandlinemanager.h commandlineoption.h + filedialog.h ) QT4_WRAP_CPP(libqmmpui_MOC_SRCS ${libqmmpui_MOC_HDRS}) diff --git a/src/ui/filedialog.cpp b/src/qmmpui/filedialog.cpp index 0c844e8db..f9202d886 100644 --- a/src/ui/filedialog.cpp +++ b/src/qmmpui/filedialog.cpp @@ -10,7 +10,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#include "playlistmodel.h" +//#include "playlistmodel.h" FileDialog* FileDialog::_instance = 0; @@ -27,14 +27,13 @@ bool FileDialog::isModal() } -void FileDialog::init(QObject* o) +void FileDialog::init(QObject* receiver, const char* member) { - if(!m_initialized && !instance()->modal()) + if (!m_initialized && !instance()->modal()) { - PlayListModel* model = NULL; - if( ( model = qobject_cast<PlayListModel*>(o)) ) + if (receiver && member) { - connect(this,SIGNAL(filesAdded(const QStringList&)),model,SLOT(addFileList(const QStringList&))); + connect(this,SIGNAL(filesAdded(const QStringList&)), receiver, member); m_initialized = true; } } @@ -45,7 +44,7 @@ void FileDialog::init(QObject* o) QString FileDialog::getExistingDirectory( QWidget * parent, const QString & caption, const QString & dir,bool def) { QString s; - if(def) + if (def) s = defaultInstance()->existingDirectory(parent,caption,dir); else s = instance()->existingDirectory(parent,caption,dir); @@ -55,13 +54,13 @@ QString FileDialog::getExistingDirectory( QWidget * parent, const QString & capt } QString FileDialog::getOpenFileName(QWidget * parent, - const QString & caption, - const QString & dir, - const QString & filter, - QString * selectedFilter,bool def) + const QString & caption, + const QString & dir, + const QString & filter, + QString * selectedFilter,bool def) { QString s; - if(def) + if (def) s = defaultInstance()->openFileName(parent,caption,dir,filter,selectedFilter); else s = instance()->openFileName(parent,caption,dir,filter,selectedFilter); @@ -71,26 +70,26 @@ QString FileDialog::getOpenFileName(QWidget * parent, } QStringList FileDialog::getOpenFileNames(QWidget * parent, const QString & caption , const QString & dir , - const QString & filter, QString * selectedFilter,bool def) + const QString & filter, QString * selectedFilter,bool def) { QStringList sl; - if(def) + if (def) sl = defaultInstance()->openFileNames(parent,caption ,dir ,filter, selectedFilter); else - sl = instance()->openFileNames(parent,caption,dir,filter,selectedFilter); + 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) + const QString & dir, const QString & filter, QString * selectedFilter,bool def) { QString s; - if(def) + if (def) s = defaultInstance()->saveFileName(parent,caption,dir,filter,selectedFilter); else - s = instance()->saveFileName(parent,caption,dir,filter,selectedFilter); + s = instance()->saveFileName(parent,caption,dir,filter,selectedFilter); delete _instance; _instance = 0; return s; @@ -99,22 +98,22 @@ QString FileDialog::getSaveFileName ( QWidget * parent, const QString & caption, QString FileDialog::existingDirectory(QWidget *, const QString &, const QString &) { - return QString(); + return QString(); } QString FileDialog::openFileName(QWidget *, const QString &, const QString &, const QString &, QString *) { - return QString(); + return QString(); } QStringList FileDialog::openFileNames(QWidget *, const QString &, const QString &, const QString &, QString *) { - return QStringList(); + return QStringList(); } QString FileDialog::saveFileName(QWidget *, const QString &, const QString &, const QString &, QString *) { - return QString(); + return QString(); } @@ -126,7 +125,9 @@ void FileDialog::registerBuiltinFactories() void FileDialog::registerExternalFactories() { - QDir pluginsDir (QDir::homePath()+"/.qmmp/plugins/FileDialogs"); + QDir pluginsDir (qApp->applicationDirPath()); + pluginsDir.cdUp(); + pluginsDir.cd("./"LIB_DIR"/qmmp/FileDialogs"); foreach (QString fileName, pluginsDir.entryList(QDir::Files)) { @@ -163,13 +164,13 @@ QString FileDialog::m_current_factory = QString(); FileDialog* FileDialog::instance() { - if(_instance && _instance->modal()) + if (_instance && _instance->modal()) { delete _instance; _instance = 0; } - if(factories.isEmpty()) + if (factories.isEmpty()) { registerBuiltinFactories(); registerExternalFactories(); @@ -181,40 +182,40 @@ FileDialog* FileDialog::instance() QStringList names = factories.keys(); - if(m_current_factory != f_dialogName || !_instance) + if (m_current_factory != f_dialogName || !_instance) { - if(_instance) + if (_instance) delete _instance; foreach(QString name,names) { - if(name == f_dialogName) - { - _instance = factories[name]->create(); - m_current_factory = f_dialogName; - break; - } + if (name == f_dialogName) + { + _instance = factories[name]->create(); + m_current_factory = f_dialogName; + break; + } } - if(!_instance) + if (!_instance) _instance = factories[QtFileDialogFactory::QtFileDialogFactoryName]->create(); } //else if(!_instance->modal()) - //return _instance; - // _instance->raise(); + //return _instance; + // _instance->raise(); return _instance; } FileDialog* FileDialog::defaultInstance() { - if(_instance) + if (_instance) { delete _instance; _instance = 0; } - if(factories.isEmpty()) + if (factories.isEmpty()) { registerBuiltinFactories(); registerExternalFactories(); @@ -227,7 +228,7 @@ FileDialog* FileDialog::defaultInstance() QStringList FileDialog::registeredFactories() { - if(factories.isEmpty()) + if (factories.isEmpty()) { registerBuiltinFactories(); registerExternalFactories(); @@ -236,11 +237,11 @@ QStringList FileDialog::registeredFactories() } -void FileDialog::popup(QObject* o,const QString& d,Mode m,const QStringList& f) +void FileDialog::popup(const QString& d,Mode m,const QStringList& f, QObject* receiver, const char* member) { - FileDialog* inst = instance(); - inst->init(o); - inst->raise(d,m,f); + FileDialog* inst = instance(); + inst->init(receiver, member); + inst->raise(d,m,f); } @@ -259,21 +260,21 @@ QString QtFileDialog::existingDirectory(QWidget * parent, const QString & captio } QString QtFileDialog::openFileName(QWidget * parent,const QString & caption,const QString & dir,const QString & filter, - QString * selectedFilter) + 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) + 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) +QString QtFileDialog::saveFileName ( QWidget * parent, const QString & caption, + const QString & dir, const QString & filter, QString * selectedFilter) { - return QFileDialog::getSaveFileName(parent,caption,dir,filter,selectedFilter); + return QFileDialog::getSaveFileName(parent,caption,dir,filter,selectedFilter); } @@ -288,7 +289,7 @@ FileDialog* QtFileDialogFactory::create() QString QtFileDialogFactory::name() { - return QtFileDialogFactoryName; + return QtFileDialogFactoryName; } QString QtFileDialogFactory::QtFileDialogFactoryName = "Qt File Dialog"; diff --git a/src/qmmpui/filedialog.h b/src/qmmpui/filedialog.h new file mode 100644 index 000000000..cbf9af07b --- /dev/null +++ b/src/qmmpui/filedialog.h @@ -0,0 +1,125 @@ +#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(const QString& = QString(),Mode = AddFiles,const QStringList& nameFilters = QStringList(), + QObject* receiver = 0, const char* member = 0); +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* receiver, const char* member); + 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/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro index 5e6bbde87..dde39a474 100644 --- a/src/qmmpui/qmmpui.pro +++ b/src/qmmpui/qmmpui.pro @@ -33,13 +33,15 @@ HEADERS += general.h \ playlistformat.h \ playlistparser.h \ commandlinemanager.h \ - commandlineoption.h + commandlineoption.h \ + filedialog.h SOURCES += general.cpp \ generalhandler.cpp \ songinfo.cpp \ control.cpp \ playlistparser.cpp \ - commandlinemanager.cpp + commandlinemanager.cpp \ + filedialog.cpp DESTDIR = . 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.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 \ |
