From ae16fa17daef6113d0dca053f083ab41f329d8f5 Mon Sep 17 00:00:00 2001 From: vovanec Date: Sun, 24 Jun 2007 17:15:50 +0000 Subject: added fix for selection git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@16 90c681e8-e032-0410-971d-27865f9a5e38 --- src/playlistmodel.cpp | 45 ++++++++++++++++++++------------------------- src/playlistmodel.h | 6 ++++++ 2 files changed, 26 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/playlistmodel.cpp b/src/playlistmodel.cpp index f50eca956..801614fd7 100644 --- a/src/playlistmodel.cpp +++ b/src/playlistmodel.cpp @@ -202,37 +202,23 @@ void PlayListModel::setSelected ( int row, bool yes ) void PlayListModel::removeSelected() { - int i = 0; - while ( !m_files.isEmpty() && iisSelected() ) - { - MediaFile* f = m_files.takeAt ( i ); - m_total_length -= f->length(); - if (m_total_length < 0) - m_total_length = 0; - delete f; - - if ( m_current >= i && m_current!=0 ) - m_current--; - } - else - i++; - } - if (!m_files.isEmpty()) - m_currentItem = m_files.at(m_current); - - m_play_state->prepare(); - - emit listChanged(); + removeSelection(false); } void PlayListModel::removeUnselected() +{ + removeSelection(true); +} + +void PlayListModel::removeSelection(bool inverted) { int i = 0; - while ( !m_files.isEmpty() &&iisSelected() ) + if ( m_files.at ( i )->isSelected() ^ inverted ) { MediaFile* f = m_files.takeAt ( i ); m_total_length -= f->length(); @@ -240,6 +226,8 @@ void PlayListModel::removeUnselected() m_total_length = 0; delete f; + select_after_delete = i; + if ( m_current >= i && m_current!=0 ) m_current--; } @@ -250,6 +238,11 @@ void PlayListModel::removeUnselected() if (!m_files.isEmpty()) m_currentItem = m_files.at(m_current); + if(select_after_delete >= m_files.count()) + select_after_delete = m_files.count() - 1; + + setSelected(select_after_delete,true); + m_play_state->prepare(); emit listChanged(); @@ -819,3 +812,5 @@ void PlayListModel::preparePlayState() + + diff --git a/src/playlistmodel.h b/src/playlistmodel.h index 8b520f7c0..10285ba30 100644 --- a/src/playlistmodel.h +++ b/src/playlistmodel.h @@ -279,6 +279,12 @@ private: * Is someone of file loaders is running? */ bool isFileLoaderRunning()const; + + /*! + * Removes items from model. If \b inverted is \b false - + * selected items will be removed, else - unselected. + */ + void removeSelection(bool inverted = false); private: QList m_files; -- cgit v1.2.3-13-gbd6f