X-Git-Url: http://git.maemo.org/git/?p=groove;a=blobdiff_plain;f=playlist.cpp;h=5d867fdd8efab89e5d7de4b2ae1a7519cdd327ea;hp=e79229d4fba730ef5410b649d068766a83872a69;hb=HEAD;hpb=4adbefb36e52cb33564e704d8ea6a49425db8caf diff --git a/playlist.cpp b/playlist.cpp index e79229d..5d867fd 100644 --- a/playlist.cpp +++ b/playlist.cpp @@ -10,19 +10,30 @@ playlist::playlist(QObject *parent) : this->currentSkeyItem = -1; this->reply = NULL; } +QList* playlist::getList() +{ + return pList; +} + void playlist::markPlayed(int position) { - pList->at(position)->played = true; - this->freeMemory(position); + if(0 <= position && position < pList->size()) + { + pList->at(position)->played = true; + this->freeMemory(position); + } } void playlist::freeMemory(int position) { pList->at(position)->downloaded = false; + pList->at(position)->bufferready = false; delete pList->at(position)->buffer; pList->at(position)->buffer = new QBuffer(); } bool playlist::existAt(int position) { + if(position < 0) + return false; return (pList->size() > position); } @@ -41,9 +52,9 @@ void playlist::setBufferRdy(int b) { pList->at(b)->bufferready = true; } -bool playlist::setCurrentPlaying(int position) +void playlist::setCurrentPlaying(int position) { - if(pList->size() > position) + if(this->existAt(position)) { this->currentplayingitem = position; if(!pList->at(position)->downloaded && this->currentdownloaditem != this->currentplayingitem) @@ -56,10 +67,17 @@ bool playlist::setCurrentPlaying(int position) else emit this->bufferReady(position); */ - return true; + return; } else - return false; + { + if(position == -1) + { + this->currentplayingitem = -1; + } + else + return; + } } QIODevice * playlist::getBuffer(int position) { @@ -90,7 +108,7 @@ void playlist::beginDownload(int position) void playlist::getNError(QNetworkReply::NetworkError error) { qDebug() << "Network Error (if this is 99 then it will retry" << error; - if(error == QNetworkReply::UnknownNetworkError) + if(error == QNetworkReply::UnknownNetworkError && this->currentdownloaditem != -1) beginDownload(this->currentdownloaditem); } @@ -134,7 +152,7 @@ int playlist::addSong(QStandardItem *item) void playlist::downloadDone(int position) { - if(this->existAt(position+1) && this->currentSkeyItem == -1) + if(this->existAt(position+1) && this->currentSkeyItem == -1 && !pList->at(position+1)->downloaded && this->currentdownloaditem != position+1) beginDownload(position+1); else this->currentdownloaditem = -1;