From e6223d1c69fbf1484f7fa29dd5f41da03e0313d4 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 24 Aug 2007 13:36:32 +0000 Subject: added current song saving git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@124 90c681e8-e032-0410-971d-27865f9a5e38 --- src/playlistmodel.cpp | 59 +++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/playlistmodel.cpp b/src/playlistmodel.cpp index 0ac906383..4b35007ea 100644 --- a/src/playlistmodel.cpp +++ b/src/playlistmodel.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include @@ -102,7 +103,7 @@ MediaFile* PlayListModel::currentItem() if ( m_files.isEmpty() ) return 0; else - return m_files.at ( m_current ); + return m_files.at ( qMin(m_files.size() - 1, m_current)); } int PlayListModel::currentRow() @@ -188,16 +189,16 @@ QList PlayListModel::getTimes ( int b,int l ) bool PlayListModel::isSelected ( int row ) { - if(m_files.count() > row && row >= 0) - return m_files.at ( row )->isSelected(); - - return false; + if (m_files.count() > row && row >= 0) + return m_files.at ( row )->isSelected(); + + return false; } void PlayListModel::setSelected ( int row, bool yes ) { - if(m_files.count() > row && row >= 0) - m_files.at ( row )->setSelected ( yes ); + if (m_files.count() > row && row >= 0) + m_files.at ( row )->setSelected ( yes ); } void PlayListModel::removeSelected() @@ -238,7 +239,7 @@ void PlayListModel::removeSelection(bool inverted) if (!m_files.isEmpty()) m_currentItem = m_files.at(m_current); - if(select_after_delete >= m_files.count()) + if (select_after_delete >= m_files.count()) select_after_delete = m_files.count() - 1; setSelected(select_after_delete,true); @@ -281,6 +282,9 @@ void PlayListModel::showDetails() void PlayListModel::readSettings() { + QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); + m_current = settings.value("Playlist/current",0).toInt(); + QFile file ( QDir::homePath() +"/.qmmp/playlist.txt" ); file.open ( QIODevice::ReadOnly ); @@ -296,18 +300,21 @@ void PlayListModel::readSettings() file.close (); + if(m_current > files.count() - 1) + m_current = 0; + int preload = (files.count() < 100) ? files.count() : 100; for (int i = 0;i < preload;i++) - { + { load(new MediaFile(files.takeAt(0))); - } + } if (files.isEmpty()) - return; + return; - FileLoader* f_loader = createFileLoader(); + FileLoader* f_loader = createFileLoader(); f_loader->setFilesToLoad(files); //f_loader->start(QThread::IdlePriority); @@ -322,13 +329,15 @@ void PlayListModel::writeSettings() foreach ( MediaFile* m, m_files ) file.write ( m->path().toUtf8 () +"\n" ); file.close (); + QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); + settings.setValue("Playlist/current", m_current); } void PlayListModel::addFile(const QString& path) { if (path.isEmpty ()) return; - if(path.startsWith("http://")) + if (path.startsWith("http://")) load(new MediaFile(path)); else if (Decoder::supports(path)) load(new MediaFile(path)); @@ -528,24 +537,24 @@ void PlayListModel::addToQueue() QList selected_items = getSelectedItems(); foreach(MediaFile* file,selected_items) {/* - if (isQueued(file)) - m_queued_songs.removeAt(m_queued_songs.indexOf(file)); - else - m_queued_songs.append(file); - */ - setQueued(file); + if (isQueued(file)) + m_queued_songs.removeAt(m_queued_songs.indexOf(file)); + else + m_queued_songs.append(file); + */ + setQueued(file); } emit listChanged(); } void PlayListModel::setQueued(MediaFile* file) { - if (isQueued(file)) - m_queued_songs.removeAt(m_queued_songs.indexOf(file)); - else - m_queued_songs.append(file); - - emit listChanged(); + if (isQueued(file)) + m_queued_songs.removeAt(m_queued_songs.indexOf(file)); + else + m_queued_songs.append(file); + + emit listChanged(); } bool PlayListModel::isQueued(MediaFile* f) const -- cgit v1.2.3-13-gbd6f