diff options
Diffstat (limited to 'src/qmmpui/playlistparser.cpp')
| -rw-r--r-- | src/qmmpui/playlistparser.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/qmmpui/playlistparser.cpp b/src/qmmpui/playlistparser.cpp index aa14ec214..7f14901a5 100644 --- a/src/qmmpui/playlistparser.cpp +++ b/src/qmmpui/playlistparser.cpp @@ -18,9 +18,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include <QtGui> -#include <QObject> +#include <QPluginLoader> +#include <QRegExp> #include <QList> +#include <QDir> #include <QApplication> #include <qmmp/qmmp.h> #include "playlistformat.h" @@ -34,22 +35,28 @@ QList<PlayListFormat*> *PlayListParser::formats() return m_formats; } -PlayListFormat *PlayListParser::findByPath(const QString &filePath) +QStringList PlayListParser::nameFilters() { checkFormats(); - QString ext; - if(filePath.contains("://")) //is it url? + QStringList filters; + foreach(PlayListFormat* format, *m_formats) { - QString p = QUrl(filePath).encodedPath(); - ext = QFileInfo(p).suffix().toLower(); + filters << format->properties().filters; } - else - ext = QFileInfo(filePath).suffix().toLower(); + return filters; +} +PlayListFormat *PlayListParser::findByPath(const QString &filePath) +{ + checkFormats(); foreach(PlayListFormat* format, *m_formats) { - if (format->hasFormat(ext)) - return format; + foreach(QString filter, format->properties().filters) + { + QRegExp r(filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if(r.exactMatch(filePath)) + return format; + } } return 0; } |
