diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-10-18 08:00:28 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-10-18 08:00:28 +0000 |
| commit | 176523a606494a1d8cfe7a692ee564785d1b2101 (patch) | |
| tree | b8c74561f0546b70fb41e3c2d6c2e0cd120aa78c | |
| parent | 8ec16545513c4bccb0ff116a1105b55499de8356 (diff) | |
| download | qmmp-176523a606494a1d8cfe7a692ee564785d1b2101.tar.gz qmmp-176523a606494a1d8cfe7a692ee564785d1b2101.tar.bz2 qmmp-176523a606494a1d8cfe7a692ee564785d1b2101.zip | |
playlist: added feature to find track by number
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4585 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/General/mpris/mpris1/tracklistobject.cpp | 18 | ||||
| -rw-r--r-- | src/qmmpui/groupedcontainer.cpp | 18 | ||||
| -rw-r--r-- | src/qmmpui/groupedcontainer_p.h | 5 | ||||
| -rw-r--r-- | src/qmmpui/normalcontainer.cpp | 11 | ||||
| -rw-r--r-- | src/qmmpui/normalcontainer_p.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/playlistcontainer_p.h | 5 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 5 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 2 |
8 files changed, 42 insertions, 25 deletions
diff --git a/src/plugins/General/mpris/mpris1/tracklistobject.cpp b/src/plugins/General/mpris/mpris1/tracklistobject.cpp index 23740ff81..2cef4a8c7 100644 --- a/src/plugins/General/mpris/mpris1/tracklistobject.cpp +++ b/src/plugins/General/mpris/mpris1/tracklistobject.cpp @@ -57,9 +57,6 @@ int TrackListObject::AddTrack(const QString &in0, bool in1) m_pl_manager->selectPlayList(m_model); m_player->stop(); connect(m_model, SIGNAL(trackAdded(PlayListTrack*)), SLOT(playTrack(PlayListTrack*))); - /*m_prev_count = m_model->count(); - connect(m_model, SIGNAL(listChanged()), this, SLOT(checkNewItem())); - connect(m_model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl()));*/ } m_model->add(path); return 0; @@ -83,20 +80,7 @@ int TrackListObject::GetLength() QVariantMap TrackListObject::GetMetadata(int in0) { QVariantMap map; - PlayListTrack *track = 0; - int track_counter = 0; - for(int i = 0; i <m_model->count(); i++) - { - if(m_model->isTrack(i)) - track_counter++; - else - continue; - if(track_counter - 1 == in0) - { - track = m_model->track(i); - break; - } - } + PlayListTrack *track = m_model->findTrack(in0); if (track) { diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp index 4c2849cd0..aebd9f22c 100644 --- a/src/qmmpui/groupedcontainer.cpp +++ b/src/qmmpui/groupedcontainer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * + * Copyright (C) 2013-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -86,7 +86,7 @@ void GroupedContainer::insertTrack(int index, PlayListTrack *track) addTrack(track); } -QList<PlayListGroup *> GroupedContainer::groups() +QList<PlayListGroup *> GroupedContainer::groups() const { return m_groups; } @@ -185,6 +185,20 @@ int GroupedContainer::numberOfTrack(int index) const return -1; } +PlayListTrack *GroupedContainer::findTrack(int number) const +{ + int firstNumber = 0; + foreach (PlayListGroup *group, m_groups) + { + if(number >= firstNumber && number < firstNumber + group->count()) + { + return group->tracks().at(number - firstNumber); + } + firstNumber += group->count(); + } + return 0; +} + void GroupedContainer::removeTrack(int index) { PlayListTrack *t = track(index); diff --git a/src/qmmpui/groupedcontainer_p.h b/src/qmmpui/groupedcontainer_p.h index 765249b0e..642eba4b3 100644 --- a/src/qmmpui/groupedcontainer_p.h +++ b/src/qmmpui/groupedcontainer_p.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * + * Copyright (C) 2013-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -36,7 +36,7 @@ public: void addTrack(PlayListTrack *track); void insertTrack(int index, PlayListTrack *track); - QList<PlayListGroup *> groups(); + QList<PlayListGroup *> groups() const; QList<PlayListItem *> items() const; int count() const; int trackCount() const; @@ -51,6 +51,7 @@ public: PlayListGroup *group(int index) const; bool contains(PlayListItem *item) const; int numberOfTrack(int index) const; + PlayListTrack *findTrack(int number) const; void removeTrack(int index); void removeTrack(PlayListTrack *track); void removeTracks(QList<PlayListTrack *> tracks); diff --git a/src/qmmpui/normalcontainer.cpp b/src/qmmpui/normalcontainer.cpp index 665f19e91..0bcba32e5 100644 --- a/src/qmmpui/normalcontainer.cpp +++ b/src/qmmpui/normalcontainer.cpp @@ -43,7 +43,7 @@ void NormalContainer::insertTrack(int index, PlayListTrack *track) m_items.append(track); } -QList<PlayListGroup *> NormalContainer::groups() +QList<PlayListGroup *> NormalContainer::groups() const { return QList<PlayListGroup *>(); } @@ -131,6 +131,15 @@ int NormalContainer::numberOfTrack(int index) const return index; } +PlayListTrack *NormalContainer::findTrack(int number) const +{ + if(number >= count() || number < 0) + { + return 0; + } + return dynamic_cast<PlayListTrack *> (m_items.at(number)); +} + void NormalContainer::removeTrack(int index) { PlayListTrack *t = track(index); diff --git a/src/qmmpui/normalcontainer_p.h b/src/qmmpui/normalcontainer_p.h index 56d53b3f9..c57fce5ac 100644 --- a/src/qmmpui/normalcontainer_p.h +++ b/src/qmmpui/normalcontainer_p.h @@ -36,7 +36,7 @@ public: void addTrack(PlayListTrack *item); void insertTrack(int index, PlayListTrack *track); - QList<PlayListGroup *> groups(); + QList<PlayListGroup *> groups() const; QList<PlayListItem *> items() const; int count() const; int trackCount() const; @@ -51,6 +51,7 @@ public: PlayListGroup *group(int index) const; bool contains(PlayListItem *item) const; int numberOfTrack(int index) const; + PlayListTrack *findTrack(int number) const; void removeTrack(int index); void removeTrack(PlayListTrack *track); void removeTracks(QList<PlayListTrack *> tracks); diff --git a/src/qmmpui/playlistcontainer_p.h b/src/qmmpui/playlistcontainer_p.h index 1243f5f0b..46a5c8e9d 100644 --- a/src/qmmpui/playlistcontainer_p.h +++ b/src/qmmpui/playlistcontainer_p.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * + * Copyright (C) 2013-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -41,7 +41,7 @@ public: virtual void addTrack(PlayListTrack *track) = 0; void addTracks(QList<PlayListTrack *> tracks); virtual void insertTrack(int index, PlayListTrack *track) = 0; - virtual QList<PlayListGroup *> groups() = 0; + virtual QList<PlayListGroup *> groups() const = 0; virtual QList<PlayListItem *> items() const = 0; virtual int count() const = 0; virtual int trackCount() const = 0; @@ -56,6 +56,7 @@ public: virtual PlayListGroup *group(int index) const = 0; virtual bool contains(PlayListItem *item) const = 0; virtual int numberOfTrack(int index) const = 0; + virtual PlayListTrack *findTrack(int number) const = 0; virtual void removeTrack(int index) = 0; virtual void removeTrack(PlayListTrack *track) = 0; virtual void removeTracks(QList<PlayListTrack *> tracks) = 0; diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index b3118c62c..3dc90aee7 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -401,6 +401,11 @@ int PlayListModel::numberOfTrack(int index) const return m_container->numberOfTrack(index); } +PlayListTrack *PlayListModel::findTrack(int number) const +{ + return m_container->findTrack(number); +} + void PlayListModel::setSelected(int index, bool selected) { m_container->setSelected(index, selected); diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 49c3e0a6b..06333fb61 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -302,6 +302,8 @@ public: */ int numberOfTrack(int index) const; + PlayListTrack *findTrack(int number) const; + signals: /*! * Emitted when the state of PlayListModel has changed. |
