Deleted debug code
[someplayer] / src / tagresolver.cpp
index 9ab07a4..0464e7e 100644 (file)
  */
 
 #include "tagresolver.h"
-#include <QDebug>
 #include <QFile>
+#include <QFileInfo>
 #include <tag.h>
 #include <fileref.h>
+#include <QDebug>
 
 using namespace SomePlayer::DataObjects;
 
@@ -31,22 +32,76 @@ 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());
-                                       Track track(0, 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;
+                       meta.setLength(0);
+                       QFileInfo fi(filename);
+                       meta.setArtist(fi.suffix().toUpper());
+                       meta.setTitle(fi.baseName());
+                       meta.setYear(0);
+                       Track track(meta, filename);
+                       emit decoded(track);
                }
        }
        emit done();
 }
+
+void TagResolver::updateTags(Track track) {
+       TagLib::FileRef file_ref(QFile::encodeName(track.source()).data());
+       if (!file_ref.isNull()) {
+               TagLib::Tag *tag = file_ref.tag();
+               if (NULL != tag) {
+                       tag->setArtist(TagLib::String(track.metadata().artist().toStdWString()));
+                       tag->setAlbum(TagLib::String(track.metadata().album().toStdWString()));
+                       tag->setTitle(TagLib::String(track.metadata().title().toStdWString()));
+               }
+               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();
+}