This commit is contained in:
smithjd15 2024-04-30 23:47:45 +02:00 committed by GitHub
commit c12b7db503
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 17 additions and 17 deletions

View File

@ -308,7 +308,7 @@ bool CommandlineOptions::Parse() {
QString value = QFile::decodeName(argv_[i]); QString value = QFile::decodeName(argv_[i]);
QFileInfo file_info(value); QFileInfo file_info(value);
if (file_info.exists()) if (file_info.exists())
urls_ << QUrl::fromLocalFile(file_info.canonicalFilePath()); urls_ << QUrl::fromLocalFile(file_info.absoluteFilePath());
else else
urls_ << QUrl::fromUserInput(value); urls_ << QUrl::fromUserInput(value);
} }

View File

@ -725,8 +725,11 @@ bool UrlOnSameDriveAsClementine(const QUrl& url) {
if (url.scheme() != "file") return false; if (url.scheme() != "file") return false;
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
QUrl canUrl =
QUrl::fromLocalFile(QFileInfo(url.toLocalFile()).canonicalFilePath());
QUrl appUrl = QUrl::fromLocalFile(QCoreApplication::applicationDirPath()); QUrl appUrl = QUrl::fromLocalFile(QCoreApplication::applicationDirPath());
if (url.toLocalFile().left(1) == appUrl.toLocalFile().left(1))
if (canUrl.toLocalFile().left(1) == appUrl.toLocalFile().left(1))
return true; return true;
else else
return false; return false;

View File

@ -218,11 +218,11 @@ void LibraryBackend::UpdateTotalSongCount() {
} }
void LibraryBackend::AddDirectory(const QString& path) { void LibraryBackend::AddDirectory(const QString& path) {
QString canonical_path = QFileInfo(path).canonicalFilePath(); QString absolute_path = QFileInfo(path).absoluteFilePath();
QString db_path = canonical_path; QString db_path = absolute_path;
if (Application::kIsPortable && Utilities::UrlOnSameDriveAsClementine( if (Application::kIsPortable && Utilities::UrlOnSameDriveAsClementine(
QUrl::fromLocalFile(canonical_path))) { QUrl::fromLocalFile(absolute_path))) {
db_path = Utilities::GetRelativePathToClementineBin(db_path); db_path = Utilities::GetRelativePathToClementineBin(db_path);
qLog(Debug) << "db_path" << db_path; qLog(Debug) << "db_path" << db_path;
} }
@ -239,7 +239,7 @@ void LibraryBackend::AddDirectory(const QString& path) {
if (db_->CheckErrors(q)) return; if (db_->CheckErrors(q)) return;
Directory dir; Directory dir;
dir.path = canonical_path; dir.path = absolute_path;
dir.id = q.lastInsertId().toInt(); dir.id = q.lastInsertId().toInt();
emit DirectoryDiscovered(dir, SubdirectoryList()); emit DirectoryDiscovered(dir, SubdirectoryList());

View File

@ -467,7 +467,7 @@ void IncomingDataParser::AppendFilesToPlaylist(
QDir dir(fi_folder.absoluteFilePath()); QDir dir(fi_folder.absoluteFilePath());
for (const auto& file : req_append.files()) { for (const auto& file : req_append.files()) {
QFileInfo fi(dir, file.c_str()); QFileInfo fi(dir, file.c_str());
if (fi.exists()) urls << QUrl::fromLocalFile(fi.canonicalFilePath()); if (fi.exists()) urls << QUrl::fromLocalFile(fi.absoluteFilePath());
} }
if (!urls.isEmpty()) { if (!urls.isEmpty()) {
MimeData* data = new MimeData; MimeData* data = new MimeData;

View File

@ -53,15 +53,12 @@ void ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning,
// was created on/for, using replace() lets playlists work on any platform. // was created on/for, using replace() lets playlists work on any platform.
filename = filename.replace('\\', '/'); filename = filename.replace('\\', '/');
// Make the path absolute // Make the path absolute and clean it
if (!QDir::isAbsolutePath(filename)) { if (!QDir::isAbsolutePath(filename)) {
filename = dir.absoluteFilePath(filename); filename = dir.absoluteFilePath(filename);
} }
// Use the canonical path filename = QDir::cleanPath(filename);
if (QFile::exists(filename)) {
filename = QFileInfo(filename).canonicalFilePath();
}
const QUrl url = QUrl::fromLocalFile(filename); const QUrl url = QUrl::fromLocalFile(filename);

View File

@ -61,7 +61,7 @@ class ParserBase : public QObject {
protected: protected:
// Loads a song. If filename_or_url is a URL (with a scheme other than // Loads a song. If filename_or_url is a URL (with a scheme other than
// "file") then it is set on the song and the song marked as a stream. // "file") then it is set on the song and the song marked as a stream.
// If it is a filename or a file:// URL then it is made absolute and canonical // If it is a filename or a file:// URL then it is made absolute and cleaned
// and set as a file:// url on the song. Also sets the song's metadata by // and set as a file:// url on the song. Also sets the song's metadata by
// searching in the Library, or loading from the file as a fallback. // searching in the Library, or loading from the file as a fallback.
// This function should always be used when loading a playlist. // This function should always be used when loading a playlist.

View File

@ -2185,7 +2185,7 @@ void MainWindow::AddFile() {
// Convert to URLs // Convert to URLs
QList<QUrl> urls; QList<QUrl> urls;
for (const QString& path : file_names) { for (const QString& path : file_names) {
urls << QUrl::fromLocalFile(QFileInfo(path).canonicalFilePath()); urls << QUrl::fromLocalFile(QFileInfo(path).absoluteFilePath());
} }
MimeData* data = new MimeData; MimeData* data = new MimeData;
@ -2209,7 +2209,7 @@ void MainWindow::AddFolder() {
// Add media // Add media
MimeData* data = new MimeData; MimeData* data = new MimeData;
data->setUrls(QList<QUrl>() << QUrl::fromLocalFile( data->setUrls(QList<QUrl>() << QUrl::fromLocalFile(
QFileInfo(directory).canonicalFilePath())); QFileInfo(directory).absoluteFilePath()));
AddToPlaylist(data); AddToPlaylist(data);
} }

View File

@ -69,7 +69,7 @@ QList<QUrl> FileViewList::UrlListFromSelection() const {
if (index.column() == 0) if (index.column() == 0)
urls << QUrl::fromLocalFile(static_cast<QFileSystemModel*>(model()) urls << QUrl::fromLocalFile(static_cast<QFileSystemModel*>(model())
->fileInfo(index) ->fileInfo(index)
.canonicalFilePath()); .absoluteFilePath());
} }
return urls; return urls;
} }

View File

@ -74,7 +74,7 @@ TEST_F(LibraryBackendTest, AddDirectory) {
// Check the signal was emitted correctly // Check the signal was emitted correctly
ASSERT_EQ(1, spy.count()); ASSERT_EQ(1, spy.count());
Directory dir = spy[0][0].value<Directory>(); Directory dir = spy[0][0].value<Directory>();
EXPECT_EQ(QFileInfo("/tmp").canonicalFilePath(), dir.path); EXPECT_EQ(QFileInfo("/tmp").absoluteFilePath(), dir.path);
EXPECT_EQ(1, dir.id); EXPECT_EQ(1, dir.id);
EXPECT_EQ(0, spy[0][1].value<SubdirectoryList>().size()); EXPECT_EQ(0, spy[0][1].value<SubdirectoryList>().size());
} }