diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-05 11:50:37 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-05 11:50:37 +0000 |
| commit | 245d0ac0cdb729c94ca71dc035342154d70aa8e5 (patch) | |
| tree | f908567eb29ddba73c36e82511605d3635a897e8 /src/qmmpui/playstate.cpp | |
| parent | d04ab1bfe9a70049e0c9ee753835c95a6ccf2086 (diff) | |
| download | qmmp-245d0ac0cdb729c94ca71dc035342154d70aa8e5.tar.gz qmmp-245d0ac0cdb729c94ca71dc035342154d70aa8e5.tar.bz2 qmmp-245d0ac0cdb729c94ca71dc035342154d70aa8e5.zip | |
added playlist groups, disabled broken plugins
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3564 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playstate.cpp')
| -rw-r--r-- | src/qmmpui/playstate.cpp | 67 |
1 files changed, 43 insertions, 24 deletions
diff --git a/src/qmmpui/playstate.cpp b/src/qmmpui/playstate.cpp index e9d4c7aeb..6676bc074 100644 --- a/src/qmmpui/playstate.cpp +++ b/src/qmmpui/playstate.cpp @@ -113,56 +113,75 @@ void ShufflePlayState::resetState() NormalPlayState::NormalPlayState(PlayListModel * model) : PlayState(model) {} - bool NormalPlayState::next() { - int itm_count = m_model->items().count(); + int item_count = m_model->items().count(); - if (itm_count > 0) + if(!item_count) + return false; + + if (m_model->isRepeatableList() && m_model->currentIndex() == item_count - 1) { - if ( m_model->currentIndex() == itm_count - 1) - { - if (m_model->isRepeatableList()) - return m_model->setCurrent(0); - else - return false; - } - return m_model->setCurrent(m_model->currentIndex() + 1); + if(item_count >= 1 && m_model->track(0)) + return m_model->setCurrent(0); + else if(item_count >= 2 && m_model->track(1)) + return m_model->setCurrent(1); } - else + else if(m_model->track((m_model->currentIndex() + 1))) + return m_model->setCurrent(m_model->currentIndex() + 1); + else if(m_model->currentIndex() + 2 >= item_count) return false; + else if(m_model->track(m_model->currentIndex() + 2)) + return m_model->setCurrent(m_model->currentIndex() + 2); + return false; } bool NormalPlayState::previous() { - int itm_count = m_model->items().count(); + int item_count = m_model->items().count(); - if (itm_count > 0) + if(!item_count) + return false; + + if(m_model->isRepeatableList()) { - if ( m_model->currentIndex() < 1 && !m_model->isRepeatableList()) - return false; - else if (m_model->setCurrent(m_model->currentIndex() - 1)) - return true; - else if (m_model->isRepeatableList()) - return m_model->setCurrent(m_model->items().count() - 1); + if(m_model->currentIndex() == 1 && m_model->track(0)) + return m_model->setCurrent(0); + else if(m_model->currentIndex() == 1 && !m_model->track(0)) + return (m_model->setCurrent(m_model->currentIndex() - 1)); + else if(m_model->currentIndex() == 0) + return m_model->setCurrent(m_model->currentIndex() - 1); } + if(m_model->currentIndex() == 0) + return false; + else if(m_model->track(m_model->currentIndex() - 1)) + return m_model->setCurrent(m_model->currentIndex() - 1); + else if(m_model->currentIndex() >= 2 && m_model->track(m_model->currentIndex() - 2)) + return m_model->setCurrent(m_model->currentIndex() - 2); + return false; } int NormalPlayState::nextIndex() { - int itm_count = m_model->items().count(); - if(!itm_count) + int item_count = m_model->items().count(); + if(!item_count) return -1; - if (m_model->currentIndex() == itm_count - 1) + if (m_model->currentIndex() == item_count - 1) { if (m_model->isRepeatableList()) return 0; else return -1; } - return m_model->currentIndex() + 1; + if(m_model->track(m_model->currentIndex() + 1)) + return m_model->currentIndex() + 1; + else if(m_model->currentIndex() + 2 >= m_model->count()) + return -1; + else if(m_model->track(m_model->currentIndex() + 2)) + return m_model->currentIndex() + 2; + return -1; } |
