Use absolute file paths instead of canonical paths. Fixes unpredictable paths in relative path saved playlists.

This commit is contained in:
James D. Smith 2021-02-11 21:44:49 -07:00
parent 20c6ae6c14
commit 14ddc88603
7 changed files with 10 additions and 15 deletions

View File

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

View File

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

View File

@ -467,7 +467,7 @@ void IncomingDataParser::AppendFilesToPlaylist(
QDir dir(fi_folder.absoluteFilePath());
for (const auto& file : req_append.files()) {
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()) {
MimeData* data = new MimeData;

View File

@ -58,11 +58,6 @@ void ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning,
filename = dir.absoluteFilePath(filename);
}
// Use the canonical path
if (QFile::exists(filename)) {
filename = QFileInfo(filename).canonicalFilePath();
}
const QUrl url = QUrl::fromLocalFile(filename);
// Search in the library

View File

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

View File

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

View File

@ -74,7 +74,7 @@ TEST_F(LibraryBackendTest, AddDirectory) {
// Check the signal was emitted correctly
ASSERT_EQ(1, spy.count());
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(0, spy[0][1].value<SubdirectoryList>().size());
}