Implemented directory browser
[someplayer] / src / tagresolver.cpp
index 7ec6231..efa81c3 100644 (file)
@@ -74,3 +74,31 @@ void TagResolver::updateTags(Track track) {
                file_ref.save();
        }
 }
+
+Track TagResolver::decodeOne(QString filename) {
+       TagLib::FileRef file_ref(QFile::encodeName(filename).data());
+       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();
+}