diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2007-08-24 13:36:32 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2007-08-24 13:36:32 +0000 |
| commit | e6223d1c69fbf1484f7fa29dd5f41da03e0313d4 (patch) | |
| tree | 94fea357d5704c330ca3ff30d68c93b7574dc144 /src | |
| parent | ff22edc1ed3cfa66c382b6c5b0a61ff0528a6d22 (diff) | |
| download | qmmp-e6223d1c69fbf1484f7fa29dd5f41da03e0313d4.tar.gz qmmp-e6223d1c69fbf1484f7fa29dd5f41da03e0313d4.tar.bz2 qmmp-e6223d1c69fbf1484f7fa29dd5f41da03e0313d4.zip | |
added current song saving
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@124 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/playlistmodel.cpp | 59 |
1 files changed, 34 insertions, 25 deletions
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 <QPluginLoader> #include <QApplication> #include <QTimer> +#include <QSettings> #include <time.h> @@ -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 <QString> 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<MediaFile*> 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 |
