Add playlist right click option to copy URL

This commit is contained in:
Jonas Kvinge
2020-08-06 18:29:35 +02:00
parent 7aa5f0d258
commit d34fc551ed
2 changed files with 25 additions and 0 deletions

View File

@@ -68,6 +68,7 @@
#include <QStackedWidget> #include <QStackedWidget>
#include <QTabBar> #include <QTabBar>
#include <QToolButton> #include <QToolButton>
#include <QClipboard>
#include "core/logging.h" #include "core/logging.h"
#include "core/closure.h" #include "core/closure.h"
@@ -646,6 +647,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, SLOT(PlaylistOpenInBrowser())); playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, SLOT(PlaylistOpenInBrowser()));
playlist_open_in_browser_->setVisible(false); playlist_open_in_browser_->setVisible(false);
playlist_show_in_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-find"), tr("Show in collection..."), this, SLOT(ShowInCollection())); playlist_show_in_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-find"), tr("Show in collection..."), this, SLOT(ShowInCollection()));
playlist_copy_url_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy URL(s)..."), this, SLOT(PlaylistCopyUrl()));
playlist_menu_->addSeparator(); playlist_menu_->addSeparator();
playlistitem_actions_separator_ = playlist_menu_->addSeparator(); playlistitem_actions_separator_ = playlist_menu_->addSeparator();
playlist_menu_->addAction(ui_->action_clear_playlist); playlist_menu_->addAction(ui_->action_clear_playlist);
@@ -1705,6 +1707,8 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex
#endif #endif
playlist_organize_->setVisible(false); playlist_organize_->setVisible(false);
playlist_copy_url_->setVisible(selected > 0);
if (selected < 1) { if (selected < 1) {
playlist_queue_->setVisible(false); playlist_queue_->setVisible(false);
playlist_queue_play_next_->setVisible(false); playlist_queue_play_next_->setVisible(false);
@@ -2373,6 +2377,25 @@ void MainWindow::PlaylistOpenInBrowser() {
} }
void MainWindow::PlaylistCopyUrl() {
QList<QUrl> urls;
for (const QModelIndex &proxy_index : ui_->playlist->view()->selectionModel()->selectedRows()) {
const QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index);
if (!source_index.isValid()) continue;
PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(source_index.row());
if (!item) continue;
urls << item->StreamUrl();
}
if (urls.count() > 0) {
QMimeData *mime_data = new QMimeData;
mime_data->setUrls(urls);
QApplication::clipboard()->setMimeData(mime_data);
}
}
void MainWindow::PlaylistQueue() { void MainWindow::PlaylistQueue() {
QModelIndexList indexes; QModelIndexList indexes;

View File

@@ -170,6 +170,7 @@ class MainWindow : public QMainWindow, public PlatformInterface {
void PlaylistCopyToDevice(); void PlaylistCopyToDevice();
void PlaylistOrganizeSelected(const bool copy); void PlaylistOrganizeSelected(const bool copy);
void PlaylistOpenInBrowser(); void PlaylistOpenInBrowser();
void PlaylistCopyUrl();
void ShowInCollection(); void ShowInCollection();
void ChangeCollectionQueryMode(QAction *action); void ChangeCollectionQueryMode(QAction *action);
@@ -338,6 +339,7 @@ class MainWindow : public QMainWindow, public PlatformInterface {
QAction *playlist_copy_to_device_; QAction *playlist_copy_to_device_;
#endif #endif
QAction *playlist_open_in_browser_; QAction *playlist_open_in_browser_;
QAction *playlist_copy_url_;
QAction *playlist_queue_; QAction *playlist_queue_;
QAction* playlist_queue_play_next_; QAction* playlist_queue_play_next_;
QAction *playlist_skip_; QAction *playlist_skip_;