aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlistparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui/playlistparser.cpp')
-rw-r--r--src/qmmpui/playlistparser.cpp29
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;
}