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 <QTabBar>
#include <QToolButton>
#include <QClipboard>
#include "core/logging.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_->setVisible(false);
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();
playlistitem_actions_separator_ = playlist_menu_->addSeparator();
playlist_menu_->addAction(ui_->action_clear_playlist);
@@ -1705,6 +1707,8 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex
#endif
playlist_organize_->setVisible(false);
playlist_copy_url_->setVisible(selected > 0);
if (selected < 1) {
playlist_queue_->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() {
QModelIndexList indexes;

View File

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