vlc | branch: master | Felix Paul Kühne <[email protected]> | Tue Apr 9 22:50:32 2019 +0200| [e4dfdb0ff4ab94afbf54bbbb39c5f64d3c2d61d9] | committer: Felix Paul Kühne
macosx/main menu: reimplement program selection > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e4dfdb0ff4ab94afbf54bbbb39c5f64d3c2d61d9 --- modules/gui/macosx/menus/VLCMainMenu.m | 40 ++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/modules/gui/macosx/menus/VLCMainMenu.m b/modules/gui/macosx/menus/VLCMainMenu.m index 8d3046c0f4..08caa7bd32 100644 --- a/modules/gui/macosx/menus/VLCMainMenu.m +++ b/modules/gui/macosx/menus/VLCMainMenu.m @@ -174,6 +174,14 @@ selector:@selector(updateTitleAndChapterMenus:) name:VLCPlayerChapterSelectionChanged object:nil]; + [notificationCenter addObserver:self + selector:@selector(updateProgramMenu:) + name:VLCPlayerProgramListChanged + object:nil]; + [notificationCenter addObserver:self + selector:@selector(updateProgramMenu:) + name:VLCPlayerProgramSelectionChanged + object:nil]; [self setupVarMenuItem:_add_intf target:VLC_OBJECT(getIntf()) @@ -575,9 +583,6 @@ input_item_t *p_mediaItem = _playerController.currentMedia; if (p_mediaItem != NULL) { -/* [self setupVarMenuItem:_program target: (vlc_object_t *)p_input - var:"program" selector: @selector(toggleVar:)];*/ - audio_output_t *p_aout = [_playerController mainAudioOutput]; if (p_aout != NULL) { [self setupVarMenuItem:_channels target:VLC_OBJECT(p_aout) @@ -643,7 +648,6 @@ - (void)setSubmenusEnabled:(BOOL)b_enabled { - [_program setEnabled: b_enabled]; [_visual setEnabled: b_enabled]; [_channels setEnabled: b_enabled]; [_deinterlace setEnabled: b_enabled]; @@ -976,6 +980,34 @@ _playerController.selectedChapterIndex = [sender tag]; } +#pragma mark - program handling +- (void)updateProgramMenu:(NSNotification *)notification +{ + [_programMenu removeAllItems]; + + size_t count = [_playerController numberOfPrograms]; + for (size_t x = 0; x < count; x++) { + VLCProgramMetaData *program = [_playerController programAtIndex:x]; + if (program == nil) { + break; + } + NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:program.name + action:@selector(selectProgram:) + keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:program]; + [menuItem setEnabled:YES]; + [menuItem setState:program.selected ? NSOnState : NSOffState]; + [_programMenu addItem:menuItem]; + } + _program.enabled = count > 0 ? YES : NO; +} + +- (void)selectProgram:(NSMenuItem *)sender +{ + [_playerController selectProgram:[sender representedObject]]; +} + #pragma mark - audio menu - (void)refreshAudioDeviceList _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
