vlc | branch: master | Felix Paul Kühne <[email protected]> | Sun Apr 7 17:08:19 2019 +0200| [7267669a9fd0c78303582b9b65c3246a50808045] | committer: Felix Paul Kühne
macosx/main menu: reimplement title/chapter selection > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7267669a9fd0c78303582b9b65c3246a50808045 --- modules/gui/macosx/menus/VLCMainMenu.m | 76 ++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 9 deletions(-) diff --git a/modules/gui/macosx/menus/VLCMainMenu.m b/modules/gui/macosx/menus/VLCMainMenu.m index 16b632add8..8d3046c0f4 100644 --- a/modules/gui/macosx/menus/VLCMainMenu.m +++ b/modules/gui/macosx/menus/VLCMainMenu.m @@ -127,6 +127,7 @@ _rendererMenuController.rendererNoneItem = _rendererNoneItem; _rendererMenuController.rendererMenu = _rendererMenu; [self updateTrackHandlingMenus:nil]; + [self updateTitleAndChapterMenus:nil]; NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:self @@ -161,6 +162,18 @@ selector:@selector(updateTrackHandlingMenus:) name:VLCPlayerCurrentMediaItemChanged object:nil]; + [notificationCenter addObserver:self + selector:@selector(updateTitleAndChapterMenus:) + name:VLCPlayerTitleListChanged + object:nil]; + [notificationCenter addObserver:self + selector:@selector(updateTitleAndChapterMenus:) + name:VLCPlayerTitleSelectionChanged + object:nil]; + [notificationCenter addObserver:self + selector:@selector(updateTitleAndChapterMenus:) + name:VLCPlayerChapterSelectionChanged + object:nil]; [self setupVarMenuItem:_add_intf target:VLC_OBJECT(getIntf()) @@ -563,13 +576,7 @@ if (p_mediaItem != NULL) { /* [self setupVarMenuItem:_program target: (vlc_object_t *)p_input - var:"program" selector: @selector(toggleVar:)]; - - [self setupVarMenuItem:_title target: (vlc_object_t *)p_input - var:"title" selector: @selector(toggleVar:)]; - - [self setupVarMenuItem:_chapter target: (vlc_object_t *)p_input - var:"chapter" selector: @selector(toggleVar:)];*/ + var:"program" selector: @selector(toggleVar:)];*/ audio_output_t *p_aout = [_playerController mainAudioOutput]; if (p_aout != NULL) { @@ -637,8 +644,6 @@ - (void)setSubmenusEnabled:(BOOL)b_enabled { [_program setEnabled: b_enabled]; - [_title setEnabled: b_enabled]; - [_chapter setEnabled: b_enabled]; [_visual setEnabled: b_enabled]; [_channels setEnabled: b_enabled]; [_deinterlace setEnabled: b_enabled]; @@ -918,6 +923,59 @@ [_playerController unselectTracksFromCategory:(enum es_format_category_e)sender.tag]; } +#pragma mark - title and chapter handling +- (void)updateTitleAndChapterMenus:(NSNotification *)aNotification +{ + [_titleMenu removeAllItems]; + [_chapterMenu removeAllItems]; + + size_t count = [_playerController numberOfTitlesOfCurrentMedia]; + size_t selectedIndex = [_playerController selectedTitleIndex]; + for (size_t x = 0; x < count; x++) { + const struct vlc_player_title *p_title = [_playerController titleAtIndexForCurrentMedia:x]; + if (p_title == NULL) { + break; + } + NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:toNSStr(p_title->name) + action:@selector(selectTitle:) + keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setTag:x]; + [menuItem setEnabled:YES]; + [menuItem setState: x == selectedIndex ? NSOnState : NSOffState]; + [_titleMenu addItem:menuItem]; + } + _title.enabled = count > 0 ? YES : NO; + + count = [_playerController numberOfChaptersForCurrentTitle]; + selectedIndex = [_playerController selectedChapterIndex]; + for (size_t x = 0; x < count; x++) { + const struct vlc_player_chapter *p_chapter = [_playerController chapterAtIndexForCurrentTitle:x]; + if (p_chapter == NULL) { + break; + } + NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:toNSStr(p_chapter->name) + action:@selector(selectChapter:) + keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setTag:x]; + [menuItem setEnabled:YES]; + [menuItem setState: x == selectedIndex ? NSOnState : NSOffState]; + [_chapterMenu addItem:menuItem]; + } + _chapter.enabled = count > 0 ? YES : NO; +} + +- (void)selectTitle:(NSMenuItem *)sender +{ + _playerController.selectedTitleIndex = [sender tag]; +} + +- (void)selectChapter:(NSMenuItem *)sender +{ + _playerController.selectedChapterIndex = [sender tag]; +} + #pragma mark - audio menu - (void)refreshAudioDeviceList _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
