diff --git a/scripts/digitallyimported-radio/servicebase.py b/scripts/digitallyimported-radio/servicebase.py index b305ce8d9..29256a81c 100644 --- a/scripts/digitallyimported-radio/servicebase.py +++ b/scripts/digitallyimported-radio/servicebase.py @@ -65,9 +65,11 @@ class DigitallyImportedServiceBase(clementine.RadioService): if not self.menu: self.menu = QMenu() self.menu.addAction(clementine.IconLoader.Load("media-playback-start"), - self.tr("Add to playlist"), self.AddToPlaylist) + self.tr("Append to current playlist"), self.AddToPlaylist) self.menu.addAction(clementine.IconLoader.Load("media-playback-start"), - self.tr("Load"), self.LoadToPlaylist) + self.tr("Replace current playlist"), self.LoadToPlaylist) + self.menu.addAction(clementine.IconLoader.Load("document-new"), + self.tr("Open in new playlist"), self.OpenInNewPlaylist) self.menu.addSeparator() @@ -90,6 +92,9 @@ class DigitallyImportedServiceBase(clementine.RadioService): def LoadToPlaylist(self): self.AddItemToPlaylist(self.context_index, True) + def OpenInNewPlaylist(self): + self.AddItemToPlaylist(self.context_index, False, False, True) + def Homepage(self): QDesktopServices.openUrl(self.HOMEPAGE_URL) diff --git a/src/core/mimedata.h b/src/core/mimedata.h index 7c3fa82ec..d7c630217 100644 --- a/src/core/mimedata.h +++ b/src/core/mimedata.h @@ -24,10 +24,12 @@ class MimeData : public QMimeData { Q_OBJECT public: - MimeData(bool clear = false, bool play_now = false, bool enqueue = false) + MimeData(bool clear = false, bool play_now = false, + bool enqueue = false, bool new_playlist = false) : clear_first_(clear), play_now_(play_now), enqueue_now_(enqueue), + new_playlist_(new_playlist), from_doubleclick_(false) {} // If this is set then the playlist will be cleared before these songs @@ -42,6 +44,9 @@ public: // If this is set then the items are added to the queue after being inserted. bool enqueue_now_; + // If this is set then the items are inserted into a newly created playlist. + bool new_playlist_; + // This can be set if this MimeData goes via MainWindow (ie. it is created // manually in a double-click). The MainWindow will set the above three // flags to the defaults set by the user. diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 41cc192a8..09e6242db 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -214,6 +214,8 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_action_ = library_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load())); + open_in_new_playlist_ = library_menu_->addAction(IconLoader::Load("document-new"), + tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); library_menu_->addSeparator(); organise_action_ = library_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to library..."), this, SLOT(Organise())); @@ -365,6 +367,14 @@ void DeviceView::AddToPlaylist() { emit AddToPlaylistSignal(model()->mimeData(selectedIndexes())); } +void DeviceView::OpenInNewPlaylist() { + QMimeData* data = model()->mimeData(selectedIndexes()); + if (MimeData* mime_data = qobject_cast(data)) { + mime_data->new_playlist_ = true; + } + emit AddToPlaylistSignal(data); +} + void DeviceView::Delete() { if (selectedIndexes().isEmpty()) return; diff --git a/src/devices/deviceview.h b/src/devices/deviceview.h index f7ef382ef..e7d1e1652 100644 --- a/src/devices/deviceview.h +++ b/src/devices/deviceview.h @@ -65,6 +65,7 @@ private slots: // Library menu actions void Load(); void AddToPlaylist(); + void OpenInNewPlaylist(); void Organise(); void Delete(); @@ -99,6 +100,7 @@ private: QMenu* library_menu_; QAction* load_action_; QAction* add_to_playlist_action_; + QAction* open_in_new_playlist_; QAction* organise_action_; QAction* delete_action_; diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index f15f563e9..2949d86d9 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -236,6 +236,8 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load())); + open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), + tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); context_menu_->addSeparator(); add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), @@ -301,6 +303,7 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { load_->setEnabled(enable_add); add_to_playlist_->setEnabled(enable_add); + open_in_new_playlist_->setEnabled(enable_add); edit_tracks_->setVisible(many_songs); edit_track_->setVisible(!many_songs); edit_tracks_->setEnabled(enable_add); @@ -368,6 +371,14 @@ void LibraryView::AddToPlaylistEnqueue() { emit AddToPlaylistSignal(data); } +void LibraryView::OpenInNewPlaylist() { + QMimeData* data = model()->mimeData(selectedIndexes()); + if (MimeData* mime_data = qobject_cast(data)) { + mime_data->new_playlist_ = true; + } + emit AddToPlaylistSignal(data); +} + void LibraryView::keyboardSearch(const QString& search) { is_in_keyboard_search_ = true; QTreeView::keyboardSearch(search); diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 6d57e2bd7..ea8c64de8 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -92,6 +92,7 @@ class LibraryView : public AutoExpandingTreeView { void Load(); void AddToPlaylist(); void AddToPlaylistEnqueue(); + void OpenInNewPlaylist(); void Organise(); void CopyToDevice(); void Delete(); @@ -128,6 +129,7 @@ class LibraryView : public AutoExpandingTreeView { QAction* load_; QAction* add_to_playlist_; QAction* add_to_playlist_enqueue_; + QAction* open_in_new_playlist_; QAction* organise_; QAction* copy_to_device_; QAction* delete_; diff --git a/src/radio/icecastservice.cpp b/src/radio/icecastservice.cpp index 0437093c5..75cb168ba 100644 --- a/src/radio/icecastservice.cpp +++ b/src/radio/icecastservice.cpp @@ -273,6 +273,7 @@ void IcecastService::ShowContextMenu(const QModelIndex& index, add_to_playlist_->setEnabled(can_play); load_to_playlist_->setEnabled(can_play); + open_in_new_playlist_->setEnabled(can_play); context_menu_->popup(global_pos); } @@ -286,6 +287,8 @@ void IcecastService::EnsureMenuCreated() { IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_to_playlist_ = context_menu_->addAction( IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadToPlaylist())); + open_in_new_playlist_ = context_menu_->addAction( + IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("download"), tr("Open dir.xiph.org in browser"), this, SLOT(Homepage())); context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh station list"), this, SLOT(LoadDirectory())); @@ -302,3 +305,7 @@ void IcecastService::AddToPlaylist() { void IcecastService::LoadToPlaylist() { AddItemToPlaylist(context_item_, true); } + +void IcecastService::OpenInNewPlaylist() { + AddItemToPlaylist(context_item_, false, false, true); +} diff --git a/src/radio/icecastservice.h b/src/radio/icecastservice.h index 7a2e4385d..a912c05e6 100644 --- a/src/radio/icecastservice.h +++ b/src/radio/icecastservice.h @@ -57,6 +57,7 @@ class IcecastService : public RadioService { void Homepage(); void AddToPlaylist(); void LoadToPlaylist(); + void OpenInNewPlaylist(); private: void EnsureMenuCreated(); @@ -69,6 +70,7 @@ class IcecastService : public RadioService { QModelIndex context_item_; QAction* add_to_playlist_; QAction* load_to_playlist_; + QAction* open_in_new_playlist_; IcecastBackend* backend_; IcecastModel* model_; diff --git a/src/radio/jamendoservice.cpp b/src/radio/jamendoservice.cpp index da3d91af5..0a2480a5e 100644 --- a/src/radio/jamendoservice.cpp +++ b/src/radio/jamendoservice.cpp @@ -382,6 +382,9 @@ void JamendoService::EnsureMenuCreated() { tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadToPlaylist())); + open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), + tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + context_menu_->addSeparator(); album_info_ = context_menu_->addAction(IconLoader::Load("view-media-lyrics"), tr("Album info on jamendo.com..."), this, SLOT(AlbumInfo())); download_album_ = context_menu_->addAction(IconLoader::Load("download"), @@ -408,6 +411,7 @@ void JamendoService::ShowContextMenu(const QModelIndex& index, const QPoint& glo add_to_playlist_->setEnabled(context_item_.isValid()); load_to_playlist_->setEnabled(context_item_.isValid()); + open_in_new_playlist_->setEnabled(context_item_.isValid()); album_info_->setEnabled(context_item_.isValid()); download_album_->setEnabled(context_item_.isValid()); context_menu_->popup(global_pos); @@ -426,6 +430,10 @@ void JamendoService::LoadToPlaylist() { AddItemToPlaylist(context_item_, true); } +void JamendoService::OpenInNewPlaylist() { + AddItemToPlaylist(context_item_, false, false, true); +} + void JamendoService::AlbumInfo() { SongList songs(library_model_->GetChildSongs( library_sort_model_->mapToSource(context_item_))); diff --git a/src/radio/jamendoservice.h b/src/radio/jamendoservice.h index 15f9d6d6d..ff5a4d082 100644 --- a/src/radio/jamendoservice.h +++ b/src/radio/jamendoservice.h @@ -93,6 +93,7 @@ class JamendoService : public RadioService { void AddToPlaylist(); void LoadToPlaylist(); + void OpenInNewPlaylist(); void AlbumInfo(); void DownloadAlbum(); void Homepage(); @@ -105,6 +106,7 @@ class JamendoService : public RadioService { QAction* add_to_playlist_; QAction* load_to_playlist_; + QAction* open_in_new_playlist_; QAction* album_info_; QAction* download_album_; diff --git a/src/radio/lastfmservice.cpp b/src/radio/lastfmservice.cpp index 78966083f..3981d8839 100644 --- a/src/radio/lastfmservice.cpp +++ b/src/radio/lastfmservice.cpp @@ -78,6 +78,9 @@ LastFMService::LastFMService(RadioModel* parent) IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_action_ = context_menu_->addAction( IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadToPlaylist())); + open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), + tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + context_menu_->addSeparator(); remove_action_ = context_menu_->addAction( IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); context_menu_->addSeparator(); @@ -469,6 +472,7 @@ void LastFMService::ShowContextMenu(const QModelIndex& index, const QPoint &glob const bool playable = model()->IsPlayable(index); play_action_->setEnabled(playable); load_action_->setEnabled(playable); + open_in_new_playlist_->setEnabled(playable); context_menu_->popup(global_pos); } @@ -562,6 +566,10 @@ void LastFMService::LoadToPlaylist() { AddItemToPlaylist(context_item_->index(), true); } +void LastFMService::OpenInNewPlaylist() { + AddItemToPlaylist(context_item_->index(), false, false, true); +} + void LastFMService::AddArtistRadio() { AddArtistOrTag("artists", LastFMStationDialog::Artist, kUrlArtist, tr(kTitleArtist), diff --git a/src/radio/lastfmservice.h b/src/radio/lastfmservice.h index eccb97c73..ad49fe892 100644 --- a/src/radio/lastfmservice.h +++ b/src/radio/lastfmservice.h @@ -126,6 +126,7 @@ class LastFMService : public RadioService { void AddToPlaylist(); void LoadToPlaylist(); + void OpenInNewPlaylist(); void AddArtistRadio(); void AddTagRadio(); void AddCustomRadio(); @@ -173,6 +174,7 @@ class LastFMService : public RadioService { boost::scoped_ptr context_menu_; QAction* play_action_; QAction* load_action_; + QAction* open_in_new_playlist_; QAction* remove_action_; QAction* add_artist_action_; QAction* add_tag_action_; diff --git a/src/radio/magnatuneservice.cpp b/src/radio/magnatuneservice.cpp index 7037e7a0e..f68baaf72 100644 --- a/src/radio/magnatuneservice.cpp +++ b/src/radio/magnatuneservice.cpp @@ -252,6 +252,9 @@ void MagnatuneService::EnsureMenuCreated() { IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_to_playlist_ = context_menu_->addAction( IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadToPlaylist())); + open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), + tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + context_menu_->addSeparator(); download_ = context_menu_->addAction( IconLoader::Load("download"), tr("Download this album"), this, SLOT(Download())); context_menu_->addSeparator(); @@ -277,6 +280,7 @@ void MagnatuneService::ShowContextMenu(const QModelIndex& index, const QPoint& g add_to_playlist_->setEnabled(context_item_.isValid()); load_to_playlist_->setEnabled(context_item_.isValid()); + open_in_new_playlist_->setEnabled(context_item_.isValid()); download_->setEnabled(context_item_.isValid() && membership_ == Membership_Download); context_menu_->popup(global_pos); } @@ -289,6 +293,10 @@ void MagnatuneService::LoadToPlaylist() { AddItemToPlaylist(context_item_, true); } +void MagnatuneService::OpenInNewPlaylist() { + AddItemToPlaylist(context_item_, false, false, true); +} + void MagnatuneService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); } diff --git a/src/radio/magnatuneservice.h b/src/radio/magnatuneservice.h index ccac8af58..173791cb7 100644 --- a/src/radio/magnatuneservice.h +++ b/src/radio/magnatuneservice.h @@ -95,6 +95,7 @@ class MagnatuneService : public RadioService { void AddToPlaylist(); void LoadToPlaylist(); + void OpenInNewPlaylist(); void Download(); void Homepage(); void ShowConfig(); @@ -111,6 +112,7 @@ class MagnatuneService : public RadioService { QAction* add_to_playlist_; QAction* load_to_playlist_; + QAction* open_in_new_playlist_; QAction* download_; LibraryBackend* library_backend_; diff --git a/src/radio/radioservice.cpp b/src/radio/radioservice.cpp index f5b0b2950..fa003e406 100644 --- a/src/radio/radioservice.cpp +++ b/src/radio/radioservice.cpp @@ -36,16 +36,17 @@ PlaylistItem::SpecialLoadResult RadioService::LoadNext(const QUrl&) { return PlaylistItem::SpecialLoadResult(); } -void RadioService::AddItemToPlaylist(const QModelIndex& index, bool clear, bool enqueue) { - AddItemsToPlaylist(QModelIndexList() << index, clear, enqueue); +void RadioService::AddItemToPlaylist(const QModelIndex& index, bool clear, bool enqueue, bool start_new) { + AddItemsToPlaylist(QModelIndexList() << index, clear, enqueue, start_new); } -void RadioService::AddItemsToPlaylist(const QModelIndexList& indexes, bool clear, bool enqueue) { +void RadioService::AddItemsToPlaylist(const QModelIndexList& indexes, bool clear, bool enqueue, bool start_new) { QMimeData* data = model()->merged_model()->mimeData( model()->merged_model()->mapFromSource(indexes)); if (MimeData* mime_data = qobject_cast(data)) { mime_data->clear_first_ = clear; mime_data->enqueue_now_ = enqueue; + mime_data->new_playlist_ = start_new; } emit AddToPlaylistSignal(data); } diff --git a/src/radio/radioservice.h b/src/radio/radioservice.h index 4c93c7211..d79ea4ccc 100644 --- a/src/radio/radioservice.h +++ b/src/radio/radioservice.h @@ -66,8 +66,8 @@ signals: void AddToPlaylistSignal(QMimeData* data); protected: - void AddItemToPlaylist(const QModelIndex& index, bool clear = false, bool enqueue = false); - void AddItemsToPlaylist(const QModelIndexList& indexes, bool clear = false, bool enqueue = false); + void AddItemToPlaylist(const QModelIndex& index, bool clear = false, bool enqueue = false, bool start_new = false); + void AddItemsToPlaylist(const QModelIndexList& indexes, bool clear = false, bool enqueue = false, bool start_new = false); private: RadioModel* model_; diff --git a/src/radio/savedradio.cpp b/src/radio/savedradio.cpp index a4e852906..87fbd96df 100644 --- a/src/radio/savedradio.cpp +++ b/src/radio/savedradio.cpp @@ -92,6 +92,8 @@ void SavedRadio::ShowContextMenu(const QModelIndex& index, context_menu_ = new QMenu; add_action_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_action_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadToPlaylist())); + open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + context_menu_->addSeparator(); remove_action_ = context_menu_->addAction(IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); edit_action_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit..."), this, SLOT(Edit())); context_menu_->addSeparator(); @@ -103,6 +105,7 @@ void SavedRadio::ShowContextMenu(const QModelIndex& index, add_action_->setEnabled(!is_root); load_action_->setEnabled(!is_root); + open_in_new_playlist_->setEnabled(!is_root); remove_action_->setEnabled(!is_root); edit_action_->setEnabled(!is_root); @@ -145,6 +148,10 @@ void SavedRadio::LoadToPlaylist() { AddItemToPlaylist(context_item_->index(), true); } +void SavedRadio::OpenInNewPlaylist() { + AddItemToPlaylist(context_item_->index(), false, false, true); +} + void SavedRadio::AddStreamToList(const Stream& stream, QStandardItem* parent) { QStandardItem* s = new QStandardItem(QIcon(":last.fm/icon_radio.png"), stream.name_); s->setData(stream.url_, RadioModel::Role_Url); diff --git a/src/radio/savedradio.h b/src/radio/savedradio.h index acc2dc788..e3f790717 100644 --- a/src/radio/savedradio.h +++ b/src/radio/savedradio.h @@ -53,6 +53,7 @@ class SavedRadio : public RadioService { private slots: void AddToPlaylist(); void LoadToPlaylist(); + void OpenInNewPlaylist(); void Remove(); void Edit(); @@ -79,6 +80,7 @@ class SavedRadio : public RadioService { QAction* add_action_; QAction* load_action_; + QAction* open_in_new_playlist_; QAction* remove_action_; QAction* edit_action_; diff --git a/src/radio/somafmservice.cpp b/src/radio/somafmservice.cpp index 3b4aa2541..9ed38be44 100644 --- a/src/radio/somafmservice.cpp +++ b/src/radio/somafmservice.cpp @@ -71,6 +71,7 @@ void SomaFMService::ShowContextMenu(const QModelIndex& index, const QPoint& glob context_menu_ = new QMenu; context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadToPlaylist())); + context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("download"), tr("Open somafm.com in browser"), this, SLOT(Homepage())); context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh channels"), this, SLOT(RefreshChannels())); @@ -220,6 +221,10 @@ void SomaFMService::LoadToPlaylist() { AddItemToPlaylist(context_item_->index(), true); } +void SomaFMService::OpenInNewPlaylist() { + AddItemToPlaylist(context_item_->index(), false, false, true); +} + PlaylistItem::Options SomaFMService::playlistitem_options() const { return PlaylistItem::SpecialPlayBehaviour | PlaylistItem::PauseDisabled; diff --git a/src/radio/somafmservice.h b/src/radio/somafmservice.h index 6934e20a8..b4392e000 100644 --- a/src/radio/somafmservice.h +++ b/src/radio/somafmservice.h @@ -55,6 +55,7 @@ class SomaFMService : public RadioService { void AddToPlaylist(); void LoadToPlaylist(); + void OpenInNewPlaylist(); void Homepage(); private: diff --git a/src/scripting/python/radioservice.sip b/src/scripting/python/radioservice.sip index bbef3dbd7..a46344dc2 100644 --- a/src/scripting/python/radioservice.sip +++ b/src/scripting/python/radioservice.sip @@ -35,6 +35,6 @@ signals: void AddToPlaylistSignal(QMimeData* data); protected: - void AddItemToPlaylist(const QModelIndex& index, bool clear = false, bool enqueue = false); - void AddItemsToPlaylist(const QModelIndexList& indexes, bool clear = false, bool enqueue = false); + void AddItemToPlaylist(const QModelIndex& index, bool clear = false, bool enqueue = false, bool start_new = false); + void AddItemsToPlaylist(const QModelIndexList& indexes, bool clear = false, bool enqueue = false, bool start_new = false); }; diff --git a/src/translations/ar.po b/src/translations/ar.po index b7b44ec97..cd8f7d8c0 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/be.po b/src/translations/be.po index 38d55331f..6413a111a 100644 --- a/src/translations/be.po +++ b/src/translations/be.po @@ -1635,6 +1635,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/bg.po b/src/translations/bg.po index 56a5bf2ab..ae4c2ae68 100644 --- a/src/translations/bg.po +++ b/src/translations/bg.po @@ -1657,6 +1657,9 @@ msgstr "Отворено устройство" msgid "Open dir.xiph.org in browser" msgstr "Отворете dir.xiph.org във уеб браузър" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Отворете jamendo.com в уеб браузър" diff --git a/src/translations/br.po b/src/translations/br.po index 39114464d..592126277 100644 --- a/src/translations/br.po +++ b/src/translations/br.po @@ -1623,6 +1623,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/ca.po b/src/translations/ca.po index 2b6e98793..c25178f2e 100644 --- a/src/translations/ca.po +++ b/src/translations/ca.po @@ -1658,6 +1658,9 @@ msgstr "Obrir dispositiu" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/cs.po b/src/translations/cs.po index 817b4a60c..c6d5e9306 100644 --- a/src/translations/cs.po +++ b/src/translations/cs.po @@ -1660,6 +1660,9 @@ msgstr "Otevřít zařízení" msgid "Open dir.xiph.org in browser" msgstr "Otevřít dir.xiph.org v prohlížeči" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Otevřít jamendo.com v prohlížeči" diff --git a/src/translations/cy.po b/src/translations/cy.po index 1f4824623..7e46b23ca 100644 --- a/src/translations/cy.po +++ b/src/translations/cy.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/da.po b/src/translations/da.po index 26d958635..9aaed4097 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -1624,6 +1624,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/de.po b/src/translations/de.po index 4c6bfc72b..d01cea68c 100644 --- a/src/translations/de.po +++ b/src/translations/de.po @@ -1662,6 +1662,9 @@ msgstr "Gerät öffnen" msgid "Open dir.xiph.org in browser" msgstr "Öffne dir.xiph.org im Browser" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Öffne jamendo.com in einem Browser" diff --git a/src/translations/el.po b/src/translations/el.po index 4fc5c82a1..0f52cb242 100644 --- a/src/translations/el.po +++ b/src/translations/el.po @@ -1669,6 +1669,9 @@ msgstr "Άνοιγμα συσκευής" msgid "Open dir.xiph.org in browser" msgstr "Άνοιγμα του dir.xiph.org στον περιηγητή" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "άνοιγμα του jamendo.com στον περιηγητή" diff --git a/src/translations/en.po b/src/translations/en.po index ccd207d8f..8e9b5eb6b 100644 --- a/src/translations/en.po +++ b/src/translations/en.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po index 16b89a093..899f6d456 100644 --- a/src/translations/en_CA.po +++ b/src/translations/en_CA.po @@ -1625,6 +1625,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index c1dd4630e..5329bd995 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -1622,6 +1622,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/eo.po b/src/translations/eo.po index 5c964d411..3465b1b79 100644 --- a/src/translations/eo.po +++ b/src/translations/eo.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/es.po b/src/translations/es.po index 50660599b..2628eab59 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -1670,6 +1670,9 @@ msgstr "Abrir dispositivo" msgid "Open dir.xiph.org in browser" msgstr "Abrir dir.xiph.org en el navegador" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Abrir jamendo.com en el navegador" diff --git a/src/translations/et.po b/src/translations/et.po index 19d3b08d1..a15e631c8 100644 --- a/src/translations/et.po +++ b/src/translations/et.po @@ -1622,6 +1622,9 @@ msgstr "Ava seade" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/eu.po b/src/translations/eu.po index 6d74ba4ea..ebbb21f6b 100644 --- a/src/translations/eu.po +++ b/src/translations/eu.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/fi.po b/src/translations/fi.po index 49d599da4..44c097a90 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -1622,6 +1622,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/fr.po b/src/translations/fr.po index fe2c2c4a3..71bc867fc 100644 --- a/src/translations/fr.po +++ b/src/translations/fr.po @@ -1676,6 +1676,9 @@ msgstr "Ouvrir le périphérique" msgid "Open dir.xiph.org in browser" msgstr "Ouvrir dir.xiph.org dans le navigateur" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Ouvrir Jamendo.com dans le navigateur" diff --git a/src/translations/gl.po b/src/translations/gl.po index d5a53993d..e8822629f 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -1630,6 +1630,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/he.po b/src/translations/he.po index e4c91e357..15f870683 100644 --- a/src/translations/he.po +++ b/src/translations/he.po @@ -1641,6 +1641,9 @@ msgstr "פתח התקן" msgid "Open dir.xiph.org in browser" msgstr "פתח את dir.xiph.org בדפדפן" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "פתח את jamendo.com בדפדפן" diff --git a/src/translations/hi.po b/src/translations/hi.po index 933d28db3..3938e4c73 100644 --- a/src/translations/hi.po +++ b/src/translations/hi.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/hr.po b/src/translations/hr.po index 4a77aaf9c..81e749e47 100644 --- a/src/translations/hr.po +++ b/src/translations/hr.po @@ -1653,6 +1653,9 @@ msgstr "Otvori uređaj" msgid "Open dir.xiph.org in browser" msgstr "Otvori dir.xiph.org u Internet pretraživaču" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Otvori jamendo.com u Internet pretraživaču" diff --git a/src/translations/hu.po b/src/translations/hu.po index 67b91b87f..cfbd7dfea 100644 --- a/src/translations/hu.po +++ b/src/translations/hu.po @@ -1658,6 +1658,9 @@ msgstr "Eszköz megnyitása" msgid "Open dir.xiph.org in browser" msgstr "dir.xiph.org megnyitása böngészőben" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "jamendo.com megnyitása böngészőben" diff --git a/src/translations/it.po b/src/translations/it.po index a9d790af0..e7443355b 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -1665,6 +1665,9 @@ msgstr "Apri dispositivo" msgid "Open dir.xiph.org in browser" msgstr "Apri dir.xiph.org nel browser" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Apri jamendo.com nel browser" diff --git a/src/translations/ja.po b/src/translations/ja.po index a76c14fb3..b9c2c863a 100644 --- a/src/translations/ja.po +++ b/src/translations/ja.po @@ -1650,6 +1650,9 @@ msgstr "デバイスを開く" msgid "Open dir.xiph.org in browser" msgstr "ブラウザで dir.xiph.org を開きます" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "ブラウザで jamendo.com を開きます" diff --git a/src/translations/kk.po b/src/translations/kk.po index 4c3173154..04f482a57 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/lt.po b/src/translations/lt.po index 458410a8e..4e10fb0ed 100644 --- a/src/translations/lt.po +++ b/src/translations/lt.po @@ -1653,6 +1653,9 @@ msgstr "Atverti įrenginį" msgid "Open dir.xiph.org in browser" msgstr "Atverti dir.xiph.org interneto naršyklėje" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Atverti jamendo.com interneto naršyklėje" diff --git a/src/translations/lv.po b/src/translations/lv.po index 560e85d08..164114e54 100644 --- a/src/translations/lv.po +++ b/src/translations/lv.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/nb.po b/src/translations/nb.po index 0f864d57b..d6d2ce293 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -1633,6 +1633,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/nl.po b/src/translations/nl.po index 3be309c3e..3170c9ea4 100644 --- a/src/translations/nl.po +++ b/src/translations/nl.po @@ -1657,6 +1657,9 @@ msgstr "Apparaat openen" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/oc.po b/src/translations/oc.po index 72565355d..74ffc3788 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/pl.po b/src/translations/pl.po index c63802d02..9c899f932 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -1658,6 +1658,9 @@ msgstr "Otwórz urządzenie" msgid "Open dir.xiph.org in browser" msgstr "Otwórz dir.xiph.org w przeglądarce" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Otwórz jamendo.com w przeglądarce" diff --git a/src/translations/pt.po b/src/translations/pt.po index 5013dc9c7..530275147 100644 --- a/src/translations/pt.po +++ b/src/translations/pt.po @@ -1661,6 +1661,9 @@ msgstr "Abrir dispositivo" msgid "Open dir.xiph.org in browser" msgstr "Abrir dir.xiph.org no navegador" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Abrir jamendo.com no navegador" diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po index f32036277..d1fc45bca 100644 --- a/src/translations/pt_BR.po +++ b/src/translations/pt_BR.po @@ -1659,6 +1659,9 @@ msgstr "Abrir dispositivo" msgid "Open dir.xiph.org in browser" msgstr "Abrir dir.xiph.org no navegador" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Abrir jamendo.com no navegador" diff --git a/src/translations/ro.po b/src/translations/ro.po index 9fcf5d6eb..442d00c1d 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -1621,6 +1621,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/ru.po b/src/translations/ru.po index 2dbb5c09a..744885302 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -1652,6 +1652,9 @@ msgstr "Открыть устройство" msgid "Open dir.xiph.org in browser" msgstr "Открыть dir.xiph.org в браузере" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Перейдите в браузере по адресу jamendo.com" diff --git a/src/translations/sk.po b/src/translations/sk.po index 3764fc28b..c8262efc2 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -1650,6 +1650,9 @@ msgstr "Otvoriť zariadenie" msgid "Open dir.xiph.org in browser" msgstr "Otvoriť dir.xiph.org v prehliadači" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Otvoriť jamendo.com v prehliadači" diff --git a/src/translations/sl.po b/src/translations/sl.po index 1216b565f..ddd752326 100644 --- a/src/translations/sl.po +++ b/src/translations/sl.po @@ -1652,6 +1652,9 @@ msgstr "Odpri napravo" msgid "Open dir.xiph.org in browser" msgstr "Odpri dir.xiph.org v brskalniku" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Odpri jamendo.com v brskalniku" diff --git a/src/translations/sr.po b/src/translations/sr.po index e88f07c3b..530314307 100644 --- a/src/translations/sr.po +++ b/src/translations/sr.po @@ -1625,6 +1625,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/sv.po b/src/translations/sv.po index 96c5ee1d6..cdcd54914 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -1654,6 +1654,9 @@ msgstr "Öppna enhet" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/tr.po b/src/translations/tr.po index 417d62ad7..38e84177f 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -1651,6 +1651,9 @@ msgstr "Aygıtı aç" msgid "Open dir.xiph.org in browser" msgstr "dir.xiph.org sayfasını tarayıcıda aç" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "İnternet tarayıcıda jamendo.com'u aç" diff --git a/src/translations/translations.pot b/src/translations/translations.pot index a72edaacc..b01335223 100644 --- a/src/translations/translations.pot +++ b/src/translations/translations.pot @@ -1611,6 +1611,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/translations/uk.po b/src/translations/uk.po index 8dcde416c..c30c8eaaa 100644 --- a/src/translations/uk.po +++ b/src/translations/uk.po @@ -1651,6 +1651,9 @@ msgstr "Відкрити пристрій" msgid "Open dir.xiph.org in browser" msgstr "Відкрити dir.xiph.org в оглядачі" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "Відкрити jamendo.com в оглядачі" diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po index e5aedbdc2..5c6b6b94f 100644 --- a/src/translations/zh_CN.po +++ b/src/translations/zh_CN.po @@ -1623,6 +1623,9 @@ msgstr "打开设备" msgid "Open dir.xiph.org in browser" msgstr "在浏览器中打开 dir.xiph.org" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "在浏览器中打开 jamendo.com" diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po index fdedebd09..8a63981c8 100644 --- a/src/translations/zh_TW.po +++ b/src/translations/zh_TW.po @@ -1625,6 +1625,9 @@ msgstr "" msgid "Open dir.xiph.org in browser" msgstr "" +msgid "Open in new playlist" +msgstr "" + msgid "Open jamendo.com in browser" msgstr "" diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 6214fb4fd..c484a515f 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -982,6 +982,10 @@ void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b, MimeData* data) c data->clear_first_ = true; data->enqueue_now_ = false; break; + + case AddBehaviour_OpenInNew: + data->new_playlist_ = true; + break; } } @@ -1013,6 +1017,11 @@ void MainWindow::AddToPlaylist(QMimeData* data) { } else { ApplyPlayBehaviour(menu_playmode_, mime_data); } + + // Should we create a new playlist for the songs? + if(mime_data->new_playlist_) { + playlists_->New(tr("Playlist")); + } } playlists_->current()->dropMimeData(data, Qt::CopyAction, -1, 0, QModelIndex()); diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index e5bdf7003..2e9fbc7af 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -107,6 +107,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { AddBehaviour_Append = 1, AddBehaviour_Enqueue = 2, AddBehaviour_Load = 3, + AddBehaviour_OpenInNew = 4 }; // Don't change the values diff --git a/src/ui/settingsdialog.cpp b/src/ui/settingsdialog.cpp index 97c1125a7..543a90739 100644 --- a/src/ui/settingsdialog.cpp +++ b/src/ui/settingsdialog.cpp @@ -159,7 +159,8 @@ SettingsDialog::SettingsDialog(BackgroundStreams* streams, QWidget* parent) ui_->doubleclick_addmode->setItemData(0, MainWindow::AddBehaviour_Append); ui_->doubleclick_addmode->setItemData(1, MainWindow::AddBehaviour_Load); - ui_->doubleclick_addmode->setItemData(2, MainWindow::AddBehaviour_Enqueue); + ui_->doubleclick_addmode->setItemData(2, MainWindow::AddBehaviour_OpenInNew); + ui_->doubleclick_addmode->setItemData(3, MainWindow::AddBehaviour_Enqueue); ui_->doubleclick_playmode->setItemData(0, MainWindow::PlayBehaviour_Never); ui_->doubleclick_playmode->setItemData(1, MainWindow::PlayBehaviour_IfStopped); diff --git a/src/ui/settingsdialog.ui b/src/ui/settingsdialog.ui index f0cd080c2..cb95f4667 100644 --- a/src/ui/settingsdialog.ui +++ b/src/ui/settingsdialog.ui @@ -463,6 +463,11 @@ Replace the playlist + + + Open in new playlist + + Add to the queue diff --git a/src/widgets/fileviewlist.cpp b/src/widgets/fileviewlist.cpp index c719fbc7b..f09e119c8 100644 --- a/src/widgets/fileviewlist.cpp +++ b/src/widgets/fileviewlist.cpp @@ -32,6 +32,8 @@ FileViewList::FileViewList(QWidget* parent) this, SLOT(AddToPlaylistSlot())); menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadSlot())); + menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), + this, SLOT(OpenInNewPlaylistSlot())); menu_->addSeparator(); menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to library..."), this, SLOT(CopyToLibrarySlot())); @@ -86,6 +88,12 @@ void FileViewList::AddToPlaylistSlot() { emit AddToPlaylist(MimeDataFromSelection()); } +void FileViewList::OpenInNewPlaylistSlot() { + MimeData* data = MimeDataFromSelection(); + data->new_playlist_ = true; + emit AddToPlaylist(data); +} + void FileViewList::CopyToLibrarySlot() { emit CopyToLibrary(UrlListFromSelection()); } diff --git a/src/widgets/fileviewlist.h b/src/widgets/fileviewlist.h index 28fec311f..ca8f1c8e8 100644 --- a/src/widgets/fileviewlist.h +++ b/src/widgets/fileviewlist.h @@ -42,6 +42,7 @@ class FileViewList : public QListView { private slots: void LoadSlot(); void AddToPlaylistSlot(); + void OpenInNewPlaylistSlot(); void CopyToLibrarySlot(); void MoveToLibrarySlot(); void CopyToDeviceSlot();