[vlc-commits] qt/playlist_controller: Add the 'insert' function

Benjamin Arnaud git at videolan.org
Mon Mar 15 10:34:51 UTC 2021


vlc | branch: master | Benjamin Arnaud <benjamin.arnaud at videolabs.io> | Thu Mar 11 10:16:49 2021 +0100| [cd305426edd043c758e18ea261656a6edc74c6c2] | committer: Pierre Lamot

qt/playlist_controller: Add the 'insert' function

Signed-off-by: Pierre Lamot <pierre at videolabs.io>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cd305426edd043c758e18ea261656a6edc74c6c2
---

 modules/gui/qt/playlist/playlist_controller.cpp | 19 +++++++++++++++++++
 modules/gui/qt/playlist/playlist_controller.hpp |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/modules/gui/qt/playlist/playlist_controller.cpp b/modules/gui/qt/playlist/playlist_controller.cpp
index 671d98df2e..1d4f3da36c 100644
--- a/modules/gui/qt/playlist/playlist_controller.cpp
+++ b/modules/gui/qt/playlist/playlist_controller.cpp
@@ -24,6 +24,7 @@
 #include "playlist_controller_p.hpp"
 #include "vlc_player.h"
 #include "vlc_url.h"
+#include "util/qmlinputitem.hpp"
 #include <algorithm>
 #include <QVariant>
 #include <QDesktopServices>
@@ -441,6 +442,24 @@ PlaylistControllerModel::remove(const QVector<PlaylistItem> &items, ssize_t inde
         throw std::bad_alloc();
 }
 
+void
+PlaylistControllerModel::insert(int index, const QVariantList & items)
+{
+    QVector<vlc::playlist::Media> medias;
+
+    for (const QVariant & variant : items)
+    {
+        if (variant.canConvert<QmlInputItem>() == false)
+            continue;
+
+        const QmlInputItem & item = variant.value<QmlInputItem>();
+
+        medias.push_back(vlc::playlist::Media(item.item.get()));
+    }
+
+    insert(index, medias, false);
+}
+
 void
 PlaylistControllerModel::shuffle()
 {
diff --git a/modules/gui/qt/playlist/playlist_controller.hpp b/modules/gui/qt/playlist/playlist_controller.hpp
index 27e37c1082..5f069bd600 100644
--- a/modules/gui/qt/playlist/playlist_controller.hpp
+++ b/modules/gui/qt/playlist/playlist_controller.hpp
@@ -112,6 +112,8 @@ public:
     void move(const QVector<PlaylistItem> &, size_t target, ssize_t indexHint);
     void remove(const QVector<PlaylistItem> &, ssize_t indexHint);
 
+    Q_INVOKABLE void insert(int index, const QVariantList & items /* QList<QmlInputItem> */);
+
     Q_INVOKABLE void shuffle();
     void sort(const QVector<vlc_playlist_sort_criterion> &);
 



More information about the vlc-commits mailing list