diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-12-15 09:55:53 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-12-15 09:55:53 +0000 |
| commit | 3a965fcd45d585c7e49afcc4b0d2e2d6ef8fe1f5 (patch) | |
| tree | d9ff3cd9621804632dca6001ad20ffb5f52de3f8 /src/qmmpui/playlistmanager.cpp | |
| parent | f31d9ccf3dda970ce2f4139a8c2ab205759c5523 (diff) | |
| download | qmmp-3a965fcd45d585c7e49afcc4b0d2e2d6ef8fe1f5.tar.gz qmmp-3a965fcd45d585c7e49afcc4b0d2e2d6ef8fe1f5.tar.bz2 qmmp-3a965fcd45d585c7e49afcc4b0d2e2d6ef8fe1f5.zip | |
added playlists auto-save feauture (patch by Ferdinand Vesely) (Closes
issue 536), changed playlist api
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3063 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistmanager.cpp')
| -rw-r--r-- | src/qmmpui/playlistmanager.cpp | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp index 59b865078..cc98ae8f7 100644 --- a/src/qmmpui/playlistmanager.cpp +++ b/src/qmmpui/playlistmanager.cpp @@ -22,8 +22,10 @@ #include <QFile> #include <QBuffer> #include <QDir> +#include <QTimer> #include <QSettings> #include <qmmp/fileinfo.h> +#include "qmmpuisettings.h" #include "playlistmanager.h" @@ -38,10 +40,18 @@ PlayListManager::PlayListManager(QObject *parent) : QObject(parent) m_selected = 0; m_repeatable = false; m_shuffle = false; - readPlayLists(); + m_timer = new QTimer(this); + m_timer->setInterval(5000); + m_timer->setSingleShot(true); + QmmpUiSettings *ui_settings = QmmpUiSettings::instance(); + connect(ui_settings, SIGNAL(playListSettingsChanged()), SLOT(readSettings())); + connect(m_timer, SIGNAL(timeout()), SLOT(writePlayLists())); + readPlayLists(); //read playlists + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); setRepeatableList(settings.value("Playlist/repeatable",false).toBool()); setShuffle(settings.value("Playlist/shuffle",false).toBool()); + readSettings(); //read other settings } PlayListManager::~PlayListManager() @@ -58,7 +68,6 @@ PlayListManager* PlayListManager::instance() return m_instance; } - PlayListModel *PlayListManager::selectedPlayList() const { return m_selected; @@ -171,6 +180,8 @@ PlayListModel *PlayListManager::createPlayList(const QString &name) model->prepareForRepeatablePlaying(m_repeatable); model->prepareForShufflePlaying(m_shuffle); connect(model, SIGNAL(nameChanged(QString)), SIGNAL(playListsChanged())); + if (m_autosave_playlist) + connect(model, SIGNAL(countChanged()), m_timer, SLOT(start())); emit playListAdded(m_models.indexOf(model)); emit playListsChanged(); return model; @@ -348,14 +359,19 @@ void PlayListManager::readPlayLists() void PlayListManager::writePlayLists() { + qDebug("PlayListManager: saving playlists..."); QFile file(QDir::homePath() +"/.qmmp/playlist.txt"); - file.open(QIODevice::WriteOnly); + if(!file.open(QIODevice::WriteOnly)) + { + qDebug("PlayListManager: error: %s", qPrintable(file.errorString())); + return; + } file.write(QString("current_playlist=%1\n").arg(m_models.indexOf(m_current)).toUtf8()); foreach(PlayListModel *model, m_models) { QList<PlayListItem *> items = model->items(); file.write(QString("playlist=%1\n").arg(model->name()).toUtf8()); - file.write(QString("current=%1\n").arg(model->currentRow()).toUtf8()); + file.write(QString("current=%1\n").arg(model->currentIndex()).toUtf8()); foreach(PlayListItem* m, items) { file.write(QString("file=%1\n").arg(m->url()).toUtf8()); @@ -468,3 +484,32 @@ void PlayListManager::stopAfterSelected() { m_selected->stopAfterSelected(); } + +void PlayListManager::readSettings() +{ + QmmpUiSettings *ui_settings = QmmpUiSettings::instance(); + bool enabled = ui_settings->autoSavePlayList(); + if (m_autosave_playlist != enabled) + { + m_autosave_playlist = enabled; + setAutoSavePlayList(); + } +} + +void PlayListManager::setAutoSavePlayList() +{ + if (m_autosave_playlist) + { + foreach(PlayListModel *model, m_models) + { + connect(model, SIGNAL(countChanged()), m_timer, SLOT(start()), Qt::UniqueConnection); + } + } + else + { + foreach(PlayListModel *model, m_models) + { + disconnect(model, SIGNAL(countChanged()), m_timer, SLOT(start())); + } + } +} |
