diff --git a/src/contents/ui/PlaylistPage.qml b/src/contents/ui/PlaylistPage.qml index 5a167103..699f1a49 100644 --- a/src/contents/ui/PlaylistPage.qml +++ b/src/contents/ui/PlaylistPage.qml @@ -16,6 +16,11 @@ Kirigami.ScrollablePage { SongMenu { id: menu } + ShareMenu { + id: shareMenu + inputTitle: playlistModel.title + url: playlistModel.webUrl + } ListView { id: songList @@ -36,6 +41,21 @@ Kirigami.ScrollablePage { } } ] + overflowActions: [ + Kirigami.Action { + text: i18n("Open in Browser") + icon.name: "internet-services" + onTriggered: Qt.openUrlExternally(playlistModel.webUrl) + }, + Kirigami.Action { + text: i18n("Share") + icon.name: "emblem-shared-symbolic" + onTriggered:{ + shareMenu.open() + } + + } + ] title: playlistModel.title imageSourceURL: playlistModel.thumbnailUrl width: songList.width diff --git a/src/playlistmodel.cpp b/src/playlistmodel.cpp index 2a7f29fb..fcdb02d2 100644 --- a/src/playlistmodel.cpp +++ b/src/playlistmodel.cpp @@ -10,6 +10,9 @@ #include "asyncytmusic.h" #include "playlistutils.h" +#include + + PlaylistModel::PlaylistModel(QObject *parent) : AbstractYTMusicModel(parent) { @@ -99,3 +102,8 @@ QString PlaylistModel::title() const { return QString::fromStdString(m_playlist.title); } + +QUrl PlaylistModel::webUrl() const +{ + return QUrl(YTMUSIC_WEB_BASE_URL % "playlist?list=" % playlistId()); +} diff --git a/src/playlistmodel.h b/src/playlistmodel.h index 21ab71fb..777a3aff 100644 --- a/src/playlistmodel.h +++ b/src/playlistmodel.h @@ -19,6 +19,8 @@ class PlaylistModel : public AbstractYTMusicModel // output Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged) Q_PROPERTY(QString title READ title NOTIFY titleChanged) + Q_PROPERTY(QUrl webUrl READ webUrl NOTIFY playlistIdChanged) + public: explicit PlaylistModel(QObject *parent = nullptr); @@ -45,6 +47,9 @@ public: QString title() const; Q_SIGNAL void titleChanged(); + QUrl webUrl() const; + + private: QString m_playlistId;