diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 02c5ba79..523631c8 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -762,6 +762,15 @@ bool IsLaptop() { } +QString PathWithoutFilenameExtension(const QString &filename) { + if (filename.section('/', -1, -1).contains('.')) return filename.section('.', 0, -2); + return filename; +} + +QString FiddleFileExtension(const QString &filename, const QString &new_extension) { + return PathWithoutFilenameExtension(filename) + "." + new_extension; +} + QString GetEnv(const QString &key) { return QString::fromLocal8Bit(qgetenv(key.toLocal8Bit())); } diff --git a/src/core/utilities.h b/src/core/utilities.h index 5a21db62..e9cb5f16 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -108,6 +108,10 @@ const char *EnumToString(const QMetaObject &meta, const char *name, int value); QStringList Prepend(const QString &text, const QStringList &list); QStringList Updateify(const QStringList &list); +// Get the path without the filename extension +QString PathWithoutFilenameExtension(const QString &filename); +QString FiddleFileExtension(const QString &filename, const QString &new_extension); + QString GetEnv(const QString &key); void SetEnv(const char *key, const QString &value); void IncreaseFDLimit(); diff --git a/src/organize/organize.cpp b/src/organize/organize.cpp index 44d72171..e72db7cb 100644 --- a/src/organize/organize.cpp +++ b/src/organize/organize.cpp @@ -33,6 +33,7 @@ #include #include "core/logging.h" +#include "core/utilities.h" #include "core/taskmanager.h" #include "core/musicstorage.h" #include "core/tagreaderclient.h" @@ -171,9 +172,9 @@ void Organize::ProcessSomeFiles() { song.set_filetype(task.new_filetype_); // Fiddle the filename extension as well to match the new type - song.set_url(QUrl::fromLocalFile(QFileInfo(song.basefilename()).completeBaseName() + "." + task.new_extension_)); - song.set_basefilename(QFileInfo(song.basefilename()).completeBaseName() + "." + task.new_extension_); - task.song_info_.new_filename_ = QFileInfo(task.song_info_.new_filename_).completeBaseName() + "." + task.new_extension_; + song.set_url(QUrl::fromLocalFile(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_))); + song.set_basefilename(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_)); + task.song_info_.new_filename_ = Utilities::FiddleFileExtension(task.song_info_.new_filename_, task.new_extension_); // Have to set this to the size of the new file or else funny stuff happens song.set_filesize(QFileInfo(task.transcoded_filename_).size());