X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ftagresolver.cpp;h=0464e7eefa488487ea00c66f7b0ddb0eb813ed5e;hb=34d1d49dbf3d57d14b2df6ca511613a08443f4ec;hp=7ec6231e0542a3c531af8a59cf9b87d10d89d5aa;hpb=93d6e5dbbc5686c94fdc462990dda42bb8fb3309;p=someplayer diff --git a/src/tagresolver.cpp b/src/tagresolver.cpp index 7ec6231..0464e7e 100644 --- a/src/tagresolver.cpp +++ b/src/tagresolver.cpp @@ -34,20 +34,22 @@ TagResolver::TagResolver(QObject *parent) : void TagResolver::decode(QStringList files) { emit started(); foreach (QString filename, files) { - TagLib::FileRef file_ref(QFile::encodeName(filename).data()); + TagLib::FileRef file_ref(QFile::encodeName(filename).data(), true, TagLib::AudioProperties::Fast); if (!file_ref.isNull()) { TagLib::Tag *tag = file_ref.tag(); + int length = 0; if (NULL != tag) { TagLib::AudioProperties *properties = file_ref.audioProperties(); if (NULL != properties) { - TrackMetadata meta(QString::fromStdWString(tag->title().toWString()), - QString::fromStdWString(tag->artist().toWString()), - QString::fromStdWString(tag->album().toWString()), - properties->length()); - meta.setYear(tag->year()); - Track track(meta, filename); - emit decoded(track); + length = properties->length(); } + TrackMetadata meta(QString::fromStdWString(tag->title().toWString()), + QString::fromStdWString(tag->artist().toWString()), + QString::fromStdWString(tag->album().toWString()), + length); + meta.setYear(tag->year()); + Track track(meta, filename); + emit decoded(track); } } else { // workaround TrackMetadata meta; @@ -55,6 +57,7 @@ void TagResolver::decode(QStringList files) { QFileInfo fi(filename); meta.setArtist(fi.suffix().toUpper()); meta.setTitle(fi.baseName()); + meta.setYear(0); Track track(meta, filename); emit decoded(track); } @@ -74,3 +77,31 @@ void TagResolver::updateTags(Track track) { file_ref.save(); } } + +Track TagResolver::decodeOne(QString filename) { + TagLib::FileRef file_ref(QFile::encodeName(filename).data(), true, TagLib::AudioProperties::Fast); + if (!file_ref.isNull()) { + TagLib::Tag *tag = file_ref.tag(); + if (NULL != tag) { + TagLib::AudioProperties *properties = file_ref.audioProperties(); + if (NULL != properties) { + TrackMetadata meta(QString::fromStdWString(tag->title().toWString()), + QString::fromStdWString(tag->artist().toWString()), + QString::fromStdWString(tag->album().toWString()), + properties->length()); + meta.setYear(tag->year()); + Track track(meta, filename); + return track; + } + } + } else { // workaround + TrackMetadata meta; + meta.setLength(0); + QFileInfo fi(filename); + meta.setArtist(fi.suffix().toUpper()); + meta.setTitle(fi.baseName()); + Track track(meta, filename); + return track; + } + return Track(); +}