diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-11-20 11:57:25 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-11-20 11:57:25 +0000 |
| commit | 7b5e9960a11f35b3792d3417557fef5abc1ca876 (patch) | |
| tree | 69ee9a72fabbcf169d1b4b2eb7f3051d6c0d3e81 /src/qmmpui | |
| parent | 025f0783a5bdc1fffb6dbf6149ca0bb68f12f12f (diff) | |
| download | qmmp-7b5e9960a11f35b3792d3417557fef5abc1ca876.tar.gz qmmp-7b5e9960a11f35b3792d3417557fef5abc1ca876.tar.bz2 qmmp-7b5e9960a11f35b3792d3417557fef5abc1ca876.zip | |
prepare for insert functions impelementation
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3918 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
| -rw-r--r-- | src/qmmpui/groupedcontainer.cpp | 18 | ||||
| -rw-r--r-- | src/qmmpui/groupedcontainer_p.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/normalcontainer.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/normalcontainer_p.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/playlistcontainer_p.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/playlistgroup.cpp | 5 | ||||
| -rw-r--r-- | src/qmmpui/playlistgroup.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 75 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 24 |
9 files changed, 132 insertions, 2 deletions
diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp index 73d7fe3a6..4a6bc4019 100644 --- a/src/qmmpui/groupedcontainer.cpp +++ b/src/qmmpui/groupedcontainer.cpp @@ -68,6 +68,24 @@ void GroupedContainer::addTrack(PlayListTrack *track) addGroup(group); } +void GroupedContainer::insertTrack(int index, PlayListTrack *track) +{ + //insert if possible + foreach(PlayListGroup *group, m_groups) + { + if(track->groupName() == group->formattedTitle() && + index > group->firstIndex && index <= group->lastIndex + 1) + { + group->insertTrack(index - group->firstIndex - 1, track); + m_items.insert(index, track); + updateIndex(); + return; + } + } + //just add otherwise + addTrack(track); +} + QList<PlayListGroup *> GroupedContainer::groups() { return m_groups; diff --git a/src/qmmpui/groupedcontainer_p.h b/src/qmmpui/groupedcontainer_p.h index 86357de8c..765249b0e 100644 --- a/src/qmmpui/groupedcontainer_p.h +++ b/src/qmmpui/groupedcontainer_p.h @@ -35,6 +35,7 @@ public: virtual ~GroupedContainer(); void addTrack(PlayListTrack *track); + void insertTrack(int index, PlayListTrack *track); QList<PlayListGroup *> groups(); QList<PlayListItem *> items() const; int count() const; diff --git a/src/qmmpui/normalcontainer.cpp b/src/qmmpui/normalcontainer.cpp index 3cd8fa07b..665f19e91 100644 --- a/src/qmmpui/normalcontainer.cpp +++ b/src/qmmpui/normalcontainer.cpp @@ -35,6 +35,14 @@ void NormalContainer::addTrack(PlayListTrack *track) m_items.append(track); } +void NormalContainer::insertTrack(int index, PlayListTrack *track) +{ + if(index >= 0 && index < m_items.count()) + m_items.insert(index, track); + else + m_items.append(track); +} + QList<PlayListGroup *> NormalContainer::groups() { return QList<PlayListGroup *>(); diff --git a/src/qmmpui/normalcontainer_p.h b/src/qmmpui/normalcontainer_p.h index f64787cb5..56d53b3f9 100644 --- a/src/qmmpui/normalcontainer_p.h +++ b/src/qmmpui/normalcontainer_p.h @@ -35,6 +35,7 @@ public: virtual ~NormalContainer(); void addTrack(PlayListTrack *item); + void insertTrack(int index, PlayListTrack *track); QList<PlayListGroup *> groups(); QList<PlayListItem *> items() const; int count() const; diff --git a/src/qmmpui/playlistcontainer_p.h b/src/qmmpui/playlistcontainer_p.h index 9710585aa..1243f5f0b 100644 --- a/src/qmmpui/playlistcontainer_p.h +++ b/src/qmmpui/playlistcontainer_p.h @@ -40,6 +40,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<PlayListItem *> items() const = 0; virtual int count() const = 0; diff --git a/src/qmmpui/playlistgroup.cpp b/src/qmmpui/playlistgroup.cpp index e8ee11096..3951fd035 100644 --- a/src/qmmpui/playlistgroup.cpp +++ b/src/qmmpui/playlistgroup.cpp @@ -59,6 +59,11 @@ void PlayListGroup::addTracks(QList<PlayListTrack *> tracks) m_tracks.append(tracks); } +void PlayListGroup::insertTrack(int pos, PlayListTrack *track) +{ + m_tracks.insert(pos, track); +} + bool PlayListGroup::contains(PlayListTrack *track) const { return m_tracks.contains(track); diff --git a/src/qmmpui/playlistgroup.h b/src/qmmpui/playlistgroup.h index 11e638744..dbd21b806 100644 --- a/src/qmmpui/playlistgroup.h +++ b/src/qmmpui/playlistgroup.h @@ -37,6 +37,7 @@ public: const QString formattedTitle(); void addTrack(PlayListTrack *track); void addTracks(QList<PlayListTrack *> tracks); + void insertTrack(int pos, PlayListTrack *track); bool contains(PlayListTrack *track) const; bool isEmpty() const; void remove(PlayListTrack *track); diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index bcf7dc554..b923a9848 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -51,6 +51,8 @@ PlayListModel::PlayListModel(const QString &name, QObject *parent) m_container = new NormalContainer; connect(m_loader, SIGNAL(newPlayListTrack(PlayListTrack*)), SLOT(add(PlayListTrack*)), Qt::QueuedConnection); + connect(m_loader, SIGNAL(newPlayListTrack(int, PlayListTrack*)), + SLOT(insert(int, PlayListTrack*)), Qt::QueuedConnection); connect(m_loader, SIGNAL(finished()), SLOT(preparePlayState())); connect(m_loader, SIGNAL(finished()), SIGNAL(loaderFinished())); } @@ -114,6 +116,11 @@ void PlayListModel::add(QList<PlayListTrack *> tracks) m_current = m_container->indexOf(track); emit currentChanged(); } + else if(m_groups_enabled) + { + //update current index for grouped container only + m_current = m_container->indexOf(m_current_track); + } emit trackAdded(track); } preparePlayState(); @@ -141,6 +148,74 @@ void PlayListModel::add(const QStringList &paths) } } +void PlayListModel::insert(int index, PlayListTrack *track) +{ + m_container->insertTrack(index, track); + m_total_length += track->length(); + + if(m_container->trackCount() == 1) + { + m_current_track = track; + m_current = m_container->indexOf(track); + emit currentChanged(); + } + else + { + //update current index + m_current = m_container->indexOf(m_current_track); + } + emit trackAdded(track); + emit listChanged(); + emit countChanged(); +} + +void PlayListModel::insert(int index, QList<PlayListTrack *> tracks) +{ + if(tracks.isEmpty()) + return; + + PlayListItem *prevItem = m_container->item(index); + foreach(PlayListTrack *track, tracks) + { + m_container->insertTrack(index, track); + index = prevItem ? m_container->indexOf(prevItem) : m_container->count(); + + m_total_length += track->length(); + if(m_container->trackCount() == 1) + { + m_current_track = track; + m_current = m_container->indexOf(track); + emit currentChanged(); + } + emit trackAdded(track); + } + //update current index + m_current = m_container->indexOf(m_current_track); + preparePlayState(); + emit listChanged(); + emit countChanged(); +} + +void PlayListModel::insert(int index, const QString &path) +{ + /*QFileInfo f_info(path); + if (f_info.isDir()) + m_loader->loadDirectory(path); + else + { + m_loader->loadFile(path); + loadPlaylist(path); + }*/ +} + +void PlayListModel::insert(int index, const QStringList &paths) +{ + /*foreach(QString str, paths) + { + add(str); + }*/ +} + int PlayListModel::count() const { return m_container->count(); diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 002ed5a4c..ce63a8157 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -311,9 +311,9 @@ signals: public slots: /*! - * Adds \b item to the playlist. + * Adds \b track to the playlist. */ - void add(PlayListTrack *item); + void add(PlayListTrack *track); /*! * Adds a list of items to the playlist. * @param items List of items. @@ -330,6 +330,26 @@ public slots: */ void add(const QStringList &paths); /*! + * Inserts \b track at index position \b index in the playlist. + */ + void insert(int index, PlayListTrack *track); + /*! + * Inserts \b tracks at index position \b index in the playlist. + */ + void insert(int index, QList <PlayListTrack *> tracks); + /*! + * Inserts file or directory at index position \b index in the playlist. + * @param path Full path of file or directory. + * @param index Position in the playlist. + */ + void insert(int index, const QString &path); + /*! + * Adds a list of files and directories at index position \b index in the playlist. + * @param paths Full paths of files and directories. + * @param index Position in the playlist. + */ + void insert(int index, const QStringList &paths); + /*! * Removes all items. */ void clear(); |
