aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro9
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp91
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h74
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui268
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp339
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h93
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_cs.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_de.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_pt_BR.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_ru.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_tr.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_uk_UA.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_CN.ts109
-rw-r--r--src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_TW.ts109
-rw-r--r--src/qmmpui/filedialog.cpp303
-rw-r--r--src/qmmpui/filedialog.h188
-rw-r--r--src/qmmpui/filedialogfactory.h50
-rw-r--r--src/qmmpui/qmmpui.pro17
-rw-r--r--src/qmmpui/qtfiledialog.cpp91
-rw-r--r--src/qmmpui/qtfiledialog.h74
-rw-r--r--src/qmmpui/translations/libqmmpui_cs.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_de.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_locales.qrc13
-rw-r--r--src/qmmpui/translations/libqmmpui_pt_BR.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_ru.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_tr.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_uk_UA.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_zh_CN.ts11
-rw-r--r--src/qmmpui/translations/libqmmpui_zh_TW.ts11
-rw-r--r--src/ui/configdialog.cpp45
-rw-r--r--src/ui/configdialog.h2
-rw-r--r--src/ui/eqwidget.cpp8
-rw-r--r--src/ui/forms/configdialog.ui6
-rw-r--r--src/ui/mainwindow.cpp129
34 files changed, 2202 insertions, 558 deletions
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro b/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro
index 5661a3de3..d89ba2d18 100644
--- a/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro
+++ b/src/plugins/FileDialogs/QmmpFileDialog/QmmpFileDialog.pro
@@ -30,3 +30,12 @@ isEmpty(LIB_DIR){
}
target.path = $$LIB_DIR/qmmp/FileDialogs
INSTALLS += target
+
+TRANSLATIONS = translations/qmmp_file_dialog_plugin_ru.ts \
+ translations/qmmp_file_dialog_plugin_tr.ts \
+ translations/qmmp_file_dialog_plugin_zh_CN.ts \
+ translations/qmmp_file_dialog_plugin_cs.ts \
+ translations/qmmp_file_dialog_plugin_pt_BR.ts \
+ translations/qmmp_file_dialog_plugin_uk_UA.ts \
+ translations/qmmp_file_dialog_plugin_zh_TW.ts \
+ translations/qmmp_file_dialog_plugin_de.ts
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp
index fce9f6e53..7209394e0 100644
--- a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp
+++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.cpp
@@ -1,4 +1,26 @@
+/**************************************************************************
+* Copyright (C) 2008 by Ilya Kotov *
+* forkotov02@hotmail.ru *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+***************************************************************************/
+
#include <QtPlugin>
+#include <QTranslator>
+#include <QMessageBox>
#include "qmmpfiledialogimpl.h"
#include "qmmpfiledialog.h"
@@ -25,20 +47,77 @@ QmmpFileDialog::~QmmpFileDialog()
qWarning("QmmpFileDialog::~QmmpFileDialog()");
delete m_dialog;
}
-void QmmpFileDialog::raise(const QString& d,Mode m,const QStringList& f)
+void QmmpFileDialog::raise(const QString &dir, Mode mode, const QString &caption,
+ const QStringList &mask)
{
- m_dialog->setModeAndMask(d,m,f);
+ m_dialog->setModeAndMask(dir, mode, mask);
+ m_dialog->setWindowTitle(caption);
m_dialog->show();
m_dialog->raise();
}
+QString QmmpFileDialog::openFileName(QWidget *parent, const QString &caption,
+ const QString &dir, const QString &filter, QString*)
+{
+ QmmpFileDialogImpl *dialog = new QmmpFileDialogImpl(parent);
+ dialog->setWindowTitle(caption);
+ dialog->setModeAndMask(dir, FileDialog::AddFile, filter.split(";;"));
+ QStringList l;
+ if (dialog->exec() == QDialog::Accepted)
+ l = dialog->selectedFiles();
+ dialog->deleteLater();
+ if (l.isEmpty())
+ return QString();
+ else
+ return l.at(0);
+}
+
+QString QmmpFileDialog::saveFileName (QWidget *parent, const QString &caption,
+ const QString &dir, const QString &filter, QString*)
+{
+ QmmpFileDialogImpl *dialog = new QmmpFileDialogImpl(parent);
+ dialog->setWindowTitle(caption);
+ dialog->setModeAndMask(dir, FileDialog::SaveFile, filter.split(";;"));
+ QStringList l;
+ if (dialog->exec() == QDialog::Accepted)
+ l = dialog->selectedFiles();
+ dialog->deleteLater();
+ if (l.isEmpty())
+ return QString();
+ else
+ return l.at(0);
+}
+
+FileDialog* QmmpFileDialogFactory::create()
+{
+ return new QmmpFileDialog();
+}
-FileDialog* QmmpFileDialogFactory::create(){ return new QmmpFileDialog();}
+const FileDialogProperties QmmpFileDialogFactory::properties() const
+{
+ FileDialogProperties properties;
+ properties.name = tr("Qmmp File Dialog");
+ properties.hasAbout =TRUE;
+ return properties;
+}
-QString QmmpFileDialogFactory::name(){return QmmpFileDialogFactoryName;}
+void QmmpFileDialogFactory::showAbout(QWidget *parent)
+{
+ QMessageBox::about (parent, tr("About Qmmp File Dialog"),
+ tr("Qmmp File Dialog")+"\n"+
+ tr("Writen by:\n"
+ "Vladimir Kuznetsov <vovanec@gmail.com>\n"
+ "Ilya Kotov <forkotov02@hotmail.ru>")+"\n"+
+ tr("Some code is copied from the Qt library"));
-QString QmmpFileDialogFactory::QmmpFileDialogFactoryName = "Qmmp File Dialog";
+}
+QTranslator *QmmpFileDialogFactory::createTranslator(QObject *parent)
+{
+ QTranslator *translator = new QTranslator(parent);
+ QString locale = QLocale::system().name();
+ translator->load(QString(":/qmmp_file_dialog_plugin_") + locale);
+ return translator;
+}
Q_EXPORT_PLUGIN(QmmpFileDialogFactory)
-
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h
index 2b69e06c3..e99e5ed2a 100644
--- a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h
+++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.h
@@ -1,3 +1,24 @@
+/**************************************************************************
+* Copyright (C) 2008 by Ilya Kotov *
+* forkotov02@hotmail.ru *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+***************************************************************************/
+
+
#ifndef QMMPFILEDIALOG_H
#define QMMPFILEDIALOG_H
@@ -7,17 +28,34 @@ 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;
+ Q_OBJECT
+public:
+ QmmpFileDialog();
+ virtual ~QmmpFileDialog();
+ bool modal()const;
+
+ void raise(const QString &dir = QString(),
+ Mode mode = AddFiles,
+ const QString &caption = QString(),
+ const QStringList &mask = QStringList());
+
+ QString openFileName(QWidget *parent = 0,
+ const QString &caption = QString(),
+ const QString &dir = QString(),
+ const QString &filter = QString(),
+ QString *selectedFilter = 0);
+
+ QString saveFileName (QWidget *parent = 0,
+ const QString &caption = QString(),
+ const QString &dir = QString(),
+ const QString &filter = QString(),
+ QString *selectedFilter = 0);
+
+public slots:
+ void handleSelected();
+
+private:
+ QmmpFileDialogImpl *m_dialog;
};
@@ -27,11 +65,15 @@ class QmmpFileDialogFactory : public QObject, public FileDialogFactory
{
Q_OBJECT
Q_INTERFACES(FileDialogFactory);
- public:
- virtual FileDialog* create();
- virtual QString name();
- virtual ~QmmpFileDialogFactory(){;}
- static QString QmmpFileDialogFactoryName;
+public:
+ virtual FileDialog* create();
+ virtual const FileDialogProperties properties() const;
+ virtual void showAbout(QWidget*);
+ virtual QTranslator *createTranslator(QObject *parent);
+ virtual ~QmmpFileDialogFactory()
+ {
+ ;
+ }
};
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui
index f2b778a13..0cbf7001c 100644
--- a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui
+++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialog.ui
@@ -5,8 +5,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>517</width>
- <height>312</height>
+ <width>574</width>
+ <height>374</height>
</rect>
</property>
<property name="windowTitle" >
@@ -15,46 +15,9 @@
<property name="sizeGripEnabled" >
<bool>true</bool>
</property>
- <layout class="QVBoxLayout" >
- <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="QGridLayout" >
+ <item row="0" column="0" colspan="3" >
<layout class="QHBoxLayout" >
- <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" >
- <string>Look in:</string>
- </property>
- </widget>
- </item>
<item>
<widget class="QComboBox" name="lookInComboBox" >
<property name="sizePolicy" >
@@ -70,9 +33,12 @@
</item>
<item>
<widget class="QToolButton" name="upToolButton" >
- <property name="text" >
+ <property name="toolTip" >
<string>Up</string>
</property>
+ <property name="text" >
+ <string>...</string>
+ </property>
<property name="autoRaise" >
<bool>true</bool>
</property>
@@ -84,23 +50,26 @@
<string>List view</string>
</property>
<property name="text" >
- <string>lst</string>
+ <string>...</string>
</property>
<property name="checkable" >
<bool>true</bool>
</property>
+ <property name="autoExclusive" >
+ <bool>true</bool>
+ </property>
<property name="autoRaise" >
<bool>true</bool>
</property>
</widget>
</item>
<item>
- <widget class="QToolButton" name="iconToolButton" >
+ <widget class="QToolButton" name="detailsToolButton" >
<property name="toolTip" >
- <string>Icon view</string>
+ <string>Detailed view</string>
</property>
<property name="text" >
- <string>icn</string>
+ <string>...</string>
</property>
<property name="iconSize" >
<size>
@@ -111,6 +80,25 @@
<property name="checkable" >
<bool>true</bool>
</property>
+ <property name="autoExclusive" >
+ <bool>true</bool>
+ </property>
+ <property name="autoRaise" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="closeOnAddToolButton" >
+ <property name="toolTip" >
+ <string>Close dialog on add</string>
+ </property>
+ <property name="text" >
+ <string>...</string>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
<property name="autoRaise" >
<bool>true</bool>
</property>
@@ -118,105 +106,117 @@
</item>
</layout>
</item>
- <item>
- <widget class="QListView" name="fileListView" >
- <property name="selectionMode" >
- <enum>QAbstractItemView::ExtendedSelection</enum>
- </property>
- <property name="movement" >
- <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::SinglePass</enum>
- </property>
- <property name="uniformItemSizes" >
- <bool>false</bool>
- </property>
- <property name="wordWrap" >
- <bool>false</bool>
- </property>
+ <item row="1" column="0" colspan="3" >
+ <widget class="QStackedWidget" name="stackedWidget" >
+ <property name="currentIndex" >
+ <number>1</number>
+ </property>
+ <widget class="QWidget" name="page" >
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QListView" name="fileListView" >
+ <property name="selectionMode" >
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="movement" >
+ <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::SinglePass</enum>
+ </property>
+ <property name="uniformItemSizes" >
+ <bool>false</bool>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_2" >
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QTreeView" name="treeView" >
+ <property name="selectionMode" >
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="rootIsDecorated" >
+ <bool>false</bool>
+ </property>
+ <property name="itemsExpandable" >
+ <bool>false</bool>
+ </property>
+ <property name="allColumnsShowFocus" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
</widget>
</item>
- <item>
- <layout class="QHBoxLayout" >
- <property name="spacing" >
- <number>6</number>
- </property>
- <property name="leftMargin" >
- <number>0</number>
- </property>
- <property name="topMargin" >
- <number>0</number>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>File name:</string>
</property>
- <property name="rightMargin" >
- <number>0</number>
+ </widget>
+ </item>
+ <item row="2" column="1" >
+ <widget class="QLineEdit" name="fileNameLineEdit" />
+ </item>
+ <item row="2" column="2" >
+ <widget class="QPushButton" name="addPushButton" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="bottomMargin" >
- <number>0</number>
+ <property name="text" >
+ <string>Add</string>
</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>
+ </widget>
</item>
- <item>
- <layout class="QHBoxLayout" >
- <property name="spacing" >
- <number>6</number>
+ <item row="3" column="0" >
+ <widget class="QLabel" name="label_3" >
+ <property name="text" >
+ <string>Files of type:</string>
</property>
- <property name="leftMargin" >
- <number>0</number>
+ </widget>
+ </item>
+ <item row="3" column="1" >
+ <widget class="QComboBox" name="fileTypeComboBox" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="topMargin" >
- <number>0</number>
+ <property name="sizeAdjustPolicy" >
+ <enum>QComboBox::AdjustToMinimumContentsLength</enum>
</property>
- <property name="rightMargin" >
- <number>0</number>
+ </widget>
+ </item>
+ <item row="3" column="2" >
+ <widget class="QPushButton" name="closePushButton" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="bottomMargin" >
- <number>0</number>
+ <property name="text" >
+ <string>Close</string>
</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>
+ </widget>
</item>
</layout>
</widget>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
index 3abec0222..4121b7d28 100644
--- a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
+++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.cpp
@@ -1,37 +1,149 @@
+/**************************************************************************
+* Copyright (C) 2008 by Ilya Kotov *
+* forkotov02@hotmail.ru *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+***************************************************************************/
+
#include "qmmpfiledialogimpl.h"
#include <QDirModel>
#include <QApplication>
#include <QFileInfo>
#include <QStyle>
+#include <QSettings>
+#include <QMessageBox>
+
+#define HISTORY_SIZE 8
+
+
+/**
+ * This variable had been copied from Qt library
+ */
+
+const char *qt_file_dialog_filter_reg_exp =
+ "([a-zA-Z0-9 -]*)\\(([a-zA-Z0-9_.*? +;#\\-\\[\\]@\\{\\}/!<>\\$%&=^~:\\|]*)\\)$";
+
+/**
+ * This function had been copied from Qt library
+ */
+
+// Makes a list of filters from a normal filter string "Image Files (*.png *.jpg)"
+static QStringList qt_clean_filter_list(const QString &filter)
+{
+ QRegExp regexp(QString::fromLatin1(qt_file_dialog_filter_reg_exp));
+ QString f = filter;
+ int i = regexp.indexIn(f);
+ if (i >= 0)
+ f = regexp.cap(2);
+ return f.split(QLatin1Char(' '), QString::SkipEmptyParts);
+}
+
+
-QmmpFileDialogImpl::QmmpFileDialogImpl( QWidget * parent, Qt::WindowFlags f) : QDialog(parent,f)
+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);
+ treeView->setModel(m_model);
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));
+ closeOnAddToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_DialogOkButton));
+ detailsToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogDetailedView));
+ connect(fileListView->selectionModel(),
+ SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
+ SLOT(updateSelection ()));
+ connect(treeView->selectionModel(),
+ SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
+ SLOT(updateSelection ()));
+ PathCompleter* completer = new PathCompleter (m_model, fileListView, this);
+ fileNameLineEdit->setCompleter (completer);
+ QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ closeOnAddToolButton->setChecked(settings.value("QMMPFileDialog/close_on_add", FALSE).toBool());
+ restoreGeometry(settings.value("QMMPFileDialog/geometry").toByteArray());
+ m_history = settings.value("QMMPFileDialog/history").toStringList();
+ lookInComboBox->addItems(m_history);
+ lookInComboBox->setMaxCount(HISTORY_SIZE);
+ QCompleter* dir_completer = new QCompleter (m_model, this);
+ lookInComboBox->setCompleter (dir_completer);
}
QmmpFileDialogImpl::~QmmpFileDialogImpl()
{
}
-void QmmpFileDialogImpl::on_lookInComboBox_activated(const QString&)
+QStringList QmmpFileDialogImpl::selectedFiles ()
{
- qWarning("TODO: %s %d",__FILE__,__LINE__);
+ QStringList l;
+ if (m_mode == FileDialog::SaveFile)
+ {
+ l << m_model->filePath(fileListView->rootIndex()) + "/" + fileNameLineEdit->text();
+ qDebug(qPrintable(l[0]));
+ }
+ else
+ {
+ QModelIndexList ml = fileListView->selectionModel()->selectedIndexes();
+ foreach(QModelIndex i,ml)
+ l << m_model->filePath(i);
+ }
+ return l;
+}
+
+void QmmpFileDialogImpl::on_lookInComboBox_activated(const QString &path)
+{
+ if (QDir(path).exists ())
+ {
+ fileListView->setRootIndex(m_model->index(path));
+ treeView->setRootIndex(m_model->index(path));
+ }
}
void QmmpFileDialogImpl::on_upToolButton_clicked()
{
fileListView->setRootIndex(m_model->parent(fileListView->rootIndex()));
+ treeView->setRootIndex(m_model->parent(fileListView->rootIndex()));
lookInComboBox->setEditText(m_model->filePath(fileListView->rootIndex()));
+ fileListView->selectionModel()->clear ();
+}
+
+void QmmpFileDialogImpl::on_treeView_doubleClicked(const QModelIndex& ind)
+{
+ if (ind.isValid())
+ {
+ QFileInfo info = m_model->fileInfo(ind);
+ if (info.isDir())
+ {
+ treeView->setRootIndex(ind);
+ lookInComboBox->setEditText(m_model->filePath(ind));
+ treeView->selectionModel()->clear ();
+ fileListView->setRootIndex(ind);
+ fileListView->selectionModel()->clear ();
+ }
+ else
+ {
+ QStringList l;
+ l << m_model->filePath(ind);
+ addToHistory(l[0]);
+ addFiles(l);
+ }
+ }
}
void QmmpFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind)
@@ -43,20 +155,41 @@ void QmmpFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind)
{
fileListView->setRootIndex(ind);
lookInComboBox->setEditText(m_model->filePath(ind));
+ fileListView->selectionModel()->clear ();
+ treeView->setRootIndex(ind);
+ treeView->selectionModel()->clear ();
}
else
{
QStringList l;
l << m_model->filePath(ind);
- emit filesAdded(l);
+ addToHistory(l[0]);
+ addFiles(l);
}
}
-
}
void QmmpFileDialogImpl::on_fileNameLineEdit_returnPressed()
{
- on_addPushButton_clicked();
+ qWarning("TODO: %s %d", __FILE__, __LINE__);
+}
+
+void QmmpFileDialogImpl::on_fileNameLineEdit_textChanged (const QString &text)
+{
+ if (m_mode == FileDialog::SaveFile)
+ {
+ addPushButton->setEnabled(!text.isEmpty());
+ return;
+ }
+ QModelIndex index;
+ if (text.startsWith("/"))
+ index = m_model->index(text);
+ else
+ index = m_model->index(m_model->filePath(fileListView->rootIndex()) + "/" + text);
+ if (!index.isValid() || !fileNameLineEdit->hasFocus())
+ return;
+ fileListView->selectionModel()->clear();
+ fileListView->selectionModel()->select(index, QItemSelectionModel::Select);
}
void QmmpFileDialogImpl::on_addPushButton_clicked()
@@ -65,53 +198,199 @@ void QmmpFileDialogImpl::on_addPushButton_clicked()
QStringList l;
foreach(QModelIndex i,ml)
l << m_model->filePath(i);
- qWarning("!!!!!!!!!");
- emit filesAdded(l);
+ if (!l.isEmpty())
+ {
+ addToHistory(l[0]);
+ addFiles(l);
+ }
}
void QmmpFileDialogImpl::setModeAndMask(const QString& d,FileDialog::Mode m, const QStringList& mask)
{
- if (m == FileDialog::AddFiles)
+ m_mode = m;
+ fileListView->clearSelection ();
+ treeView->clearSelection ();
+ fileTypeComboBox->clear();
+ addPushButton->setEnabled(FALSE);
+ addPushButton->setText(tr("Add"));
+
+ QString fileName;
+ QString path = d;
+
+ if (m == FileDialog::SaveFile)
{
- setWindowTitle("Add Files");
- m_model->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
- m_model->setNameFilters(mask);
+ if (path.endsWith('/'))
+ path.remove(path.size()-1, 1);
+ path = path.left(path.lastIndexOf ('/'));
+ fileName = d.section('/', -1);
+ fileNameLineEdit->setText(fileName);
+ addPushButton->setEnabled(!fileName.isEmpty());
+ addPushButton->setText(tr("Save"));
+ }
+
+ if (m_model->filePath(fileListView->rootIndex()) != path)
+ {
+ fileListView->setRootIndex(m_model->index(path));
+ treeView->setRootIndex(m_model->index(path));
}
- else if (m == FileDialog::AddDirs)
+
+ if (m == FileDialog::AddDirs || m == FileDialog::AddDir)
{
- setWindowTitle("Add Dirs");
- m_model->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
+ m_model->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot); //dirs only
+ fileTypeComboBox->addItem(tr("Directories"));
+ fileTypeComboBox->setEnabled(FALSE);
}
else
{
- setWindowTitle("Save File");
m_model->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
- qWarning("To be implemented...");
+ fileTypeComboBox->setEnabled(TRUE);
+ fileTypeComboBox->addItems(mask);
+ on_fileTypeComboBox_activated(0);
+ }
+
+ //set selection mode
+ if (m == FileDialog::AddDir || m == FileDialog::AddFile || m == FileDialog::SaveFile)
+ {
+ fileListView->setSelectionMode (QAbstractItemView::SingleSelection);
+ treeView->setSelectionMode (QAbstractItemView::SingleSelection);
+ }
+ else
+ {
+ fileListView->setSelectionMode (QAbstractItemView::ExtendedSelection);
+ treeView->setSelectionMode (QAbstractItemView::ExtendedSelection);
}
- m_model->setSorting(QDir::Type);
- fileListView->setRootIndex(m_model->index(d));
- m_model->sort(0);
- lookInComboBox->setEditText(QDir::cleanPath(d));
+ lookInComboBox->setEditText(QDir::cleanPath(path));
}
void QmmpFileDialogImpl::on_listToolButton_toggled(bool yes)
{
if (yes)
{
- iconToolButton->setChecked(false);
- fileListView->setViewMode(QListView::ListMode);
- fileListView->setGridSize(QSize(-1, -1));
+ stackedWidget->setCurrentIndex(0);
}
}
-void QmmpFileDialogImpl::on_iconToolButton_toggled(bool yes)
+void QmmpFileDialogImpl::on_detailsToolButton_toggled(bool yes)
{
if (yes)
{
- listToolButton->setChecked(false);
- fileListView->setViewMode(QListView::IconMode);
- fileListView->setGridSize(QSize(82, 82));
+ stackedWidget->setCurrentIndex(1);
}
}
+void QmmpFileDialogImpl::on_fileTypeComboBox_activated(int index)
+{
+ m_model->setNameFilters(qt_clean_filter_list(fileTypeComboBox->itemText(index)));
+}
+
+void QmmpFileDialogImpl::hideEvent (QHideEvent *event)
+{
+ QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ settings.setValue("QMMPFileDialog/close_on_add", closeOnAddToolButton->isChecked());
+ settings.setValue("QMMPFileDialog/geometry", saveGeometry());
+ settings.setValue("QMMPFileDialog/history", m_history);
+ QWidget::hideEvent(event);
+}
+
+void QmmpFileDialogImpl::updateSelection ()
+{
+ QModelIndexList ml;
+ if (stackedWidget->currentIndex() == 0)
+ ml = fileListView->selectionModel()->selectedIndexes();
+ else
+ ml = treeView->selectionModel()->selectedIndexes();
+ QStringList l;
+ QStringList files;
+ foreach(QModelIndex i,ml)
+ {
+ if (!l.contains(m_model->filePath(i).section("/", -1)))
+ {
+ files << m_model->filePath(i);
+ l << m_model->filePath(i).section("/", -1);
+ }
+ }
+
+ if (!l.isEmpty())
+ {
+ QString str;
+ if (l.size() == 1)
+ str = l.at(0);
+ else
+ {
+ str = l.join ("\" \"");
+ str.append("\"");
+ str.prepend("\"");
+ }
+ if (!fileNameLineEdit->hasFocus())
+ fileNameLineEdit->setText(str);
+ if (m_mode == FileDialog::AddFiles || m_mode == FileDialog::AddFile/* || FileDialog::SaveFile*/)
+ {
+ addPushButton->setEnabled(TRUE);
+ foreach(str, files)
+ {
+ if (QFileInfo(str).isDir())
+ {
+ addPushButton->setEnabled(FALSE);
+ break;
+ }
+ }
+ }
+ else
+ addPushButton->setEnabled(TRUE);
+ }
+ else
+ {
+ fileNameLineEdit->clear();
+ addPushButton->setEnabled(FALSE);
+ }
+}
+
+void QmmpFileDialogImpl::addToHistory(const QString &path)
+{
+ QString path_copy = path;
+ if (path_copy.endsWith('/'))
+ path_copy.remove(path.size()-1, 1);
+ QString dir_path = path.left(path_copy.lastIndexOf ('/'));
+
+ m_history.removeAll(dir_path);
+ m_history.prepend(dir_path);
+
+ while ( m_history.size() > HISTORY_SIZE)
+ m_history.removeLast();
+
+ lookInComboBox->clear();
+ lookInComboBox->addItems(m_history);
+}
+
+void QmmpFileDialogImpl::addFiles(const QStringList &list)
+{
+ if (list.isEmpty())
+ return;
+ if (!isModal())
+ {
+ emit filesAdded(list);
+ if (closeOnAddToolButton->isChecked())
+ reject();
+ }
+ else if (m_mode == FileDialog::SaveFile)
+ {
+ //TODO check file extension
+ QFileInfo info(m_model->filePath(fileListView->rootIndex()) + "/" + fileNameLineEdit->text());
+
+ if (info.exists())
+ {
+ if (QMessageBox::question (this, windowTitle (), fileNameLineEdit->text() + " " +
+ tr("already exists.") + "\n" +
+ tr("Do you want to replace it?"),
+ QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok)
+ accept();
+ else
+ return;
+
+ }
+ accept();
+ }
+ else
+ accept();
+}
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
index 12cd63e21..647fe009b 100644
--- a/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
+++ b/src/plugins/FileDialogs/QmmpFileDialog/qmmpfiledialogimpl.h
@@ -1,33 +1,118 @@
+/**************************************************************************
+* Copyright (C) 2008 by Ilya Kotov *
+* forkotov02@hotmail.ru *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+***************************************************************************/
+
#ifndef QMMPFILEDIALOGIMPL_H
#define QMMPFILEDIALOGIMPL_H
#include "ui_qmmpfiledialog.h"
#include <QDialog>
+#include <QCompleter>
+#include <QAbstractItemView>
+#include <QDirModel>
#include <qmmpui/filedialog.h>
-class QDirModel;
+//class QDirModel;
class QmmpFileDialogImpl : public QDialog , private Ui::QmmpFileDialog
{
Q_OBJECT
public:
- QmmpFileDialogImpl( QWidget * parent = 0, Qt::WindowFlags f = 0 );
+ QmmpFileDialogImpl(QWidget *parent = 0, Qt::WindowFlags f = 0);
+
~QmmpFileDialogImpl();
- void setModeAndMask(const QString&,FileDialog::Mode m,const QStringList& mask);
+
+ void setModeAndMask(const QString&,FileDialog::Mode m, const QStringList& mask);
+ QStringList selectedFiles ();
+
protected slots:
void on_lookInComboBox_activated(const QString&);
void on_upToolButton_clicked();
void on_fileListView_doubleClicked(const QModelIndex&);
+ void on_treeView_doubleClicked(const QModelIndex&);
void on_fileNameLineEdit_returnPressed();
+ void on_fileNameLineEdit_textChanged (const QString &text);
void on_addPushButton_clicked();
void on_listToolButton_toggled(bool);
- void on_iconToolButton_toggled(bool);
+ void on_detailsToolButton_toggled(bool);
+ void on_fileTypeComboBox_activated(int);
+ void on_fileListView_selectionChanged (const QItemSelection&, const QItemSelection&);
signals:
void filesAdded(const QStringList&);
+
protected:
QDirModel* m_model;
+ virtual void hideEvent (QHideEvent *event);
+
+private slots:
+ void updateSelection ();
+
+private:
+ int m_mode;
+ void addToHistory(const QString &path);
+ void addFiles(const QStringList &list);
+ QStringList m_history;
+
+};
+class PathCompleter : public QCompleter
+{
+ Q_OBJECT
+public:
+ PathCompleter(QAbstractItemModel *model, QAbstractItemView *itemView, QObject *parent = 0) : QCompleter(model, parent)
+ {
+ m_itemView = itemView;
+ };
+
+
+ QString pathFromIndex(const QModelIndex &index) const
+ {
+ const QDirModel *dirModel = static_cast<const QDirModel *>(model());
+ QString currentLocation = dirModel->filePath(m_itemView->rootIndex());
+ QString path = dirModel->filePath(index);
+ if (path.startsWith(currentLocation))
+ {
+ path = path.mid(currentLocation.length() + 1);
+ }
+ return path;
+ }
+
+
+ QStringList splitPath(const QString &path) const
+ {
+ if (path.isEmpty())
+ return QStringList(completionPrefix());
+ QStringList parts;
+ if (!path.startsWith(QDir::separator()))
+ {
+ const QDirModel *dirModel = static_cast<const QDirModel *>(model());
+ QString currentLocation = QDir::toNativeSeparators(dirModel->filePath(m_itemView->rootIndex()));
+ parts = QCompleter::splitPath(currentLocation);
+ }
+ parts << QCompleter::splitPath(path);
+ return parts;
+ }
+private:
+ QAbstractItemView *m_itemView;
};
+
+
#endif //QMMPFILEDIALOGIMPL_H
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_cs.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_cs.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_cs.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_de.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_de.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_de.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_pt_BR.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_pt_BR.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_pt_BR.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_ru.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_ru.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_ru.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_tr.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_tr.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_tr.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_uk_UA.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_uk_UA.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_uk_UA.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_CN.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_CN.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_CN.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_TW.ts b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_TW.ts
new file mode 100644
index 000000000..b9b3600db
--- /dev/null
+++ b/src/plugins/FileDialogs/QmmpFileDialog/translations/qmmp_file_dialog_plugin_zh_TW.ts
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QmmpFileDialog</name>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="13"/>
+ <source>Add Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="37"/>
+ <source>Up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="97"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="50"/>
+ <source>List view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="69"/>
+ <source>Detailed view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="94"/>
+ <source>Close dialog on add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="168"/>
+ <source>File name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="184"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="191"/>
+ <source>Files of type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.ui" line="217"/>
+ <source>Close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogFactory</name>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="107"/>
+ <source>Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="106"/>
+ <source>About Qmmp File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="110"/>
+ <source>Writen by:
+Vladimir Kuznetsov &lt;vovanec@gmail.com&gt;
+Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialog.cpp" line="111"/>
+ <source>Some code is copied from the Qt library</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmmpFileDialogImpl</name>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="215"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="228"/>
+ <source>Save</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="240"/>
+ <source>Directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="384"/>
+ <source>already exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpfiledialogimpl.cpp" line="385"/>
+ <source>Do you want to replace it?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/filedialog.cpp b/src/qmmpui/filedialog.cpp
index f9202d886..9e1bd8602 100644
--- a/src/qmmpui/filedialog.cpp
+++ b/src/qmmpui/filedialog.cpp
@@ -1,126 +1,156 @@
+/**************************************************************************
+* Copyright (C) 2008 by Ilya Kotov *
+* forkotov02@hotmail.ru *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+***************************************************************************/
+
#include "filedialog.h"
#include <QSettings>
-
-
+#include <QTranslator>
#include <QApplication>
#include <QPluginLoader>
+#include <QMetaObject>
+#include "qtfiledialog.h"
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-//#include "playlistmodel.h"
FileDialog* FileDialog::_instance = 0;
QMap<QString,FileDialogFactory*> FileDialog::factories = QMap<QString,FileDialogFactory*>();
-FileDialog::FileDialog() : QObject(), m_initialized(false)
+FileDialog::FileDialog() : QObject(), m_initialized(FALSE)
{
+ m_lastDir = 0;
}
-
bool FileDialog::isModal()
{
return instance()->modal();
}
-
-void FileDialog::init(QObject* receiver, const char* member)
+void FileDialog::setEnabled(FileDialogFactory *factory)
{
- if (!m_initialized && !instance()->modal())
+ if (factories.isEmpty())
{
- if (receiver && member)
- {
- connect(this,SIGNAL(filesAdded(const QStringList&)), receiver, member);
- m_initialized = true;
- }
+ registerBuiltinFactories();
+ registerExternalFactories();
}
+ QSettings settings (QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat);
+ settings.setValue("FileDialog", factories.key(factory));
}
+bool FileDialog::isEnabled(FileDialogFactory *factory)
+{
+ if (factories.isEmpty())
+ {
+ registerBuiltinFactories();
+ registerExternalFactories();
+ }
+ QSettings settings (QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat);
+ QString f_dialogName = settings.value("FileDialog", "qt_dialog").toString();
+ return factories.value(f_dialogName) == factory;
+}
-
-QString FileDialog::getExistingDirectory( QWidget * parent, const QString & caption, const QString & dir,bool def)
+void FileDialog::init(QObject* receiver, const char* member, QString *dir)
{
- QString s;
- if (def)
- s = defaultInstance()->existingDirectory(parent,caption,dir);
- else
- s = instance()->existingDirectory(parent,caption,dir);
- delete _instance;
- _instance = 0;
- return s;
+ m_lastDir = dir;
+ if (m_initialized)
+ disconnect();
+ if (receiver && member)
+ {
+ connect(this,SIGNAL(filesAdded(const QStringList&)), receiver, member);
+ connect(this,SIGNAL(filesAdded(const QStringList&)), SLOT(updateLastDir(const QStringList&)));
+ m_initialized = true;
+ }
}
-QString FileDialog::getOpenFileName(QWidget * parent,
- const QString & caption,
- const QString & dir,
- const QString & filter,
- QString * selectedFilter,bool def)
+QString FileDialog::getExistingDirectory(QWidget *parent,
+ const QString &caption,
+ const QString &dir)
{
- 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;
+ return instance()->existingDirectory(parent,caption,dir);
}
-QStringList FileDialog::getOpenFileNames(QWidget * parent, const QString & caption , const QString & dir ,
- const QString & filter, QString * selectedFilter,bool def)
+QString FileDialog::getOpenFileName(QWidget *parent,
+ const QString &caption,
+ const QString &dir,
+ const QString &filter,
+ QString *selectedFilter)
{
- 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;
+ return instance()->openFileName(parent,caption,dir,filter,selectedFilter);
}
-QString FileDialog::getSaveFileName ( QWidget * parent, const QString & caption,
- const QString & dir, const QString & filter, QString * selectedFilter,bool def)
+QStringList FileDialog::getOpenFileNames(QWidget *parent, const QString &caption,
+ const QString &dir,const QString &filter,
+ QString *selectedFilter)
{
- 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;
+ return instance()->openFileNames(parent,caption,dir,filter,selectedFilter);
}
+QString FileDialog::getSaveFileName (QWidget *parent, const QString &caption,
+ const QString& dir, const QString &filter,
+ QString *selectedFilter)
+{
+ return instance()->saveFileName(parent,caption,dir,filter,selectedFilter);
+}
-QString FileDialog::existingDirectory(QWidget *, const QString &, const QString &)
+//virtual
+QString FileDialog::existingDirectory(QWidget *parent, const QString &caption, const QString &dir)
{
- return QString();
+ FileDialog *instance = FileDialog::defaultInstance();
+ QString dir_path = instance->existingDirectory(parent, caption, dir);
+ delete instance;
+ return dir_path;
}
-QString FileDialog::openFileName(QWidget *, const QString &, const QString &, const QString &, QString *)
+QString FileDialog::openFileName(QWidget *parent, const QString &caption, const QString &dir,
+ const QString &filter, QString *selectedFilter)
{
- return QString();
+ FileDialog *instance = FileDialog::defaultInstance();
+ QString file_path = instance->openFileName(parent, caption, dir, filter, selectedFilter);
+ delete instance;
+ return file_path;
}
-QStringList FileDialog::openFileNames(QWidget *, const QString &, const QString &, const QString &, QString *)
+QStringList FileDialog::openFileNames(QWidget *parent, const QString &caption, const QString &dir,
+ const QString &filter, QString *selectedFilter)
{
- return QStringList();
+ FileDialog *instance = FileDialog::defaultInstance();
+ QStringList list = instance->openFileNames(parent, caption, dir, filter, selectedFilter);
+ delete instance;
+ return list;
}
-QString FileDialog::saveFileName(QWidget *, const QString &, const QString &, const QString &, QString *)
+QString FileDialog::saveFileName(QWidget *parent, const QString &caption, const QString &dir,
+ const QString &filter, QString *selectedFilter)
{
- return QString();
+ FileDialog *instance = FileDialog::defaultInstance();
+ QString file_path = instance->saveFileName(parent, caption, dir, filter, selectedFilter);
+ delete instance;
+ return file_path;
}
void FileDialog::registerBuiltinFactories()
{
- registerFactory(new QtFileDialogFactory());
- //registerFactory(new QmmpFileDialogFactory());
+ FileDialogFactory *fct = new QtFileDialogFactory();
+ qApp->installTranslator(fct->createTranslator(qApp));
+ registerFactory(fct, "qt_dialog");
}
void FileDialog::registerExternalFactories()
@@ -143,18 +173,20 @@ void FileDialog::registerExternalFactories()
fct = qobject_cast<FileDialogFactory *>(plugin);
if (fct)
- if (!registerFactory(fct))
+ {
+ if (!registerFactory(fct, fileName))
qDebug("Warning: Plugin with name %s is already registered...",
- qPrintable(fct->name()));
+ qPrintable(fileName));
+ qApp->installTranslator(fct->createTranslator(qApp));
+ }
}
}
-bool FileDialog::registerFactory(FileDialogFactory *f)
+bool FileDialog::registerFactory(FileDialogFactory *factory, const QString &name)
{
- QString name = f->name();
if (!factories.contains(name))
{
- factories.insert(name,f);
+ factories.insert(name, factory);
return true;
}
return false;
@@ -164,28 +196,27 @@ 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();
+ QSettings settings (QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat);
+ QString f_dialogName = settings.value("FileDialog", "qt_dialog").toString();
QStringList names = factories.keys();
+ if(!names.contains(f_dialogName))
+ f_dialogName = "qt_dialog";
+
if (m_current_factory != f_dialogName || !_instance)
{
if (_instance)
+ {
delete _instance;
+ _instance = 0;
+ }
foreach(QString name,names)
{
@@ -198,100 +229,70 @@ FileDialog* FileDialog::instance()
}
if (!_instance)
- _instance = factories[QtFileDialogFactory::QtFileDialogFactoryName]->create();
+ _instance = factories["qt_dialog"]->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;
+ return factories["qt_dialog"]->create();
}
-QStringList FileDialog::registeredFactories()
+QList <FileDialogFactory*> FileDialog::registeredFactories()
{
if (factories.isEmpty())
{
registerBuiltinFactories();
registerExternalFactories();
}
- return factories.keys();
+ return factories.values();
}
+void FileDialog::popup(QWidget *parent,
+ Mode m,
+ QString *dir,
+ QObject *receiver,
+ const char *member,
+ const QString &caption,
+ const QString &filters)
-void FileDialog::popup(const QString& d,Mode m,const QStringList& f, QObject* receiver, const char* member)
{
+ if (!dir)
+ qFatal("FileDialog: empty last dir pointer");
FileDialog* inst = instance();
- inst->init(receiver, member);
- 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);
+ inst->setParent(parent);
+ inst->init(receiver, member, dir);
+ if (!inst->modal())
+ inst->raise(*dir, m, caption, filters.split(";;"));
+ else
+ {
+ QStringList files;
+ if (m == AddFiles || m == AddFile || m == AddDirsFiles)
+ files = getOpenFileNames(parent, caption, *dir, filters);
+ else if (m == AddDirs || m == AddDir)
+ {
+ QString path = getExistingDirectory(parent, caption, *dir);
+ if (!path.isEmpty())
+ files << path;
+ }
+ QMetaObject::invokeMethod(inst, "filesAdded", Q_ARG(QStringList, files));
+ }
}
-
-
-
-
-FileDialog* QtFileDialogFactory::create()
+void FileDialog::updateLastDir(const QStringList& list)
{
- return new QtFileDialog();
-}
-
-QString QtFileDialogFactory::name()
-{
- return QtFileDialogFactoryName;
+ if (!list.isEmpty() && m_lastDir)
+ {
+ QString path = list[0];
+ if (path.endsWith('/'))
+ path.remove(path.size()-1, 1);
+ *m_lastDir = path.left(path.lastIndexOf ('/'));
+ }
}
-
-QString QtFileDialogFactory::QtFileDialogFactoryName = "Qt File Dialog";
-
-
diff --git a/src/qmmpui/filedialog.h b/src/qmmpui/filedialog.h
index cbf9af07b..259021e14 100644
--- a/src/qmmpui/filedialog.h
+++ b/src/qmmpui/filedialog.h
@@ -1,3 +1,23 @@
+/**************************************************************************
+* Copyright (C) 2008 by Ilya Kotov *
+* forkotov02@hotmail.ru *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+***************************************************************************/
+
#ifndef FILEDIALOG_H
#define FILEDIALOG_H
@@ -7,119 +27,121 @@
#include <QFileDialog>
#include <QMap>
-#define interface struct
-
-interface FileDialogFactory;
+#include "filedialogfactory.h"
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////// FILE DIALOG //////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
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();
-
+ enum Mode{AddFile = 0, AddDir, AddFiles, AddDirs, AddDirsFiles, SaveFile};
+
+ static QString getExistingDirectory(QWidget *parent = 0,
+ const QString &caption = QString(),
+ const QString &dir = QString());
+
+ static QString getOpenFileName(QWidget *parent = 0,
+ const QString &caption = QString(),
+ const QString &dir = QString(),
+ const QString &filter = QString(),
+ QString *selectedFilter = 0);
+
+ static QStringList getOpenFileNames(QWidget *parent = 0,
+ const QString &caption = QString(),
+ const QString &dir = QString(),
+ const QString &filter = QString(),
+ QString *selectedFilter = 0);
+
+ static QString getSaveFileName (QWidget *parent = 0,
+ const QString &caption = QString(),
+ const QString &dir = QString(),
+ const QString &filter = QString(),
+ QString *selectedFilter = 0);
+
+ static void popup(QWidget *parent = 0,
+ Mode = AddFiles,
+ QString *dir = 0,
+ QObject *receiver = 0,
+ const char *member = 0,
+ const QString &caption = QString(),
+ const QString &filters = QString());
+
+ static QList <FileDialogFactory*> registeredFactories();
static bool isModal();
- static void popup(const QString& = QString(),Mode = AddFiles,const QStringList& nameFilters = QStringList(),
- QObject* receiver = 0, const char* member = 0);
+ static void setEnabled(FileDialogFactory *factory);
+ static bool isEnabled(FileDialogFactory *factory);
+
+
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 QString existingDirectory(QWidget *parent,
+ const QString &caption,
+ 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);
+
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())
+ };
+
+ void init(QObject* receiver, const char* member, QString *dir);
+
+ virtual void raise(const QString &dir = QString(),
+ Mode mode = AddFiles,
+ const QString &caption = QString(),
+ const QStringList &mask = QStringList())
{
- ;
+ Q_UNUSED(dir);
+ Q_UNUSED(mode);
+ Q_UNUSED(caption);
+ Q_UNUSED(mask);
}
- static bool registerFactory(FileDialogFactory*);
-public:
- static void registerBuiltinFactories();
- static void registerExternalFactories();
-protected:
static FileDialog* instance();
static FileDialog* defaultInstance();
+ static bool registerFactory(FileDialogFactory *factory, const QString &name);
+ static void registerBuiltinFactories();
+ static void registerExternalFactories();
+
+private slots:
+ void updateLastDir(const QStringList&);
+
private:
static QMap <QString,FileDialogFactory*> factories;
static FileDialog* _instance;
static QString m_current_factory;
bool m_initialized;
+ QString *m_lastDir;
};
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-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/filedialogfactory.h b/src/qmmpui/filedialogfactory.h
new file mode 100644
index 000000000..68e866e0e
--- /dev/null
+++ b/src/qmmpui/filedialogfactory.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef FILEDIALOGFACTORY_H
+#define FILEDIALOGFACTORY_H
+
+class QObject;
+class QTranslator;
+class FileDialog;
+
+struct FileDialogProperties
+{
+ QString name;
+ bool hasAbout;
+};
+
+
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+
+class FileDialogFactory
+{
+public:
+ virtual ~FileDialogFactory() {};
+ virtual FileDialog* create() = 0;
+ virtual const FileDialogProperties properties() const = 0;
+ virtual void showAbout(QWidget *parent) = 0;
+ virtual QTranslator *createTranslator(QObject *parent) = 0;
+};
+
+Q_DECLARE_INTERFACE(FileDialogFactory, "FileDialogFactory/1.0");
+
+#endif
diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro
index dde39a474..a71266e7f 100644
--- a/src/qmmpui/qmmpui.pro
+++ b/src/qmmpui/qmmpui.pro
@@ -34,15 +34,28 @@ HEADERS += general.h \
playlistparser.h \
commandlinemanager.h \
commandlineoption.h \
- filedialog.h
+ filedialog.h \
+ filedialogfactory.h \
+ qtfiledialog.h
SOURCES += general.cpp \
generalhandler.cpp \
songinfo.cpp \
control.cpp \
playlistparser.cpp \
commandlinemanager.cpp \
- filedialog.cpp
+ filedialog.cpp \
+ qtfiledialog.cpp
DESTDIR = .
+RESOURCES += translations/libqmmpui_locales.qrc
+
+TRANSLATIONS = translations/libqmmpui_ru.ts \
+ translations/libqmmpui_tr.ts \
+ translations/libqmmpui_zh_CN.ts \
+ translations/libqmmpui_cs.ts \
+ translations/libqmmpui_pt_BR.ts \
+ translations/libqmmpui_uk_UA.ts \
+ translations/libqmmpui_zh_TW.ts \
+ translations/libqmmpui_de.ts
diff --git a/src/qmmpui/qtfiledialog.cpp b/src/qmmpui/qtfiledialog.cpp
new file mode 100644
index 000000000..107b75845
--- /dev/null
+++ b/src/qmmpui/qtfiledialog.cpp
@@ -0,0 +1,91 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QTranslator>
+#include <QLocale>
+
+#include "qtfiledialog.h"
+
+
+FileDialog* QtFileDialogFactory::create()
+{
+ qDebug("QtFileDialogFactory::create()");
+ return new QtFileDialog();
+}
+
+const FileDialogProperties QtFileDialogFactory::properties() const
+{
+ FileDialogProperties properties;
+ properties.name = tr("Qt File Dialog");
+ properties.hasAbout = FALSE;
+ return properties;
+}
+
+void QtFileDialogFactory::showAbout(QWidget*){};
+
+QTranslator *QtFileDialogFactory::createTranslator(QObject *parent)
+{
+ QTranslator *translator = new QTranslator(parent);
+ QString locale = QLocale::system().name();
+ translator->load(QString(":/libqmmpui_") + locale);
+ return translator;
+}
+
+QtFileDialog::~QtFileDialog()
+{
+ qDebug("QtFileDialog::~QtFileDialog()");
+}
+
+QString QtFileDialog::existingDirectory(QWidget *parent,
+ const QString &caption,
+ const QString &dir)
+{
+ return QFileDialog::getExistingDirectory(parent,caption,dir, QFileDialog::ShowDirsOnly);
+}
+
+QString QtFileDialog::openFileName(QWidget *parent,
+ const QString &caption,
+ const QString &dir,const QString &filter,
+ QString *selectedFilter)
+{
+ Q_UNUSED(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);
+}
+
+
+
diff --git a/src/qmmpui/qtfiledialog.h b/src/qmmpui/qtfiledialog.h
new file mode 100644
index 000000000..920e16f6a
--- /dev/null
+++ b/src/qmmpui/qtfiledialog.h
@@ -0,0 +1,74 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef QTFILEDIALOG_H
+#define QTFILEDIALOG_H
+
+#include <QObject>
+
+#include "filedialog.h"
+
+class QTranslator;
+
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+
+class QtFileDialogFactory : public QObject, public FileDialogFactory
+{
+ Q_OBJECT
+ Q_INTERFACES(FileDialogFactory);
+public:
+ virtual FileDialog* create();
+ virtual const FileDialogProperties properties() const;
+ virtual void showAbout(QWidget*);
+ virtual QTranslator *createTranslator(QObject*);
+ virtual ~QtFileDialogFactory()
+ {
+ ;
+ }
+};
+
+class QtFileDialog : public FileDialog
+{
+public:
+ virtual ~QtFileDialog();
+ QString existingDirectory(QWidget *parent ,
+ const QString & ,
+ const QString &dir);
+
+ QString openFileName(QWidget *parent,
+ const QString &caption,
+ const QString &dir,
+ const QString &filter,
+ QString *selectedFilter);
+
+ QStringList openFileNames(QWidget *parent,
+ const QString &caption,
+ const QString &dir,
+ const QString &filter, QString *selectedFilter);
+
+ QString saveFileName (QWidget *parent,
+ const QString &caption,
+ const QString & dir,
+ const QString &filter,
+ QString *selectedFilter);
+};
+
+#endif
diff --git a/src/qmmpui/translations/libqmmpui_cs.ts b/src/qmmpui/translations/libqmmpui_cs.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_cs.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_de.ts b/src/qmmpui/translations/libqmmpui_de.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_de.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_locales.qrc b/src/qmmpui/translations/libqmmpui_locales.qrc
new file mode 100644
index 000000000..189f2c8b5
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_locales.qrc
@@ -0,0 +1,13 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>libqmmpui_ru.qm</file>
+ <file>libqmmpui_tr.qm</file>
+ <file>libqmmpui_zh_CN.qm</file>
+ <file>libqmmpui_uk_UA.qm</file>
+ <file>libqmmpui_zh_TW.qm</file>
+ <file>libqmmpui_cs.qm</file>
+ <file>libqmmpui_pt_BR.qm</file>
+ <file>libqmmpui_de.qm</file>
+ </qresource>
+</RCC>
diff --git a/src/qmmpui/translations/libqmmpui_pt_BR.ts b/src/qmmpui/translations/libqmmpui_pt_BR.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_pt_BR.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_ru.ts b/src/qmmpui/translations/libqmmpui_ru.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_ru.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_tr.ts b/src/qmmpui/translations/libqmmpui_tr.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_tr.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_uk_UA.ts b/src/qmmpui/translations/libqmmpui_uk_UA.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_uk_UA.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_zh_CN.ts b/src/qmmpui/translations/libqmmpui_zh_CN.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_zh_CN.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/qmmpui/translations/libqmmpui_zh_TW.ts b/src/qmmpui/translations/libqmmpui_zh_TW.ts
new file mode 100644
index 000000000..638f7bb1a
--- /dev/null
+++ b/src/qmmpui/translations/libqmmpui_zh_TW.ts
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1">
+<context>
+ <name>QtFileDialogFactory</name>
+ <message>
+ <location filename="../qtfiledialog.cpp" line="36"/>
+ <source>Qt File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp
index eac2272a6..185b4bfc0 100644
--- a/src/ui/configdialog.cpp
+++ b/src/ui/configdialog.cpp
@@ -66,9 +66,10 @@ ConfigDialog::ConfigDialog ( QWidget *parent )
connect (ui.generalPluginTable, SIGNAL(cellPressed(int, int)), SLOT(updateButtons()));
connect (ui.effectPluginTable, SIGNAL(cellPressed(int, int)), SLOT(updateButtons()));
connect (ui.pluginsTab, SIGNAL(currentChanged(int)), SLOT(updateButtons()));
+ connect (ui.fileDialogComboBox, SIGNAL (currentIndexChanged (int)), SLOT(updateDialogButton(int)));
+ connect (ui.fdInformationButton, SIGNAL (clicked()), SLOT(showFileDialogInfo()));
ui.listWidget->setIconSize (QSize (69,29));
m_skin = Skin::getPointer();
- ui.fileDialogComboBox->insertItems(0,FileDialog::registeredFactories());
readSettings();
m_reader = new SkinReader(this);
m_reader->generateThumbs();
@@ -101,16 +102,6 @@ void ConfigDialog::readSettings()
ui.per20CheckBox->setChecked(settings.value ("PlayList/convert_twenty", TRUE).toBool());
ui.fullPathCheckBox->setChecked(settings.value ("PlayList/full_stream_path", FALSE).toBool());
-
- QString f_dialogName =
- settings.value("FileDialog",QtFileDialogFactory::QtFileDialogFactoryName).toString();
-
- int ind = FileDialog::registeredFactories().indexOf(f_dialogName);
- if (ind != -1)
- ui.fileDialogComboBox->setCurrentIndex(ind);
- else
- ui.fileDialogComboBox->setCurrentIndex(0);
-
//proxy settings
ui.enableProxyCheckBox->setChecked(
settings.value ("Proxy/use_proxy", FALSE).toBool());
@@ -177,7 +168,7 @@ void ConfigDialog::loadSkins()
m_skinList << QFileInfo(path);
}
connect (ui.listWidget, SIGNAL (itemClicked (QListWidgetItem *)),
- this, SLOT (changeSkin()));
+ this, SLOT (changeSkin()));
}
void ConfigDialog::findSkins(const QString &path)
@@ -355,9 +346,20 @@ void ConfigDialog::loadPluginsInfo()
ui.generalPluginTable->item(i,2)->setToolTip(files.at (i));
}
- ui.generalPluginTable->resizeColumnToContents ( 0 );
- ui.generalPluginTable->resizeColumnToContents ( 1 );
+ ui.generalPluginTable->resizeColumnToContents (0);
+ ui.generalPluginTable->resizeColumnToContents (1);
ui.generalPluginTable->resizeRowsToContents ();
+
+ /*
+ load file dialog information
+ */
+
+ foreach(FileDialogFactory *factory, FileDialog::registeredFactories())
+ {
+ ui.fileDialogComboBox->addItem(factory->properties().name);
+ if (FileDialog::isEnabled(factory))
+ ui.fileDialogComboBox->setCurrentIndex(ui.fileDialogComboBox->count()-1);
+ }
}
@@ -463,7 +465,7 @@ void ConfigDialog::showPluginInfo()
int row = ui.inputPluginTable->currentRow ();
if (m_inputPluginItems.isEmpty() || row < 0)
return;
- m_inputPluginItems.at(row)->factory()->showAbout (this);
+ m_inputPluginItems.at(row)->factory()->showAbout (this);
break;
}
case 1:
@@ -536,7 +538,7 @@ void ConfigDialog::saveSettings()
settings.setValue ("PlayList/convert_underscore", ui.underscoresCheckBox->isChecked());
settings.setValue ("PlayList/convert_twenty", ui.per20CheckBox->isChecked());
settings.setValue ("PlayList/full_stream_path", ui.fullPathCheckBox->isChecked());
- settings.setValue ("FileDialog", ui.fileDialogComboBox->currentText());
+ FileDialog::setEnabled(FileDialog::registeredFactories().at(ui.fileDialogComboBox->currentIndex()));
settings.setValue ("Proxy/use_proxy", ui.enableProxyCheckBox->isChecked());
settings.setValue ("Proxy/authentication", ui.authProxyCheckBox->isChecked());
settings.setValue ("Proxy/host",ui.hostLineEdit->text());
@@ -609,3 +611,14 @@ void ConfigDialog::updateButtons()
ui.preferencesButton->setEnabled(preferences);
ui.informationButton->setEnabled(information);
}
+
+void ConfigDialog::updateDialogButton(int index)
+{
+ ui.fdInformationButton->setEnabled(FileDialog::registeredFactories()[index]->properties().hasAbout);
+}
+
+void ConfigDialog::showFileDialogInfo()
+{
+ int index = ui.fileDialogComboBox->currentIndex ();
+ FileDialog::registeredFactories()[index]->showAbout(this);
+}
diff --git a/src/ui/configdialog.h b/src/ui/configdialog.h
index c30fe9648..9522be645 100644
--- a/src/ui/configdialog.h
+++ b/src/ui/configdialog.h
@@ -57,6 +57,8 @@ private slots:
void addTitleString(QAction *);
void saveSettings();
void updateButtons();
+ void updateDialogButton(int);
+ void showFileDialogInfo();
private:
void readSettings();
diff --git a/src/ui/eqwidget.cpp b/src/ui/eqwidget.cpp
index 459d99974..07f4ae22b 100644
--- a/src/ui/eqwidget.cpp
+++ b/src/ui/eqwidget.cpp
@@ -117,7 +117,7 @@ void EqWidget::changeEvent ( QEvent * event )
void EqWidget::closeEvent ( QCloseEvent* e)
{
- if(e->spontaneous ())
+ if (e->spontaneous ())
emit closed();
writeSettings();
}
@@ -389,9 +389,9 @@ void EqWidget::importWinampEQF()
char header[31];
char name[257];
char bands[11];
- QString path = FileDialog::getOpenFileName(this, tr("Import Preset"),
- "/home",
- QString("Winamp EQF (*.q1)"),NULL,true);
+ QString path = FileDialog::getOpenFileName(this, tr("Import Preset"),
+ "/home",
+ QString("Winamp EQF (*.q1)"));
QFile file(path);
file.open(QIODevice::ReadOnly);
diff --git a/src/ui/forms/configdialog.ui b/src/ui/forms/configdialog.ui
index c62260984..bec9f87d0 100644
--- a/src/ui/forms/configdialog.ui
+++ b/src/ui/forms/configdialog.ui
@@ -469,7 +469,7 @@
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex" >
- <number>4</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="Input" >
<attribute name="title" >
@@ -641,9 +641,9 @@
<widget class="QComboBox" name="fileDialogComboBox" />
</item>
<item>
- <widget class="QPushButton" name="fdSettingsButton" >
+ <widget class="QPushButton" name="fdInformationButton" >
<property name="text" >
- <string>Settings</string>
+ <string>Information</string>
</property>
</widget>
</item>
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp
index 14f56ec47..6641ccb4b 100644
--- a/src/ui/mainwindow.cpp
+++ b/src/ui/mainwindow.cpp
@@ -142,8 +142,8 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
updateEQ();
updateSkin();
- FileDialog::registerBuiltinFactories();
- FileDialog::registerExternalFactories();
+ //FileDialog::registerBuiltinFactories();
+ //FileDialog::registerExternalFactories();
m_generalHandler = new GeneralHandler(this);
connect(m_generalHandler, SIGNAL(playCalled()), SLOT(play()));
@@ -435,72 +435,16 @@ void MainWindow::closeEvent ( QCloseEvent *)
void MainWindow::addDir()
{
- /*
- QString s = QFileDialog::getExistingDirectory(
- this,
- tr("Choose a directory"),
- m_lastDir,
- QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly);
-
- if (s.isEmpty())
- return;
- m_playListModel->addDirectory(s);
- m_lastDir = s+"../";
- */
- if (FileDialog::isModal())
- {
- qWarning("void MainWindow::addDir()");
- QString s = FileDialog::getExistingDirectory(this,tr("Choose a directory"),m_lastDir);
-
- if (s.isEmpty())
- return;
- m_playListModel->addDirectory(s);
- m_lastDir = s+"../";
- }
- else
- FileDialog::popup(m_lastDir,FileDialog::AddDirs,Decoder::nameFilters(),
- m_playListModel, SLOT(addFileList(const QStringList&)));
+ FileDialog::popup(this, FileDialog::AddDirs, &m_lastDir,
+ m_playListModel, SLOT(addFileList(const QStringList&)),
+ tr("Choose a directory"));
}
void MainWindow::addFile()
{
- /*
- QStringList files = QFileDialog::getOpenFileNames(
- this,
- tr("Select one or more files to open"),
- m_lastDir,
- Decoder::filter());
- if (files.isEmpty ())
- return;
-
- // foreach(QString s, files)
- // m_playListModel->load(new PlayListItem(s));
-
- m_playListModel->addFiles(files);
- m_lastDir = files.at(0);
- */
-
-
- if (FileDialog::isModal())
- {
- QStringList files = FileDialog::getOpenFileNames(
- this,
- tr("Select one or more files to open"),
- m_lastDir,
- Decoder::filter());
- if (files.isEmpty ())
- return;
- /*
- foreach(QString s, files)
- m_playListModel->load(new PlayListItem(s));
- */
- m_playListModel->addFiles(files);
- m_lastDir = files.at(0);
- }
- else
- FileDialog::popup(m_lastDir,FileDialog::AddFiles,Decoder::nameFilters(),
- m_playListModel, SLOT(addFileList(const QStringList&)));
-
+ FileDialog::popup(this, FileDialog::AddDirsFiles, &m_lastDir,
+ m_playListModel, SLOT(addFileList(const QStringList&)),
+ tr("Select one or more files to open"), Decoder::filter());
}
void MainWindow::clear()
@@ -703,34 +647,17 @@ void MainWindow::loadPlaylist()
l << fmt->getExtensions();
QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")";
- if (FileDialog::isModal())
+ //TODO use nonmodal dialog and multiplier playlists
+ QString f_name = FileDialog::getOpenFileName(this,tr("Open Playlist"),m_lastDir,mask);
+ if (!f_name.isEmpty())
{
- //qWarning("Modal");
- QString f_name = FileDialog::getOpenFileName(this,tr("Open Playlist"),m_lastDir,mask);
- if (!f_name.isEmpty())
- {
- m_playListModel->loadPlaylist(f_name);
- m_playlistName = QFileInfo(f_name).baseName();
- m_lastDir = QFileInfo(f_name).absoluteDir().path();
- }
- }
- else //FileDialog::popup(m_playListModel,m_lastDir,FileDialog::AddFiles,Decoder::nameFilters());
- // TODO: implement playlist loading with nonmodal dialogs
- // For now we'll use default dialog
- {
- //qWarning("Modal");
- QString f_name = FileDialog::getOpenFileName(this,tr("Open Playlist"),m_lastDir,mask,0,true);
- if (!f_name.isEmpty())
- {
- m_playListModel->loadPlaylist(f_name);
- m_playlistName = QFileInfo(f_name).baseName();
- m_lastDir = QFileInfo(f_name).absoluteDir().path();
- }
+ m_playListModel->loadPlaylist(f_name);
+ m_playlistName = QFileInfo(f_name).baseName();
+ m_lastDir = QFileInfo(f_name).absoluteDir().path();
}
}
else
{
- //qWarning("Non Modal");
qWarning("Error: There is no registered playlist parsers");
}
}
@@ -745,30 +672,14 @@ void MainWindow::savePlaylist()
l << fmt->getExtensions();
QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")";
- if (FileDialog::isModal())
- {
- QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" +
- m_playlistName + "." + l[0],mask);
+ QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" +
+ m_playlistName + "." + l[0],mask);
- if (!f_name.isEmpty())
- {
- m_playListModel->savePlaylist(f_name);
- m_playlistName = QFileInfo(f_name).baseName();
- m_lastDir = QFileInfo(f_name).absoluteDir().path();
- }
- }
- else // TODO: implement saving playlists with nonmodal dialogs
- // For now we'll use default dialog
+ if (!f_name.isEmpty())
{
- QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" +
- m_playlistName + "." + l[0],mask,0,true);
-
- if (!f_name.isEmpty())
- {
- m_playListModel->savePlaylist(f_name);
- m_playlistName = QFileInfo(f_name).baseName();
- m_lastDir = QFileInfo(f_name).absoluteDir().path();
- }
+ m_playListModel->savePlaylist(f_name);
+ m_playlistName = QFileInfo(f_name).baseName();
+ m_lastDir = QFileInfo(f_name).absoluteDir().path();
}
}
else