diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-11-01 17:54:27 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-11-01 17:54:27 +0000 |
| commit | 24af8da3f8942c200ba0058341a66a888224aa3c (patch) | |
| tree | c01647eef52405ff06ed13e6d151b75cddde3834 /src/plugins/General/mpris | |
| parent | 15d744d752d16aa5621c98cd2de2d6ce3f6e6f46 (diff) | |
| download | qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.tar.gz qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.tar.bz2 qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.zip | |
changed playlist api, prepare for shortcut editor implementation, fixed direcory scan order (Closes issue 207)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1970 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/mpris')
| -rw-r--r-- | src/plugins/General/mpris/tracklistobject.cpp | 42 | ||||
| -rw-r--r-- | src/plugins/General/mpris/tracklistobject.h | 3 |
2 files changed, 35 insertions, 10 deletions
diff --git a/src/plugins/General/mpris/tracklistobject.cpp b/src/plugins/General/mpris/tracklistobject.cpp index 56562e8cc..a55f2c770 100644 --- a/src/plugins/General/mpris/tracklistobject.cpp +++ b/src/plugins/General/mpris/tracklistobject.cpp @@ -35,6 +35,7 @@ TrackListObject::TrackListObject(QObject *parent) : QObject(parent) connect (m_model, SIGNAL(listChanged()), SLOT(updateTrackList())); connect (m_pl_manager, SIGNAL(currentPlayListChanged(PlayListModel*,PlayListModel*)), SLOT(switchPlayList(PlayListModel*,PlayListModel*))); + m_prev_count = 0; } @@ -44,21 +45,25 @@ TrackListObject::~TrackListObject() int TrackListObject::AddTrack(const QString &in0, bool in1) { - int old_count = m_model->count(); + QString path = in0; if(in0.startsWith("file://")) - m_model->addFile(QUrl(in0).toLocalFile ()); //converts url to local file path - else - m_model->addFile(in0); - int new_count = m_model->count(); - if(new_count == old_count) - return 0; + { + path = QUrl(in0).toLocalFile (); + if(!QFile::exists(path)) + return 1; //error + } if(in1) { - m_model->setCurrent(new_count-1); + m_pl_manager->selectPlayList(m_model); m_player->stop(); - m_player->play(); + qDebug("1"); + m_prev_count = m_model->count(); + connect(m_model, SIGNAL(listChanged()), this, SLOT(checkNewItem())); + connect(m_model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl())); + qDebug("2"); } - return 1; + m_model->add(path); + return 0; } void TrackListObject::DelTrack(int in0) @@ -109,6 +114,22 @@ void TrackListObject::SetRandom(bool in0) m_pl_manager->setShuffle(in0); } +void TrackListObject::disconnectPl() +{ + disconnect(m_model, SIGNAL(listChanged()), this, SLOT(checkNewItem())); + disconnect(m_model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl())); +} + +void TrackListObject::checkNewItem() //checks for new item in playlist +{ + if(m_model->count() > m_prev_count) + { + disconnectPl(); //disconnect playlist; + m_model->setCurrent(m_prev_count); // activate first added item + m_player->play(); // ... and play it + } +} + void TrackListObject::updateTrackList() { emit TrackListChange(m_model->count()); @@ -116,6 +137,7 @@ void TrackListObject::updateTrackList() void TrackListObject::switchPlayList(PlayListModel *cur, PlayListModel *prev) { + disconnectPl(); m_model = cur; connect (m_model, SIGNAL(listChanged()), SLOT(updateTrackList())); if(prev) diff --git a/src/plugins/General/mpris/tracklistobject.h b/src/plugins/General/mpris/tracklistobject.h index 0004f25b9..eec9eda3c 100644 --- a/src/plugins/General/mpris/tracklistobject.h +++ b/src/plugins/General/mpris/tracklistobject.h @@ -54,6 +54,8 @@ signals: void TrackListChange(int in0); private slots: + void disconnectPl(); + void checkNewItem(); void updateTrackList(); void switchPlayList(PlayListModel *cur, PlayListModel *prev); @@ -61,6 +63,7 @@ private: PlayListModel *m_model; PlayListManager *m_pl_manager; MediaPlayer *m_player; + int m_prev_count; }; |
