diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-01-18 13:00:23 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-01-18 13:00:23 +0000 |
| commit | 9e379f3ee5febcb63182ad8902774e7d6761cfaf (patch) | |
| tree | 2b65db911be446a84d70480b45a222dd752e085f /src | |
| parent | cdd760219518207e90bf3db0a0415ed2c00bc2fc (diff) | |
| download | qmmp-9e379f3ee5febcb63182ad8902774e7d6761cfaf.tar.gz qmmp-9e379f3ee5febcb63182ad8902774e7d6761cfaf.tar.bz2 qmmp-9e379f3ee5febcb63182ad8902774e7d6761cfaf.zip | |
prepare for refresh playlist function
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6059 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmpui/playlistmanager.cpp | 5 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.h | 4 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 5 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 8 | ||||
| -rw-r--r-- | src/qmmpui/playlisttask.cpp | 38 | ||||
| -rw-r--r-- | src/qmmpui/playlisttask_p.h | 4 |
6 files changed, 61 insertions, 3 deletions
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp index edadbe5e4..26a3c828c 100644 --- a/src/qmmpui/playlistmanager.cpp +++ b/src/qmmpui/playlistmanager.cpp @@ -470,6 +470,11 @@ void PlayListManager::removeDuplicates() m_selected->removeDuplicates(); } +void PlayListManager::refresh() +{ + m_selected->refresh(); +} + void PlayListManager::clearQueue() { m_selected->clearQueue(); diff --git a/src/qmmpui/playlistmanager.h b/src/qmmpui/playlistmanager.h index 16f460716..f593dd4b0 100644 --- a/src/qmmpui/playlistmanager.h +++ b/src/qmmpui/playlistmanager.h @@ -233,6 +233,10 @@ public slots: */ void removeDuplicates(); /*! + * This is a convenience function and is the same as calling \b selectedPlayList()->refresh() + */ + void refresh(); + /*! * This is a convenience function and is the same as calling \b selectedPlayList()->clearQueue() */ void clearQueue(); diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 768dd6e36..fc8824fe4 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -977,6 +977,11 @@ void PlayListModel::removeDuplicates() m_task->removeDuplicates(m_container->tracks(), m_current_track); } +void PlayListModel::refresh() +{ + m_task->refresh(m_container->tracks(), m_current_track); +} + void PlayListModel::clearQueue() { m_queued_songs.clear(); diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index bc39fe2aa..f0f7f71da 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -495,14 +495,18 @@ public slots: */ void setQueued(PlayListTrack* item); /*! - * Removes invalid items from playlist + * Removes invalid tracks from playlist */ void removeInvalidTracks(); /*! - * Removes duplicate items by URL. + * Removes duplicate tracks by URL. */ void removeDuplicates(); /*! + * Removes invalid tracks and scans parent directories for the new files + */ + void refresh(); + /*! * Removes all items from queue. */ void clearQueue(); diff --git a/src/qmmpui/playlisttask.cpp b/src/qmmpui/playlisttask.cpp index a7b4448bd..9f92a1462 100644 --- a/src/qmmpui/playlisttask.cpp +++ b/src/qmmpui/playlisttask.cpp @@ -247,6 +247,27 @@ void PlayListTask::removeDuplicates(QList<PlayListTrack *> tracks, PlayListTrack start(); } +void PlayListTask::refresh(QList<PlayListTrack *> tracks, PlayListTrack *current_track) +{ + if(isRunning()) + return; + clear(); + m_task = REFRESH; + m_input_tracks = tracks; + m_tracks = tracks; + m_current_track = current_track; + + for(int i = 0; i < tracks.count(); ++i) + { + TrackField *f = new TrackField; + f->track = tracks[i]; + f->value = f->track->value(Qmmp::URL); + m_fields.append(f); + } + MetaDataManager::instance()->prepareForAnotherThread(); + start(); +} + void PlayListTask::run() { qDebug("PlayListTask: started"); @@ -360,6 +381,23 @@ void PlayListTask::run() } } } + else if(m_task == REFRESH) + { + TrackField *f = 0; + bool ok = false; + for(int i = 0; i < m_fields.count(); ++i) + { + f = m_fields.at(i); + + if(f->value.contains("://")) + ok = MetaDataManager::instance()->protocols().contains(f->value.section("://",0,0)); //url + else + ok = MetaDataManager::instance()->supports(f->value); //local file + + if(!ok) + m_indexes << i; + } + } qDebug("PlayListTask: finished"); } diff --git a/src/qmmpui/playlisttask_p.h b/src/qmmpui/playlisttask_p.h index e42d4ffce..ea5c214d0 100644 --- a/src/qmmpui/playlisttask_p.h +++ b/src/qmmpui/playlisttask_p.h @@ -44,7 +44,8 @@ public: SORT_SELECTION, REMOVE_INVALID, REMOVE_DUPLICATES, - SORT_BY_COLUMN + SORT_BY_COLUMN, + REFRESH }; explicit PlayListTask(QObject *parent); @@ -55,6 +56,7 @@ public: void sortByColumn(QList <PlayListTrack *> tracks, int column); void removeInvalidTracks(QList<PlayListTrack *> tracks, PlayListTrack *current_track); void removeDuplicates(QList<PlayListTrack *> tracks, PlayListTrack *current_track); + void refresh(QList<PlayListTrack *> tracks, PlayListTrack *current_track); void run(); |
