From 30dc47d87a4e4ff591c9eef3f6a18308fa6ba532 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 20 Jun 2016 06:49:57 +0000 Subject: added wildmidi-0.4.0 support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6478 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/wildmidi/decoderwildmidifactory.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/plugins/Input/wildmidi/decoderwildmidifactory.cpp') diff --git a/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp b/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp index 304616135..ecc6c5dd3 100644 --- a/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp +++ b/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp @@ -35,13 +35,25 @@ DecoderWildMidiFactory::DecoderWildMidiFactory() bool DecoderWildMidiFactory::supports(const QString &source) const { - return source.endsWith(".mid", Qt::CaseInsensitive); + foreach(QString filter, properties().filters) + { + QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if (regexp.exactMatch(source)) + return true; + } + return false; } bool DecoderWildMidiFactory::canDecode(QIODevice *input) const { char buf[4]; - return (input->peek(buf, 4) == 4 && !memcmp(buf, "MThd", 4)); + if(input->peek(buf, 4) != 4) + return false; +#if defined(LIBWILDMIDI_VERSION) && (LIBWILDMIDI_VERSION >= 0x000400) + return !memcmp(buf, "MThd", 4) || !memcmp(buf, "MUS", 3) || !memcmp(buf, "FORM", 4); +#else + return !memcmp(buf, "MThd", 4); +#endif } const DecoderProperties DecoderWildMidiFactory::properties() const @@ -49,6 +61,9 @@ const DecoderProperties DecoderWildMidiFactory::properties() const DecoderProperties properties; properties.name = tr("WildMidi Plugin"); properties.filters << "*.mid"; +#if defined(LIBWILDMIDI_VERSION) && (LIBWILDMIDI_VERSION >= 0x000400) + properties.filters << "*.mus" << "*.xmi"; +#endif properties.description = tr("Midi Files"); //properties.contentType = ; properties.shortName = "wildmidi"; -- cgit v1.2.3-13-gbd6f