Update to reflect api changes and small patch for alternate audio
[groove] / playlist.cpp
index e79229d..38eb579 100644 (file)
@@ -12,17 +12,23 @@ playlist::playlist(QObject *parent) :
 }
 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 +47,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 +62,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 +103,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 +147,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;