[vlc-commits] [Git][videolan/vlc][master] 4 commits: qt: make `MLPlaylistListModel::create()` use `MLPlaylistListModel::append()` for initial items
    Steve Lhomme (@robUx4) 
    gitlab at videolan.org
       
    Fri May 17 12:55:56 UTC 2024
    
    
  
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
9138c70e by Fatih Uzunoglu at 2024-05-17T12:37:36+00:00
qt: make `MLPlaylistListModel::create()` use `MLPlaylistListModel::append()` for initial items
Currently, the code is duplicated and only the `append()` path has
the functionality of supporting foreign items.
- - - - -
f113a23a by Fatih Uzunoglu at 2024-05-17T12:37:36+00:00
Revert "qt: use `QVector<SharedInputItem>` instead of `QVariantList` as `NetworkMediaModel::getItemsForIndexes()` return type"
This reverts commit 8b36c244517bca9c3d43adbb76b499690e646bcd.
- - - - -
9eee74e8 by Fatih Uzunoglu at 2024-05-17T12:37:36+00:00
Revert "qt: use `QVector<SharedInputItem>` instead of `QVariantList` as `NetworkDeviceModel::getItemsForIndexes()` return type"
This reverts commit 37dd8a1e0b118069b9659f128077271387aaa769.
- - - - -
d6be0506 by Fatih Uzunoglu at 2024-05-17T12:37:36+00:00
Revert "qt: use `QVector<SharedInputItem>` instead of `QVariantList` as `PlaylistListModel::getItemsForIndexes()` return type"
This reverts commit ee5566c8b53af97a70ca9698cb3ded15cb029792.
- - - - -
7 changed files:
- modules/gui/qt/medialibrary/mlplaylistlistmodel.cpp
- modules/gui/qt/network/networkdevicemodel.cpp
- modules/gui/qt/network/networkdevicemodel.hpp
- modules/gui/qt/network/networkmediamodel.cpp
- modules/gui/qt/network/networkmediamodel.hpp
- modules/gui/qt/playlist/playlist_model.cpp
- modules/gui/qt/playlist/playlist_model.hpp
Changes:
=====================================
modules/gui/qt/medialibrary/mlplaylistlistmodel.cpp
=====================================
@@ -88,31 +88,25 @@ void appendMediaIntoPlaylist(vlc_medialibrary_t* ml, int64_t playlistId, const s
 {
     assert(m_mediaLib);
 
+    struct Ctx {
+        MLItemId createdPlaylistId;
+    };
 
-    std::vector<MLItemId> itemList;
-    for (const QVariant & id : initialItems)
-    {
-        if (id.canConvert<MLItemId>() == false)
-            continue;
-
-        const MLItemId & itemId = id.value<MLItemId>();
-
-        if (itemId.id == 0)
-            continue;
-        itemList.push_back(itemId);
-    }
-
-    m_mediaLib->runOnMLThread(this,
+    m_mediaLib->runOnMLThread<Ctx>(this,
     //ML thread
-    [name, itemList](vlc_medialibrary_t* ml)
+    [name](vlc_medialibrary_t* ml, Ctx& ctx)
     {
         vlc_ml_playlist_t * playlist = vlc_ml_playlist_create(ml, qtu(name));
         if (playlist)
         {
-            auto playlistId = playlist->i_id;
+            ctx.createdPlaylistId = MLItemId(playlist->i_id, VLC_ML_PARENT_UNKNOWN);
             vlc_ml_playlist_release(playlist);
-
-            appendMediaIntoPlaylist(ml, playlistId, itemList);
+        }
+    },
+    [this, initialItems](quint64, const Ctx& ctx) {
+        if (ctx.createdPlaylistId.id)
+        {
+            append(ctx.createdPlaylistId, initialItems);
         }
     });
 }
=====================================
modules/gui/qt/network/networkdevicemodel.cpp
=====================================
@@ -559,10 +559,10 @@ bool NetworkDeviceModel::addAndPlay(const QModelIndexList& itemIdList)
 }
 
 /* Q_INVOKABLE */
-QVector<SharedInputItem> NetworkDeviceModel::getItemsForIndexes(const QModelIndexList & indexes) const
+QVariantList NetworkDeviceModel::getItemsForIndexes(const QModelIndexList & indexes) const
 {
     Q_D(const NetworkDeviceModel);
-    QVector<SharedInputItem> items;
+    QVariantList items;
 
     for (const QModelIndex & modelIndex : indexes)
     {
@@ -570,7 +570,7 @@ QVector<SharedInputItem> NetworkDeviceModel::getItemsForIndexes(const QModelInde
         if (!item)
             continue;
 
-        items.append(SharedInputItem(item->inputItem.get(), true));
+        items.append(QVariant::fromValue(SharedInputItem(item->inputItem.get(), true)));
     }
 
     return items;
=====================================
modules/gui/qt/network/networkdevicemodel.hpp
=====================================
@@ -115,7 +115,7 @@ public:
     Q_INVOKABLE bool addAndPlay(const QVariantList& itemIdList);
     Q_INVOKABLE bool addAndPlay(const QModelIndexList& itemIdList);
 
-    Q_INVOKABLE QVector<SharedInputItem> getItemsForIndexes(const QModelIndexList & indexes) const;
+    Q_INVOKABLE QVariantList getItemsForIndexes(const QModelIndexList & indexes) const;
 
 signals:
     void ctxChanged();
=====================================
modules/gui/qt/network/networkmediamodel.cpp
=====================================
@@ -721,10 +721,10 @@ bool NetworkMediaModel::addAndPlay(const QModelIndexList& itemIdList)
 }
 
 /* Q_INVOKABLE */
-QVector<SharedInputItem> NetworkMediaModel::getItemsForIndexes(const QModelIndexList & indexes) const
+QVariantList NetworkMediaModel::getItemsForIndexes(const QModelIndexList & indexes) const
 {
     Q_D(const NetworkMediaModel);
-    QVector<SharedInputItem> items;
+    QVariantList items;
 
     for (const QModelIndex & modelIndex : indexes)
     {
@@ -736,7 +736,7 @@ QVector<SharedInputItem> NetworkMediaModel::getItemsForIndexes(const QModelIndex
 
         const NetworkTreeItem & tree = item->tree;
 
-        items.append(SharedInputItem(tree.media.get(), true));
+        items.append(QVariant::fromValue(SharedInputItem(tree.media.get(), true)));
     }
 
     return items;
=====================================
modules/gui/qt/network/networkmediamodel.hpp
=====================================
@@ -173,7 +173,7 @@ public:
     Q_INVOKABLE bool addAndPlay(const QVariantList& itemIdList);
     Q_INVOKABLE bool addAndPlay(const QModelIndexList& itemIdList);
 
-    Q_INVOKABLE QVector<SharedInputItem> getItemsForIndexes(const QModelIndexList & indexes) const;
+    Q_INVOKABLE QVariantList getItemsForIndexes(const QModelIndexList & indexes) const;
 
 signals:
     void nameChanged();
=====================================
modules/gui/qt/playlist/playlist_model.cpp
=====================================
@@ -24,6 +24,7 @@
 #include "playlist_model_p.hpp"
 #include <algorithm>
 #include <cassert>
+#include "util/shared_input_item.hpp"
 #include "playlist_controller.hpp"
 
 namespace vlc {
@@ -401,11 +402,11 @@ int PlaylistListModel::getCurrentIndex() const
 }
 
 /* Q_INVOKABLE */
-QVector<SharedInputItem> PlaylistListModel::getItemsForIndexes(const QVector<int> & indexes) const
+QVariantList PlaylistListModel::getItemsForIndexes(const QVector<int> & indexes) const
 {
     Q_D(const PlaylistListModel);
 
-    QVector<SharedInputItem> items;
+    QVariantList items;
 
     for (int index : indexes)
     {
@@ -422,7 +423,7 @@ QVector<SharedInputItem> PlaylistListModel::getItemsForIndexes(const QVector<int
         if (media == nullptr)
             continue;
 
-        items.append(SharedInputItem(media, true));
+        items.append(QVariant::fromValue(SharedInputItem(media, true)));
     }
 
     return items;
=====================================
modules/gui/qt/playlist/playlist_model.hpp
=====================================
@@ -26,7 +26,6 @@
 #include "playlist_common.hpp"
 #include "playlist_item.hpp"
 #include "util/vlctick.hpp"
-#include "util/shared_input_item.hpp"
 
 #include <QAbstractListModel>
 
@@ -72,7 +71,7 @@ public:
 
     int getCurrentIndex() const;
 
-    Q_INVOKABLE QVector<SharedInputItem> getItemsForIndexes(const QVector<int> & indexes) const;
+    Q_INVOKABLE QVariantList getItemsForIndexes(const QVector<int> & indexes) const;
 
 public slots:
     Playlist getPlaylist() const;
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/194d62d747ffbc5b3f58a4e53116244d26501ced...d6be050663254d94ece1aebbe8b49c3e16f26aad
-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/194d62d747ffbc5b3f58a4e53116244d26501ced...d6be050663254d94ece1aebbe8b49c3e16f26aad
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
    
    
More information about the vlc-commits
mailing list