From 7c5a222ea185689613f3442b153bd6ea9a23f597 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Fri, 21 Jun 2019 20:47:03 +0200 Subject: Reuse TrackFile::fromUrl() --- src/library/banshee/bansheeplaylistmodel.cpp | 7 ++----- src/library/itunes/itunesfeature.cpp | 2 +- src/library/parser.cpp | 6 +++--- src/library/parser.h | 4 +++- src/library/parserm3u.cpp | 10 +++++----- src/library/parserpls.cpp | 10 +++++----- src/sources/soundsourceproxy.cpp | 3 +-- src/test/playlisttest.cpp | 28 ++++++++++++++-------------- src/util/dnd.h | 5 ----- 9 files changed, 34 insertions(+), 41 deletions(-) diff --git a/src/library/banshee/bansheeplaylistmodel.cpp b/src/library/banshee/bansheeplaylistmodel.cpp index d46661b965..6e339f97f0 100644 --- a/src/library/banshee/bansheeplaylistmodel.cpp +++ b/src/library/banshee/bansheeplaylistmodel.cpp @@ -287,7 +287,7 @@ void BansheePlaylistModel::trackLoaded(QString group, TrackPointer pTrack) { if (pTrack) { for (int row = 0; row < rowCount(); ++row) { QUrl rowUrl(getFieldString(index(row, 0), CLM_URI)); - if (rowUrl.toLocalFile() == pTrack->getLocation()) { + if (TrackFile::fromUrl(rowUrl).location() == pTrack->getLocation()) { m_previewDeckTrackId = TrackId(getFieldVariant(index(row, 0), CLM_VIEW_ORDER)); break; @@ -364,11 +364,8 @@ QString BansheePlaylistModel::getTrackLocation(const QModelIndex& index) const { } QUrl url(getFieldString(index, CLM_URI)); - QString location; - location = url.toLocalFile(); - + QString location = TrackFile::fromUrl(url).location(); qDebug() << location << " = " << url; - if (!location.isEmpty()) { return location; } diff --git a/src/library/itunes/itunesfeature.cpp b/src/library/itunes/itunesfeature.cpp index 3c2ee57ece..107fc25576 100644 --- a/src/library/itunes/itunesfeature.cpp +++ b/src/library/itunes/itunesfeature.cpp @@ -576,7 +576,7 @@ void ITunesFeature::parseTrack(QXmlStreamReader& xml, QSqlQuery& query) { continue; } if (key == kLocation) { - location = QUrl(content).toLocalFile(); + location = TrackFile::fromUrl(QUrl(content)).location(); // Replace first part of location with the mixxx iTunes Root // on systems where iTunes installed it only strips //localhost // on iTunes from foreign systems the mount point is replaced diff --git a/src/library/parser.cpp b/src/library/parser.cpp index 6b05e388cc..9dcbb2a881 100644 --- a/src/library/parser.cpp +++ b/src/library/parser.cpp @@ -148,11 +148,11 @@ bool Parser::isUtf8(const char* string) { return true; } -QString Parser::playlistEntrytoLocalFile(const QString& playlistEntry) { +TrackFile Parser::playlistEntryToTrackFile(const QString& playlistEntry) { if (playlistEntry.startsWith("file:")) { - return QUrl(playlistEntry).toLocalFile(); + return TrackFile::fromUrl(QUrl(playlistEntry)); } - return QString(playlistEntry).replace('\\', '/'); + return TrackFile(QString(playlistEntry).replace('\\', '/')); } diff --git a/src/library/parser.h b/src/library/parser.h index 87c226efd4..686cefa579 100644 --- a/src/library/parser.h +++ b/src/library/parser.h @@ -27,6 +27,8 @@ it afterwards for proper functioning #include +#include "track/trackfile.h" + class Parser : public QObject { public: static bool isPlaylistFilenameSupported(const QString& fileName) { @@ -57,7 +59,7 @@ protected: // check for Utf8 encoding static bool isUtf8(const char* string); // reads URLs an plain Part and returns a local file path - QString playlistEntrytoLocalFile(const QString& playlistEntry); + TrackFile playlistEntryToTrackFile(const QString& playlistEntry); FRIEND_TEST(PlaylistTest, Normalize); }; diff --git a/src/library/parserm3u.cpp b/src/library/parserm3u.cpp index b770242ff2..c6eca7342d 100644 --- a/src/library/parserm3u.cpp +++ b/src/library/parserm3u.cpp @@ -106,17 +106,17 @@ QString ParserM3u::getFilepath(QTextStream* stream, QString basepath) { } if (!textline.contains("#")) { - QString trackLocation = playlistEntrytoLocalFile(textline); - if(QFile::exists(trackLocation)) { - return trackLocation; + TrackFile trackFile = playlistEntryToTrackFile(textline); + if(trackFile.checkFileExists()) { + return trackFile.location(); } else { // Try relative to m3u dir - QString rel = QDir(basepath).filePath(trackLocation); + QString rel = QDir(basepath).filePath(trackFile.location()); if (QFile::exists(rel)) { return rel; } // We couldn't match this to a real file so ignore it - qWarning() << trackLocation << "not found"; + qWarning() << trackFile.location() << "not found"; } } textline = stream->readLine(); diff --git a/src/library/parserpls.cpp b/src/library/parserpls.cpp index ee58887961..95c2295429 100644 --- a/src/library/parserpls.cpp +++ b/src/library/parserpls.cpp @@ -114,18 +114,18 @@ QString ParserPls::getFilepath(QTextStream *stream, QString basepath) { ++iPos; QString filename = textline.right(textline.length() - iPos); - QString trackLocation = playlistEntrytoLocalFile(filename); + TrackFile trackFile = playlistEntryToTrackFile(filename); - if(QFile::exists(trackLocation)) { - return trackLocation; + if(trackFile.checkFileExists()) { + return trackFile.location(); } else { // Try relative to pls dir - QString rel = QDir(basepath).filePath(trackLocation); + QString rel = QDir(basepath).filePath(trackFile.location()); if (QFile::exists(rel)) { return rel; } // We couldn't match this to a real file so ignore it - qWarning() << trackLocation << "not found"; + qWarning() << trackFile.location() << "not found"; } } textline = stream->readLine(); diff --git a/src/sources/soundsourceproxy.cpp b/src/sources/soundsourceproxy.cpp index f31dacbf85..ba5f14aba7 100644 --- a/src/sources/soundsourceproxy.cpp +++ b/src/sources/soundsourceproxy.cpp @@ -133,8 +133,7 @@ void SoundSourceProxy::registerSoundSourceProviders() { // static bool SoundSourceProxy::isUrlSupported(const QUrl& url) { - const QFileInfo fileInfo(url.toLocalFile()); - return isFileSupported(fileInfo); + return isFileSupported(TrackFile::fromUrl(url)); } // static diff --git a/src/test/playlisttest.cpp b/src/test/playlisttest.cpp index 1b41ce2817..f186471be6 100644 --- a/src/test/playlisttest.cpp +++ b/src/test/playlisttest.cpp @@ -12,21 +12,21 @@ class PlaylistTest : public testing::Test {}; TEST_F(PlaylistTest, Normalize) { ParserM3u parser; - EXPECT_STREQ(parser.playlistEntrytoLocalFile("file:///foo/bar.mp3").toStdString().c_str(), - "/foo/bar.mp3"); - EXPECT_STREQ(parser.playlistEntrytoLocalFile("file:foo/bar.mp3").toStdString().c_str(), - "foo/bar.mp3"); + EXPECT_EQ(parser.playlistEntryToTrackFile("file:///foo/bar.mp3"), + TrackFile("/foo/bar.mp3")); + EXPECT_EQ(parser.playlistEntryToTrackFile("file:foo/bar.mp3"), + TrackFile("foo/bar.mp3")); #ifdef Q_OS_WIN - EXPECT_STREQ(parser.playlistEntrytoLocalFile("file:///c:/foo/bar.mp3").toStdString().c_str(), - "c:/foo/bar.mp3"); + EXPECT_EQ(parser.playlistEntryToTrackFile("file:///c:/foo/bar.mp3"), + TrackFile("c:/foo/bar.mp3")); #else - EXPECT_STREQ(parser.playlistEntrytoLocalFile("file:///c:/foo/bar.mp3").toStdString().c_str(), - "/c:/foo/bar.mp3"); + EXPECT_EQ(parser.playlistEntryToTrackFile("file:///c:/foo/bar.mp3"), + TrackFile("/c:/foo/bar.mp3")); #endif - EXPECT_STREQ(parser.playlistEntrytoLocalFile("file:///foo%20/bar.mp3").toStdString().c_str(), - "/foo /bar.mp3"); - EXPECT_STREQ(parser.playlistEntrytoLocalFile("c:/foo/bar.mp3").toStdString().c_str(), - "c:/foo/bar.mp3"); - EXPECT_STREQ(parser.playlistEntrytoLocalFile("c:\\foo\\bar.mp3").toStdString().c_str(), - "c:/foo/bar.mp3"); + EXPECT_EQ(parser.playlistEntryToTrackFile("file:///foo%20/bar.mp3"), + TrackFile("/foo /bar.mp3")); + EXPECT_EQ(parser.playlistEntryToTrackFile("c:/foo/bar.mp3"), + TrackFile("c:/foo/bar.mp3")); + EXPECT_EQ(parser.playlistEntryToTrackFile("c:\\foo\\bar.mp3"), + TrackFile("c:/foo/bar.mp3")); } diff --git a/src/util/dnd.h b/src/util/dnd.h index 59016df578..f7ad58d346 100644 --- a/src/util/dnd.h +++ b/src/util/dnd.h @@ -60,11 +60,6 @@ class DragAndDropHelper final { QWidget* pDragSource, QString sourceIdentifier); - static QUrl urlFromLocation( - const QString& trackLocation) { - return QUrl::fromLocalFile(trackLocation); - } - static void handleTrackDragEnterEvent( QDragEnterEvent* event, const QString& group, -- cgit v1.2.3