Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / tagresolver.cpp
index 85634d7..9ab07a4 100644 (file)
 
 #include "tagresolver.h"
 #include <QDebug>
+#include <QFile>
+#include <tag.h>
+#include <fileref.h>
 
 using namespace SomePlayer::DataObjects;
 
 TagResolver::TagResolver(QObject *parent) :
     QObject(parent)
 {
-       _metaObject = new Phonon::MediaObject(this);
-       connect(_metaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(metaStateChanged(Phonon::State,Phonon::State)));
 }
 
 void TagResolver::decode(QStringList files) {
-       _sources.clear();
        foreach (QString filename, files) {
-               _sources.append(Phonon::MediaSource(filename));
-       }
-       if (!_sources.isEmpty()) {
-               _metaObject->setCurrentSource(_sources.at(0));
-       }
-}
-
-void TagResolver::metaStateChanged(Phonon::State newState, Phonon::State /*oldState*/) {
-       if (newState == Phonon::StoppedState) {
-               int time = _metaObject->totalTime();
-               Phonon::MediaSource source = _metaObject->currentSource();
-               QMap<QString, QString> meta = _metaObject->metaData();
-               TrackMetadata metadata(meta.value("TITLE"), meta.value("ARTIST"), meta.value("ALBUM"), time/1000);
-               Track track(0, metadata, source.fileName());
-               int index = _sources.indexOf(source)+1;
-               emit decoded(track);
-               _metaObject->stop();
-               if (index != _sources.size()) {
-                       Phonon::MediaSource newSource = _sources.at(index);
-                       _metaObject->clear();
-                       _metaObject->setCurrentSource(newSource);
-               } else {
-                       emit done();
+               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());
+                                       Track track(0, meta, filename);
+                                       emit decoded(track);
+                               }
+                       }
                }
-       } else if (newState == Phonon::ErrorState) {
-               Phonon::MediaSource s = _metaObject->currentSource();
-               _metaObject->clear();
-               _metaObject->setCurrentSource(s);
        }
+       emit done();
 }