diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-11-14 11:26:33 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-11-14 11:26:33 +0000 |
| commit | 206f17df1a4ab98f94fc84eb77622273bdcceca2 (patch) | |
| tree | 77fb7ba3619cc6ff794734342ad0cb5971cd7a4b /src/qmmpui/playlistmanager.cpp | |
| parent | ed4aaaabb18f8a4f2927c81939a690ebe93256ce (diff) | |
| download | qmmp-206f17df1a4ab98f94fc84eb77622273bdcceca2.tar.gz qmmp-206f17df1a4ab98f94fc84eb77622273bdcceca2.tar.bz2 qmmp-206f17df1a4ab98f94fc84eb77622273bdcceca2.zip | |
fixed some bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1368 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistmanager.cpp')
| -rw-r--r-- | src/qmmpui/playlistmanager.cpp | 98 |
1 files changed, 61 insertions, 37 deletions
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp index bb4f10ebe..280de012c 100644 --- a/src/qmmpui/playlistmanager.cpp +++ b/src/qmmpui/playlistmanager.cpp @@ -222,8 +222,17 @@ void PlayListManager::setUseMetadata(bool yes) void PlayListManager::setFormat(const QString &format) { - PlaylistSettings::instance()->setFormat(format); - emit settingsChanged(); + if(format != PlaylistSettings::instance()->format()) + { + PlaylistSettings::instance()->setFormat(format); + emit settingsChanged(); + foreach(PlayListModel *model, m_models) + { + foreach(PlayListItem *item, model->items()) + item->setText(QString()); + model->doCurrentVisibleRequest(); + } + } } bool PlayListManager::isRepeatableList() const @@ -239,8 +248,8 @@ bool PlayListManager::isShuffle() const void PlayListManager::readPlayLists() { QString line, param, value; - int s; - QList <FileInfo *> infoList; + int s = 0, row = 0, pl = 0; + QList <PlayListItem *> items; QFile file(QDir::homePath() +"/.qmmp/playlist.txt"); file.open(QIODevice::ReadOnly); QByteArray array = file.readAll(); @@ -257,74 +266,89 @@ void PlayListManager::readPlayLists() param = line.left(s); value = line.right(line.size() - s - 1); - if(param == "playlist") + if(param == "current_playlist") + pl = value.toInt(); + else if(param == "playlist") { + if(!m_models.isEmpty()) { - foreach(FileInfo *info, infoList) - m_models.last()->add(new PlayListItem(info)); + m_models.last()->add(items); + m_models.last()->setCurrent(row); } - infoList.clear(); + items.clear(); + row = 0; m_models << new PlayListModel(value, this); } + else if (param == "current") + { + row = value.toInt(); + } else if (param == "file") - infoList << new FileInfo(value); - else if (infoList.isEmpty()) + { + items << new PlayListItem(); + items.last()->setMetaData(Qmmp::URL, value); + } + else if (items.isEmpty()) continue; else if (param == "title") - infoList.last()->setMetaData(Qmmp::TITLE, value); + items.last()->setMetaData(Qmmp::TITLE, value); else if (param == "artist") - infoList.last()->setMetaData(Qmmp::ARTIST, value); + items.last()->setMetaData(Qmmp::ARTIST, value); else if (param == "album") - infoList.last()->setMetaData(Qmmp::ALBUM, value); + items.last()->setMetaData(Qmmp::ALBUM, value); else if (param == "comment") - infoList.last()->setMetaData(Qmmp::COMMENT, value); + items.last()->setMetaData(Qmmp::COMMENT, value); else if (param == "genre") - infoList.last()->setMetaData(Qmmp::GENRE, value); + items.last()->setMetaData(Qmmp::GENRE, value); else if (param == "composer") - infoList.last()->setMetaData(Qmmp::COMPOSER, value); + items.last()->setMetaData(Qmmp::COMPOSER, value); else if (param == "year") - infoList.last()->setMetaData(Qmmp::YEAR, value); + items.last()->setMetaData(Qmmp::YEAR, value); else if (param == "track") - infoList.last()->setMetaData(Qmmp::TRACK, value); + items.last()->setMetaData(Qmmp::TRACK, value); else if (param == "disc") - infoList.last()->setMetaData(Qmmp::DISCNUMBER, value); + items.last()->setMetaData(Qmmp::DISCNUMBER, value); else if (param == "length") - infoList.last()->setLength(value.toInt()); + items.last()->setLength(value.toInt()); } buffer.close(); if(!m_models.isEmpty()) { - foreach(FileInfo *info, infoList) - m_models.last()->add(new PlayListItem(info)); + m_models.last()->add(items); + m_models.last()->setCurrent(row); } else - m_models << new PlayListModel("Default",this); - m_selected = m_models.at(0); - m_current = m_models.at(0); + m_models << new PlayListModel(tr("Playlist"),this); + if(pl < 0 || pl >= m_models.count()) + pl = 0; + m_selected = m_models.at(pl); + m_current = m_models.at(pl); } void PlayListManager::writePlayLists() { QFile file(QDir::homePath() +"/.qmmp/playlist.txt"); file.open(QIODevice::WriteOnly); + 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").arg(model->name()).toUtf8() +"\n"); + file.write(QString("playlist=%1\n").arg(model->name()).toUtf8()); + file.write(QString("current=%1\n").arg(model->currentRow()).toUtf8()); foreach(PlayListItem* m, items) { - file.write(QString("file=%1").arg(m->url()).toUtf8() +"\n"); - file.write(QString("title=%1").arg(m->title()).toUtf8() +"\n"); - file.write(QString("artist=%1").arg(m->artist()).toUtf8() +"\n"); - file.write(QString("album=%1").arg(m->album()).toUtf8() +"\n"); - file.write(QString("comment=%1").arg(m->comment()).toUtf8() +"\n"); - file.write(QString("genre=%1").arg(m->genre()).toUtf8() +"\n"); - file.write(QString("composer=%1").arg(m->composer()).toUtf8() +"\n"); - file.write(QString("year=%1").arg(m->year()).toUtf8() +"\n"); - file.write(QString("track=%1").arg(m->track()).toUtf8() +"\n"); - file.write(QString("disc=%1").arg(m->discNumber()).toUtf8() +"\n"); - file.write(QString("length=%1").arg(m->length()).toUtf8() +"\n"); + file.write(QString("file=%1\n").arg(m->url()).toUtf8()); + file.write(QString("title=%1\n").arg(m->title()).toUtf8()); + file.write(QString("artist=%1\n").arg(m->artist()).toUtf8()); + file.write(QString("album=%1\n").arg(m->album()).toUtf8()); + file.write(QString("comment=%1\n").arg(m->comment()).toUtf8()); + file.write(QString("genre=%1\n").arg(m->genre()).toUtf8()); + file.write(QString("composer=%1\n").arg(m->composer()).toUtf8()); + file.write(QString("year=%1\n").arg(m->year()).toUtf8()); + file.write(QString("track=%1\n").arg(m->track()).toUtf8()); + file.write(QString("disc=%1\n").arg(m->discNumber()).toUtf8()); + file.write(QString("length=%1\n").arg(m->length()).toUtf8()); } } file.close(); |
