+ if (mediaObject->state () == Phonon::ErrorState)
+ wasPlaying = true;
+ qDebug () << "PREVIOUS, repeat=" << repeat << ", shuffle=" << shuffle;
+ int index = plman.indexOf(mediaObject->currentSource());
+ qDebug () << "Current index is " << index;
+ if (shuffle)
+ {
+ qDebug () << "Shuffle next";
+ index = shuffleList.indexOf(plman.indexOf(mediaObject->currentSource())) - 1;
+ while (index >= 0 && !plman.getItem(shuffleList[index]).playable)
+ {
+ index--;
+ qDebug () << "Index increase a " << index;
+ }
+ qDebug () << "Shuffle next 2 " << index;
+ if (index >= 0)
+ {
+ setItem (index);
+ }
+ else if (repeat)
+ {
+ index = plman.size () - 1;
+ while (index >= 0 && !plman.getItem(shuffleList[index]).playable)
+ {
+ qDebug () << "Index increase 2a " << index;
+ index--;
+ }
+ setItem (index);
+ }
+ if (index < 0)
+ wasPlaying = false;
+
+ }
+ else
+ {
+ index--;
+ qDebug () << "Normal next";
+ while ((index) >= 0 && !plman.getItem(index).playable)
+ {
+ index--;
+ qDebug () << "Index increase " << index;
+ }
+ qDebug () << "Normal next 2 " << index;
+ if (index >= 0)
+ {
+ setItem (index);
+ }
+ else if (repeat)
+ {
+ qDebug () << "Repeat on";
+ index = plman.size() - 1;
+ while ((index) >= 0 && !plman.getItem(index).playable)
+ {
+ index--;
+ qDebug () << "Index increase " << index;
+ }
+ setItem (index);
+ }
+ if (index < 0)
+ wasPlaying = false;
+ }
+ if (wasPlaying)
+ mediaObject->play();
+ qDebug () << "wasPlaying: " << wasPlaying << ", playbutton visible: " << playAction->isVisible();
+
+/* bool wasPlaying = (mediaObject->state () == Phonon::PlayingState);