[vlc-commits] macosx/playlist: add info panel for items queued in playlist
Felix Paul Kühne
git at videolan.org
Mon Jul 1 16:56:24 CEST 2019
vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Mon Jul 1 16:50:35 2019 +0200| [fd7825482c8ba329f07491e6f629f6b439feaba0] | committer: Felix Paul Kühne
macosx/playlist: add info panel for items queued in playlist
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fd7825482c8ba329f07491e6f629f6b439feaba0
---
modules/gui/macosx/playlist/VLCPlaylistItem.h | 3 ++
modules/gui/macosx/playlist/VLCPlaylistItem.m | 14 +++++++++
.../macosx/playlist/VLCPlaylistMenuController.m | 33 ++++++++++++++++++++--
3 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/modules/gui/macosx/playlist/VLCPlaylistItem.h b/modules/gui/macosx/playlist/VLCPlaylistItem.h
index f9732d945b..2664beda2c 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistItem.h
+++ b/modules/gui/macosx/playlist/VLCPlaylistItem.h
@@ -25,12 +25,15 @@
NS_ASSUME_NONNULL_BEGIN
+ at class VLCInputItem;
+
@interface VLCPlaylistItem : NSObject
@property (readonly) vlc_playlist_item_t *playlistItem;
@property (readwrite, retain) NSString *title;
@property (readonly, copy, nullable) NSString *path;
@property (readwrite, assign) vlc_tick_t duration;
+ at property (readonly, nullable) VLCInputItem *inputItem;
@property (readwrite, retain, nullable) NSString *artistName;
@property (readwrite, retain, nullable) NSString *albumName;
diff --git a/modules/gui/macosx/playlist/VLCPlaylistItem.m b/modules/gui/macosx/playlist/VLCPlaylistItem.m
index 92aadfef52..d15bb24170 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistItem.m
+++ b/modules/gui/macosx/playlist/VLCPlaylistItem.m
@@ -26,6 +26,7 @@
#import <vlc_url.h>
#import "extensions/NSString+Helpers.h"
+#import "library/VLCInputItem.h"
@implementation VLCPlaylistItem
@@ -50,6 +51,19 @@
return [NSString stringWithFormat:@"item %p, title: %@ duration %lli", &_playlistItem, _title, _duration];
}
+- (VLCInputItem *)inputItem
+{
+ if (!_playlistItem) {
+ return nil;
+ }
+ input_item_t *p_input = vlc_playlist_item_GetMedia(_playlistItem);
+ if (!p_input) {
+ return nil;
+ }
+ VLCInputItem *inputItem = [[VLCInputItem alloc] initWithInputItem:p_input];
+ return inputItem;
+}
+
- (void)updateRepresentation
{
input_item_t *p_media = vlc_playlist_item_GetMedia(_playlistItem);
diff --git a/modules/gui/macosx/playlist/VLCPlaylistMenuController.m b/modules/gui/macosx/playlist/VLCPlaylistMenuController.m
index 7aeed86620..2cb55cd40b 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistMenuController.m
+++ b/modules/gui/macosx/playlist/VLCPlaylistMenuController.m
@@ -31,16 +31,19 @@
#import "playlist/VLCPlaylistItem.h"
#import "playlist/VLCPlaylistSortingMenuController.h"
#import "windows/VLCOpenWindowController.h"
+#import "panels/VLCInformationWindowController.h"
@interface VLCPlaylistMenuController ()
{
VLCPlaylistController *_playlistController;
VLCPlaylistSortingMenuController *_playlistSortingMenuController;
+ VLCInformationWindowController *_informationWindowController;
NSMenuItem *_playMenuItem;
+ NSMenuItem *_removeMenuItem;
+ NSMenuItem *_informationMenuItem;
NSMenuItem *_revealInFinderMenuItem;
NSMenuItem *_addFilesToPlaylistMenuItem;
- NSMenuItem *_removeMenuItem;
NSMenuItem *_clearPlaylistMenuItem;
NSMenuItem *_sortMenuItem;
}
@@ -69,6 +72,9 @@
_revealInFinderMenuItem = [[NSMenuItem alloc] initWithTitle:_NS("Reveal in Finder") action:@selector(revealInFinder:) keyEquivalent:@""];
_revealInFinderMenuItem.target = self;
+ _informationMenuItem = [[NSMenuItem alloc] initWithTitle:_NS("Information...") action:@selector(showInformationPanel:) keyEquivalent:@""];
+ _informationMenuItem.target = self;
+
_addFilesToPlaylistMenuItem = [[NSMenuItem alloc] initWithTitle:_NS("Add File...") action:@selector(addFilesToPlaylist:) keyEquivalent:@""];
_addFilesToPlaylistMenuItem.target = self;
@@ -80,7 +86,7 @@
[_sortMenuItem setSubmenu:_playlistSortingMenuController.playlistSortingMenu];
_playlistMenu = [[NSMenu alloc] init];
- _playlistMenu.itemArray = @[_playMenuItem, _removeMenuItem, _revealInFinderMenuItem, [NSMenuItem separatorItem], _addFilesToPlaylistMenuItem, _clearPlaylistMenuItem, _sortMenuItem];
+ _playlistMenu.itemArray = @[_playMenuItem, _removeMenuItem, _revealInFinderMenuItem, _informationMenuItem, [NSMenuItem separatorItem], _addFilesToPlaylistMenuItem, _clearPlaylistMenuItem, _sortMenuItem];
}
- (void)play:(id)sender
@@ -102,6 +108,26 @@
[_playlistController removeItemsAtIndexes:self.playlistTableView.selectedRowIndexes];
}
+- (void)showInformationPanel:(id)sender
+{
+ if (!_informationWindowController) {
+ _informationWindowController = [[VLCInformationWindowController alloc] init];
+ }
+
+ NSInteger selectedRow = self.playlistTableView.selectedRow;
+
+ if (selectedRow == -1)
+ return;
+
+ VLCPlaylistItem *playlistItem = [_playlistController.playlistModel playlistItemAtIndex:selectedRow];
+ if (playlistItem == nil)
+ return;
+
+ _informationWindowController.representedInputItem = playlistItem.inputItem;
+
+ [_informationWindowController toggleWindow:sender];
+}
+
- (void)revealInFinder:(id)sender
{
NSInteger selectedRow = self.playlistTableView.selectedRow;
@@ -142,7 +168,8 @@
return (self.playlistTableView.numberOfRows > 0);
} else if (menuItem == _removeMenuItem ||
- menuItem == _playMenuItem) {
+ menuItem == _playMenuItem ||
+ menuItem == _informationMenuItem) {
return (self.playlistTableView.numberOfSelectedRows > 0);
} else if (menuItem == _revealInFinderMenuItem) {
More information about the vlc-commits
mailing list