aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playstate.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-05 11:50:37 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-05 11:50:37 +0000
commit245d0ac0cdb729c94ca71dc035342154d70aa8e5 (patch)
treef908567eb29ddba73c36e82511605d3635a897e8 /src/qmmpui/playstate.cpp
parentd04ab1bfe9a70049e0c9ee753835c95a6ccf2086 (diff)
downloadqmmp-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.cpp67
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;
}