Add QString version of GetRelativePathToClementineBin.

Avoid converting paths to and from URLs when calling this function.
This commit is contained in:
Jim Broadus 2020-02-11 22:23:11 -08:00 committed by John Maguire
parent ba4320859d
commit b9f57c574f
4 changed files with 11 additions and 5 deletions

View File

@ -726,8 +726,13 @@ bool UrlOnSameDriveAsClementine(const QUrl& url) {
}
QUrl GetRelativePathToClementineBin(const QUrl& url) {
QString relPath = GetRelativePathToClementineBin(url.toLocalFile());
return QUrl::fromLocalFile(relPath);
}
QString GetRelativePathToClementineBin(const QString& abspath) {
QDir appPath(QCoreApplication::applicationDirPath());
return QUrl::fromLocalFile(appPath.relativeFilePath(url.toLocalFile()));
return appPath.relativeFilePath(abspath);
}
QString PathWithoutFilenameExtension(const QString& filename) {

View File

@ -118,6 +118,8 @@ bool UrlOnSameDriveAsClementine(const QUrl& url);
// Get relative path to clementine binary
QUrl GetRelativePathToClementineBin(const QUrl& url);
QString GetRelativePathToClementineBin(const QString& abspath);
// Get the path without the filename extension
QString PathWithoutFilenameExtension(const QString& filename);
QString FiddleFileExtension(const QString& filename,

View File

@ -218,8 +218,7 @@ void LibraryBackend::AddDirectory(const QString& path) {
if (Application::kIsPortable && Utilities::UrlOnSameDriveAsClementine(
QUrl::fromLocalFile(canonical_path))) {
db_path = Utilities::GetRelativePathToClementineBin(
QUrl::fromLocalFile(db_path)).toLocalFile();
db_path = Utilities::GetRelativePathToClementineBin(db_path);
qLog(Debug) << "db_path" << db_path;
}

View File

@ -41,8 +41,8 @@ void LibraryDirectoryModel::DirectoryDiscovered(const Directory& dir) {
QStandardItem* item;
if (Application::kIsPortable &&
Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(dir.path))) {
item = new QStandardItem(Utilities::GetRelativePathToClementineBin(
QUrl::fromLocalFile(dir.path)).toLocalFile());
item =
new QStandardItem(Utilities::GetRelativePathToClementineBin(dir.path));
} else {
item = new QStandardItem(dir.path);
}