[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