Implemented directory scanning and adding tracks to library
[someplayer] / src / tagresolver.cpp
1 #include "tagresolver.h"
2
3 using namespace SomePlayer::DataObjects;
4
5 TagResolver::TagResolver(QObject *parent) :
6     QObject(parent)
7 {
8         _metaObject = new Phonon::MediaObject(this);
9         connect(_metaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(metaStateChanged(Phonon::State,Phonon::State)));
10 }
11
12 void TagResolver::decode(QStringList files) {
13         _sources.clear();
14         foreach (QString filename, files) {
15                 _sources.append(Phonon::MediaSource(filename));
16         }
17         if (!_sources.isEmpty()) {
18                 _metaObject->setCurrentSource(_sources.at(0));
19         }
20 }
21
22 void TagResolver::metaStateChanged(Phonon::State newState, Phonon::State /*oldState*/) {
23         if (newState == Phonon::StoppedState) {
24                 Phonon::MediaSource source = _metaObject->currentSource();
25                 if (source.type() != Phonon::MediaSource::Invalid) {
26                         QMap<QString, QString> meta = _metaObject->metaData();
27                         TrackMetadata metadata(meta.value("TITLE"), meta.value("ARTIST"), meta.value("ALBUM"));
28                         Track track(0, metadata, source.fileName());
29                         emit decoded(track);
30                         int index = _sources.indexOf(source)+1;
31                         if (index != _sources.size()) {
32                                 Phonon::MediaSource newSource = _sources.at(index);
33                                 _metaObject->setCurrentSource(newSource);
34                         }
35                 }
36         }
37 }