3 sPlayer::sPlayer(QObject *parent) :
6 manager = new QNetworkAccessManager();
7 buffer = new QBuffer();
8 audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory,this);
9 media = new Phonon::MediaObject(this);
10 Phonon::createPath(media, audioOutput);
12 //reply = new QNetworkReply();
14 //buffer->open(QIODevice::ReadWrite);
18 manager->~QNetworkAccessManager();
19 //reply->~QIODevice();
23 void sPlayer::abortDownload()
29 void sPlayer::play(QString StreamKey,QUrl server)
35 pd = new grooveProgressBar();
39 pd->setAttribute(Qt::WA_Maemo5AutoOrientation,true);
40 //pd->setModal(false);
47 req.setHeader(req.ContentTypeHeader,QVariant("application/x-www-form-urlencoded"));
48 reply = manager->post(req,QString("streamKey=" + StreamKey.toAscii()).toAscii());
49 buffer->open(buffer->ReadWrite | buffer->Truncate);
50 connect(reply,SIGNAL(finished()),this,SLOT(start()));
51 connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(putb(qint64,qint64)));
52 //connect(pd,SIGNAL(canceled()),this,SLOT(abortDownload()));
55 startStreamT = QTime::currentTime();
59 QVariant url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
60 if(url.toUrl().isValid())
63 req.setUrl(url.toUrl());
65 reply = manager->get(req);
66 connect(reply,SIGNAL(finished()),this,SLOT(start()));
67 connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(putb(qint64,qint64)));
74 media->setCurrentSource(Phonon::MediaSource(buffer));
76 qDebug() << "Playing";
83 buffer->open(QIODevice::ReadWrite | QIODevice::Truncate);
84 buffer->write(reply->readAll());
86 media->setCurrentSource(Phonon::MediaSource(buffer));
95 void sPlayer::putb(qint64 b, qint64 t)
97 //qDebug() << "Download: " << b << "Total: " << t;
100 QVariant url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
101 if(url.toUrl().isValid())
104 req.setUrl(url.toUrl());
106 reply = manager->get(req);
107 connect(reply,SIGNAL(finished()),this,SLOT(start()));
108 connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(putb(qint64,qint64)));
118 if(pd->maximum() != t)
122 buffer->buffer().append(reply->readAll());
123 //qDebug() << buffer->bytesAvailable();
126 StreamIO* stream = (StreamIO*) media->currentSource().stream();
127 stream->setStreamSize(buffer->size());
132 qint64 last = buffer->pos();
133 buffer->seek(buffer->bytesAvailable()+buffer->pos());
134 qDebug() << buffer->write(reply->readAll());
135 qDebug() << buffer->pos();
138 //buffer->data().append(reply->readAll());*/
139 //qDebug() << "Download speed (KB/S): " << b/(startStreamT.msecsTo(QTime::currentTime()) + 1)*100/1024;
140 if ( b >= t*0.05 && !playing && b/(startStreamT.msecsTo(QTime::currentTime()) + 1)*100/1024 >= 25)
144 //Start playback at 25% download
145 media->setCurrentSource(Phonon::MediaSource(buffer));
147 qDebug() << "Playing";