aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-07-09 18:54:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-07-09 18:54:22 +0000
commite85b77286f66edecdc3707065e39b31f2e220f5a (patch)
tree8d92254944d3c9391c61231bc114758f9ac23370 /src/qmmpui
parentc0a9e456b6a935b67f2d3357a9cef7170cfee418 (diff)
downloadqmmp-e85b77286f66edecdc3707065e39b31f2e220f5a.tar.gz
qmmp-e85b77286f66edecdc3707065e39b31f2e220f5a.tar.bz2
qmmp-e85b77286f66edecdc3707065e39b31f2e220f5a.zip
completed file dialog support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@443 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
-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
15 files changed, 588 insertions, 236 deletions
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>