From c2a415452b1dc62b68cb3f5cd9ca4214e2299e84 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 19 Jun 2008 13:54:07 +0000 Subject: enabled qmmp file dialog git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@428 90c681e8-e032-0410-971d-27865f9a5e38 --- .../FileDialogs/QmmpFileDialog/CMakeLists.txt | 61 +++++ .../FileDialogs/QmmpFileDialog/QmmpFileDialog.pro | 31 +++ .../FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp | 44 ++++ .../FileDialogs/QmmpFileDialog/qmmpfiledialog.h | 40 ++++ .../FileDialogs/QmmpFileDialog/qmmpfiledialog.ui | 262 +++++++++++++++++++++ .../QmmpFileDialog/qmmpfiledialogimpl.cpp | 116 +++++++++ .../QmmpFileDialog/qmmpfiledialogimpl.h | 33 +++ 7 files changed, 587 insertions(+) create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/CMakeLists.txt create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp create mode 100644 src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h (limited to 'src/plugins/FileDialogs/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/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp new file mode 100644 index 000000000..fce9f6e53 --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp @@ -0,0 +1,44 @@ +#include + +#include "qmmpfiledialogimpl.h" +#include "qmmpfiledialog.h" + + + +QmmpFileDialog::QmmpFileDialog() +{ + m_dialog = new QmmpFileDialogImpl(); + connect(m_dialog,SIGNAL(filesAdded(const QStringList&)),this,SIGNAL(filesAdded(const QStringList&))); +} + +void QmmpFileDialog::handleSelected(/*const QStringList& s */) +{ +} + +bool QmmpFileDialog::modal()const +{ + return FALSE; +} + +QmmpFileDialog::~QmmpFileDialog() +{ + qWarning("QmmpFileDialog::~QmmpFileDialog()"); + delete m_dialog; +} +void QmmpFileDialog::raise(const QString& d,Mode m,const QStringList& f) +{ + m_dialog->setModeAndMask(d,m,f); + m_dialog->show(); + m_dialog->raise(); +} + + +FileDialog* QmmpFileDialogFactory::create(){ return new QmmpFileDialog();} + +QString QmmpFileDialogFactory::name(){return QmmpFileDialogFactoryName;} + +QString QmmpFileDialogFactory::QmmpFileDialogFactoryName = "Qmmp File Dialog"; + + +Q_EXPORT_PLUGIN(QmmpFileDialogFactory) + diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h new file mode 100644 index 000000000..2b69e06c3 --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h @@ -0,0 +1,40 @@ +#ifndef QMMPFILEDIALOG_H +#define QMMPFILEDIALOG_H + +#include + +class QmmpFileDialogImpl; + +class QmmpFileDialog : public FileDialog +{ +Q_OBJECT + public: + QmmpFileDialog(); + virtual ~QmmpFileDialog(); + virtual bool modal()const; + virtual void raise(const QString&,Mode = AddFiles,const QStringList& = QStringList()); + public slots: + void handleSelected(); + + private: + QmmpFileDialogImpl * m_dialog; +}; + + + + +class QmmpFileDialogFactory : public QObject, public FileDialogFactory +{ + Q_OBJECT + Q_INTERFACES(FileDialogFactory); + public: + virtual FileDialog* create(); + virtual QString name(); + virtual ~QmmpFileDialogFactory(){;} + static QString QmmpFileDialogFactoryName; +}; + + +#endif + + diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui new file mode 100644 index 000000000..932e0b961 --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui @@ -0,0 +1,262 @@ + + QmmpFileDialog + + + + 0 + 0 + 517 + 312 + + + + Add Files + + + true + + + + 6 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Look in: + + + + + + + + 1 + 0 + + + + true + + + + + + + Up + + + true + + + + + + + List view + + + lst + + + true + + + true + + + + + + + Icon view + + + icn + + + + 16 + 16 + + + + true + + + true + + + + + + + + + QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::DragDrop + + + false + + + QAbstractItemView::ExtendedSelection + + + QAbstractItemView::SelectItems + + + QListView::Free + + + true + + + QListView::Adjust + + + QListView::Batched + + + QListView::ListMode + + + false + + + true + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + File name: + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Add + + + + + + + Close + + + + + + + + + + + + + closePushButton + clicked() + QmmpFileDialog + reject() + + + 459 + 291 + + + 153 + 289 + + + + + diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp new file mode 100644 index 000000000..cef212d9f --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp @@ -0,0 +1,116 @@ +#include "qmmpfiledialogimpl.h" + +#include +#include +#include +#include + +QmmpFileDialogImpl::QmmpFileDialogImpl( QWidget * parent, Qt::WindowFlags f) : QDialog(parent,f) +{ + setupUi(this); + setAttribute(Qt::WA_QuitOnClose, FALSE); + m_model = new QDirModel(this); + m_model->setSorting(QDir::Type /*| QDir::Name*/); + 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() +{ +} + +void QmmpFileDialogImpl::on_lookInComboBox_activated(const QString&) +{ + qWarning("TODO: %s %d",__FILE__,__LINE__); +} + +void QmmpFileDialogImpl::on_upToolButton_clicked() +{ + fileListView->setRootIndex(m_model->parent(fileListView->rootIndex())); + lookInComboBox->setEditText(m_model->filePath(fileListView->rootIndex())); +} + +void QmmpFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind) +{ + if (ind.isValid()) + { + QFileInfo info = m_model->fileInfo(ind); + if (info.isDir()) + { + fileListView->setRootIndex(ind); + lookInComboBox->setEditText(m_model->filePath(ind)); + } + else + { + QStringList l; + l << m_model->filePath(ind); + emit filesAdded(l); + } + } + +} + +void QmmpFileDialogImpl::on_fileNameLineEdit_returnPressed() +{ + on_addPushButton_clicked(); +} + +void QmmpFileDialogImpl::on_addPushButton_clicked() +{ + QModelIndexList ml = fileListView->selectionModel()->selectedIndexes(); + QStringList l; + foreach(QModelIndex i,ml) + 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) + { + setWindowTitle("Add Files"); + m_model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); + } + else if (m == FileDialog::AddDirs) + { + setWindowTitle("Add Dirs"); + m_model->setFilter(QDir::Dirs | QDir::NoDotAndDotDot); + } + else + { + setWindowTitle("Save File"); + m_model->setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); + qWarning("To be implemented..."); + } + + m_model->setSorting(QDir::Type); + fileListView->setRootIndex(m_model->index(d)); + m_model->sort(0); + lookInComboBox->setEditText(QDir::cleanPath(d)); +} + +void QmmpFileDialogImpl::on_listToolButton_toggled(bool yes) +{ + if (yes) + { + iconToolButton->setChecked(false); + fileListView->setViewMode(QListView::ListMode); + fileListView->setGridSize(QSize(-1, -1)); + } +} + +void QmmpFileDialogImpl::on_iconToolButton_toggled(bool yes) +{ + if (yes) + { + listToolButton->setChecked(false); + fileListView->setViewMode(QListView::IconMode); + fileListView->setGridSize(QSize(80, 80)); + } +} + diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h new file mode 100644 index 000000000..12cd63e21 --- /dev/null +++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h @@ -0,0 +1,33 @@ +#ifndef QMMPFILEDIALOGIMPL_H +#define QMMPFILEDIALOGIMPL_H + +#include "ui_qmmpfiledialog.h" +#include + +#include + +class QDirModel; + + +class QmmpFileDialogImpl : public QDialog , private Ui::QmmpFileDialog +{ + Q_OBJECT +public: + 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_listToolButton_toggled(bool); + void on_iconToolButton_toggled(bool); +signals: + void filesAdded(const QStringList&); +protected: + QDirModel* m_model; + +}; +#endif //QMMPFILEDIALOGIMPL_H -- cgit v1.2.3-13-gbd6f