aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-04-25 06:44:05 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-04-25 06:44:05 +0000
commitbf0735a1b70ff1a6723a728cef32d3eb6ef96902 (patch)
tree3349c9d6b8422ad24613893bf1c1ccd848ae653d /src
parent0a4dd651536e614f3d623108cac870d4ee8635e6 (diff)
downloadqmmp-bf0735a1b70ff1a6723a728cef32d3eb6ef96902.tar.gz
qmmp-bf0735a1b70ff1a6723a728cef32d3eb6ef96902.tar.bz2
qmmp-bf0735a1b70ff1a6723a728cef32d3eb6ef96902.zip
fixed problem with non-latin characters in the file paths under windows
(#852) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6261 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.cpp2
-rw-r--r--src/plugins/Input/mad/decodermadfactory.cpp8
-rw-r--r--src/plugins/Input/mpc/decodermpcfactory.cpp10
-rw-r--r--src/plugins/Input/opus/decoderopusfactory.cpp8
-rw-r--r--src/plugins/Input/vorbis/decodervorbisfactory.cpp10
5 files changed, 31 insertions, 7 deletions
diff --git a/src/plugins/Input/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp
index f8378f588..2047ec9f9 100644
--- a/src/plugins/Input/flac/decoderflacfactory.cpp
+++ b/src/plugins/Input/flac/decoderflacfactory.cpp
@@ -126,7 +126,7 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bo
#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
oggFlacFile = new TagLib::Ogg::FLAC::File(&stream);
#else
- oggFlacFile = new TagLib::Ogg::FLAC::File(fileName.toLocal8Bit().constData());
+ oggFlacFile = new TagLib::Ogg::FLAC::File(QStringToFileName(fileName));
#endif
tag = useMetaData ? oggFlacFile->tag() : 0;
ap = oggFlacFile->audioProperties();
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp
index 826576773..3c1e68087 100644
--- a/src/plugins/Input/mad/decodermadfactory.cpp
+++ b/src/plugins/Input/mad/decodermadfactory.cpp
@@ -39,6 +39,12 @@
#include "decoder_mad.h"
#include "decodermadfactory.h"
+#ifdef Q_OS_WIN
+#define QStringToFileName(s) TagLib::FileName(reinterpret_cast<const wchar_t *>(s.utf16())
+#else
+#define QStringToFileName(s) s.toLocal8Bit().constData()
+#endif
+
// DecoderMADFactory
DecoderMADFactory::DecoderMADFactory()
@@ -128,7 +134,7 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo
TagLib::Tag *tag = 0;
#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::MPEG::File fileRef(&stream, TagLib::ID3v2::FrameFactory::instance());
#else
TagLib::MPEG::File fileRef(fileName.toLocal8Bit ().constData());
diff --git a/src/plugins/Input/mpc/decodermpcfactory.cpp b/src/plugins/Input/mpc/decodermpcfactory.cpp
index 663daa0b2..49a6725e9 100644
--- a/src/plugins/Input/mpc/decodermpcfactory.cpp
+++ b/src/plugins/Input/mpc/decodermpcfactory.cpp
@@ -30,6 +30,12 @@
#include "decoder_mpc.h"
#include "decodermpcfactory.h"
+#ifdef Q_OS_WIN
+#define QStringToFileName(s) TagLib::FileName(reinterpret_cast<const wchar_t *>(s.utf16())
+#else
+#define QStringToFileName(s) s.toLocal8Bit().constData()
+#endif
+
// DecoderMPCFactory
@@ -79,10 +85,10 @@ QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName, boo
FileInfo *info = new FileInfo(fileName);
#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::MPC::File fileRef(&stream);
#else
- TagLib::MPC::File fileRef(fileName.toLocal8Bit().constData());
+ TagLib::MPC::File fileRef(QStringToFileName(fileName));
#endif
TagLib::APE::Tag *tag = useMetaData ? fileRef.APETag() : 0;
diff --git a/src/plugins/Input/opus/decoderopusfactory.cpp b/src/plugins/Input/opus/decoderopusfactory.cpp
index 003eca863..ec66ce80a 100644
--- a/src/plugins/Input/opus/decoderopusfactory.cpp
+++ b/src/plugins/Input/opus/decoderopusfactory.cpp
@@ -26,6 +26,12 @@
#include "opusmetadatamodel.h"
#include "decoderopusfactory.h"
+#ifdef Q_OS_WIN
+#define QStringToFileName(s) TagLib::FileName(reinterpret_cast<const wchar_t *>(s.utf16())
+#else
+#define QStringToFileName(s) s.toLocal8Bit().constData()
+#endif
+
// DecoderOpusFactory
bool DecoderOpusFactory::supports(const QString &source) const
@@ -76,7 +82,7 @@ QList<FileInfo *> DecoderOpusFactory::createPlayList(const QString &fileName, bo
{
FileInfo *info = new FileInfo(fileName);
- TagLib::Ogg::Opus::File fileRef(fileName.toLocal8Bit().constData());
+ TagLib::Ogg::Opus::File fileRef(QStringToFileName(fileName));
TagLib::Ogg::XiphComment *tag = useMetaData ? fileRef.tag() : 0;
if (tag && !tag->isEmpty())
diff --git a/src/plugins/Input/vorbis/decodervorbisfactory.cpp b/src/plugins/Input/vorbis/decodervorbisfactory.cpp
index 794850c52..b8d19db0b 100644
--- a/src/plugins/Input/vorbis/decodervorbisfactory.cpp
+++ b/src/plugins/Input/vorbis/decodervorbisfactory.cpp
@@ -29,6 +29,12 @@
#include "vorbismetadatamodel.h"
#include "decodervorbisfactory.h"
+#ifdef Q_OS_WIN
+#define QStringToFileName(s) TagLib::FileName(reinterpret_cast<const wchar_t *>(s.utf16())
+#else
+#define QStringToFileName(s) s.toLocal8Bit().constData()
+#endif
+
// DecoderOggFactory
@@ -82,10 +88,10 @@ QList<FileInfo *> DecoderVorbisFactory::createPlayList(const QString &fileName,
FileInfo *info = new FileInfo(fileName);
#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::Ogg::Vorbis::File fileRef(&stream);
#else
- TagLib::Ogg::Vorbis::File fileRef(fileName.toLocal8Bit().constData());
+ TagLib::Ogg::Vorbis::File fileRef(QStringToFileName(fileName));
#endif
TagLib::Ogg::XiphComment *tag = useMetaData ? fileRef.tag() : 0;