vlc | branch: master | Benjamin Arnaud <benjamin.arn...@videolabs.io> | Fri Mar 26 16:18:55 2021 +0100| [3c74d42baf33708118f55d71881aac4c9af21a67] | committer: Pierre Lamot
qt/qml_menu_wrapper: Add group support Signed-off-by: Pierre Lamot <pie...@videolabs.io> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3c74d42baf33708118f55d71881aac4c9af21a67 --- 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) _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits