diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-07-09 18:54:22 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-07-09 18:54:22 +0000 |
| commit | e85b77286f66edecdc3707065e39b31f2e220f5a (patch) | |
| tree | 8d92254944d3c9391c61231bc114758f9ac23370 /src/qmmpui | |
| parent | c0a9e456b6a935b67f2d3357a9cef7170cfee418 (diff) | |
| download | qmmp-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.cpp | 303 | ||||
| -rw-r--r-- | src/qmmpui/filedialog.h | 188 | ||||
| -rw-r--r-- | src/qmmpui/filedialogfactory.h | 50 | ||||
| -rw-r--r-- | src/qmmpui/qmmpui.pro | 17 | ||||
| -rw-r--r-- | src/qmmpui/qtfiledialog.cpp | 91 | ||||
| -rw-r--r-- | src/qmmpui/qtfiledialog.h | 74 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_cs.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_de.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_locales.qrc | 13 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_pt_BR.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_ru.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_tr.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_uk_UA.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_zh_CN.ts | 11 | ||||
| -rw-r--r-- | src/qmmpui/translations/libqmmpui_zh_TW.ts | 11 |
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> |
