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