aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Misc/FileDialogs/QmmpFileDialog
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Misc/FileDialogs/QmmpFileDialog')
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro28
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/images/cdup.pngbin0 -> 736 bytes
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.pngbin0 -> 551 bytes
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc8
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/images/list.pngbin0 -> 547 bytes
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp44
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.h40
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui216
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp109
-rw-r--r--src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h33
10 files changed, 478 insertions, 0 deletions
diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro b/src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro
new file mode 100644
index 000000000..d9b8a96df
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro
@@ -0,0 +1,28 @@
+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
new file mode 100644
index 000000000..5d966a77b
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/cdup.png
Binary files differ
diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.png b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.png
new file mode 100644
index 000000000..2e552a425
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/detail.png
Binary files differ
diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc
new file mode 100644
index 000000000..c194a6b91
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/images.qrc
@@ -0,0 +1,8 @@
+<!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
new file mode 100644
index 000000000..13b44a620
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/images/list.png
Binary files differ
diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp
new file mode 100644
index 000000000..fce9f6e53
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp
@@ -0,0 +1,44 @@
+#include <QtPlugin>
+
+#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/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.h b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.h
new file mode 100644
index 000000000..30a4fef59
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.h
@@ -0,0 +1,40 @@
+#ifndef QMMPFILEDIALOG_H
+#define QMMPFILEDIALOG_H
+
+#include <filedialog.h>
+
+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/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui
new file mode 100644
index 000000000..dbfb2edc2
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui
@@ -0,0 +1,216 @@
+<ui version="4.0" >
+ <class>QmmpFileDialog</class>
+ <widget class="QDialog" name="QmmpFileDialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>517</width>
+ <height>312</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Add Files</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Look in:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="lookInComboBox" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="editable" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="upToolButton" >
+ <property name="text" >
+ <string>Up</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="images/images.qrc" >:/cdup.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="listToolButton" >
+ <property name="toolTip" >
+ <string>List view</string>
+ </property>
+ <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>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="iconToolButton" >
+ <property name="toolTip" >
+ <string>Icon view</string>
+ </property>
+ <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>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QListView" name="fileListView" >
+ <property name="editTriggers" >
+ <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="dragEnabled" >
+ <bool>true</bool>
+ </property>
+ <property name="dragDropMode" >
+ <enum>QAbstractItemView::NoDragDrop</enum>
+ </property>
+ <property name="alternatingRowColors" >
+ <bool>false</bool>
+ </property>
+ <property name="selectionMode" >
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="selectionBehavior" >
+ <enum>QAbstractItemView::SelectItems</enum>
+ </property>
+ <property name="movement" >
+ <enum>QListView::Static</enum>
+ </property>
+ <property name="layoutMode" >
+ <enum>QListView::Batched</enum>
+ </property>
+ <property name="viewMode" >
+ <enum>QListView::ListMode</enum>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>File name:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="fileNameLineEdit" />
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="addPushButton" >
+ <property name="text" >
+ <string>Add</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="closePushButton" >
+ <property name="text" >
+ <string>Close</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="images/images.qrc" />
+ </resources>
+ <connections>
+ <connection>
+ <sender>closePushButton</sender>
+ <signal>clicked()</signal>
+ <receiver>QmmpFileDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>459</x>
+ <y>291</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>153</x>
+ <y>289</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
new file mode 100644
index 000000000..984cc7204
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
@@ -0,0 +1,109 @@
+#include "qmmpfiledialogimpl.h"
+
+#include <QDirModel>
+#include <QFileInfo>
+
+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);
+}
+
+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(d);
+}
+
+void QmmpFileDialogImpl::on_listToolButton_toggled(bool yes)
+{
+ if(yes)
+ {
+ iconToolButton->setChecked(false);
+ fileListView->setViewMode(QListView::ListMode);
+ }
+}
+
+void QmmpFileDialogImpl::on_iconToolButton_toggled(bool yes)
+{
+ if(yes)
+ {
+ listToolButton->setChecked(false);
+ fileListView->setViewMode(QListView::IconMode);
+ }
+}
+
diff --git a/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
new file mode 100644
index 000000000..2be25bf05
--- /dev/null
+++ b/src/plugins/Misc/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
@@ -0,0 +1,33 @@
+#ifndef QMMPFILEDIALOGIMPL_H
+#define QMMPFILEDIALOGIMPL_H
+
+#include "ui_qmmpfiledialog.h"
+#include <QDialog>
+
+#include "filedialog.h"
+
+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