[vlc-devel] [PATCH 06/12] qt/qml_menu_wrapper: Add group support
Benjamin Arnaud
benjamin.arnaud at videolabs.io
Wed Apr 14 08:05:53 UTC 2021
---
modules/gui/qt/menus/qml_menu_wrapper.cpp | 45 +++++++++++++++++++++++
modules/gui/qt/menus/qml_menu_wrapper.hpp | 21 +++++++++++
2 files changed, 66 insertions(+)
diff --git a/modules/gui/qt/menus/qml_menu_wrapper.cpp b/modules/gui/qt/menus/qml_menu_wrapper.cpp
index 1e7b1eaa3b..0e2f30f74f 100644
--- a/modules/gui/qt/menus/qml_menu_wrapper.cpp
+++ b/modules/gui/qt/menus/qml_menu_wrapper.cpp
@@ -20,6 +20,7 @@
#include "util/qml_main_context.hpp"
#include "medialibrary/medialib.hpp"
#include "medialibrary/mlvideomodel.hpp"
+#include "medialibrary/mlgrouplistmodel.hpp"
#include "medialibrary/mlplaylistlistmodel.hpp"
#include "medialibrary/mlplaylistmodel.hpp"
#include "medialibrary/mlalbummodel.hpp"
@@ -392,6 +393,50 @@ void VideoContextMenu::popup(const QModelIndexList& selected, QPoint pos, QVaria
m_menu->popup(pos);
}
+//=================================================================================================
+// GroupListContextMenu
+//=================================================================================================
+
+GroupListContextMenu::GroupListContextMenu(QObject * parent) : QObject(parent) {}
+
+GroupListContextMenu::~GroupListContextMenu() /* override */
+{
+ if (m_menu)
+ delete m_menu;
+}
+
+void GroupListContextMenu::popup(const QModelIndexList & selected, QPoint pos, QVariantMap)
+{
+ if (m_model == nullptr)
+ return;
+
+ if (m_menu)
+ delete m_menu;
+
+ QVariantList ids;
+
+ for (const QModelIndex & modelIndex : selected)
+ ids.push_back(m_model->data(modelIndex, MLGroupListModel::GROUP_ID));
+
+ m_menu = new QMenu();
+
+ MediaLib * ml = m_model->ml();
+
+ QAction * action = m_menu->addAction(qtr("Add and play"));
+
+ connect(action, &QAction::triggered, [ml, ids]() {
+ ml->addAndPlay(ids);
+ });
+
+ action = m_menu->addAction(qtr("Enqueue"));
+
+ connect(action, &QAction::triggered, [ml, ids]() {
+ ml->addToPlaylist(ids);
+ });
+
+ m_menu->popup(pos);
+}
+
//=================================================================================================
// PlaylistListContextMenu
//=================================================================================================
diff --git a/modules/gui/qt/menus/qml_menu_wrapper.hpp b/modules/gui/qt/menus/qml_menu_wrapper.hpp
index 8481839189..cb96e441e1 100644
--- a/modules/gui/qt/menus/qml_menu_wrapper.hpp
+++ b/modules/gui/qt/menus/qml_menu_wrapper.hpp
@@ -32,6 +32,8 @@ class MLArtistModel;
class MLAlbumTrackModel;
class MLUrlModel;
class MLVideoModel;
+class MLGroupListModel;
+class MLGroupModel;
class MLPlaylistListModel;
class MLPlaylistModel;
class NetworkDeviceModel;
@@ -216,6 +218,25 @@ private:
QMenu* m_menu = nullptr;
};
+//-------------------------------------------------------------------------------------------------
+// Groups
+//-------------------------------------------------------------------------------------------------
+
+class GroupListContextMenu : public QObject {
+ Q_OBJECT
+ SIMPLE_MENU_PROPERTY(MLGroupListModel *, model, nullptr)
+public:
+ GroupListContextMenu(QObject * parent = nullptr);
+ ~GroupListContextMenu() /* override */;
+
+public slots:
+ void popup(const QModelIndexList & selected, QPoint pos, QVariantMap options = {});
+private:
+ QMenu* m_menu = nullptr;
+};
+
+//-------------------------------------------------------------------------------------------------
+
class PlaylistListContextMenu : public QObject {
Q_OBJECT
SIMPLE_MENU_PROPERTY(MLPlaylistListModel *, model, nullptr)
--
2.25.1
More information about the vlc-devel
mailing list