X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ftagresolver.cpp;h=9ab07a49abe3b8c688f4a81c287fb3c885a5284c;hb=68d60ad21e61d1e3255673985ae19606ceb0c59d;hp=85634d74c6aee1956f6f7a13bf629ffdb30014b2;hpb=dca4bf6a28a8b904d45ff26376e667b05063a400;p=someplayer diff --git a/src/tagresolver.cpp b/src/tagresolver.cpp index 85634d7..9ab07a4 100644 --- a/src/tagresolver.cpp +++ b/src/tagresolver.cpp @@ -19,46 +19,34 @@ #include "tagresolver.h" #include +#include +#include +#include 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 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(); }