[vlc-commits] [Git][videolan/vlc][master] 3 commits: macosx: Add menu item to toggle favorite on media library item(s)
Marvin Scholz (@ePirat)
gitlab at videolan.org
Sun Jul 6 15:54:34 UTC 2025
Marvin Scholz pushed to branch master at VideoLAN / VLC
Commits:
a0d3f7f6 by Claudio Cambra at 2025-07-06T15:41:43+00:00
macosx: Add menu item to toggle favorite on media library item(s)
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
9236cfc6 by Claudio Cambra at 2025-07-06T15:41:43+00:00
macosx: Provide more descriptive and predictable favouriting behaviour in item menus
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
8f523cb6 by Claudio Cambra at 2025-07-06T15:41:43+00:00
macosx: Assign favoriteItem property to menu item directly on instantiation
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
1 changed file:
- modules/gui/macosx/library/VLCLibraryMenuController.m
Changes:
=====================================
modules/gui/macosx/library/VLCLibraryMenuController.m
=====================================
@@ -50,6 +50,9 @@
NSHashTable<NSMenuItem*> *_localInputItemRequiringMenuItems;
NSHashTable<NSMenuItem*> *_folderInputItemRequiringMenuItems;
}
+
+ at property (readwrite) NSMenuItem *favoriteItem;
+
@end
@implementation VLCLibraryMenuController
@@ -91,10 +94,14 @@
keyEquivalent:@""];
bookmarkItem.target = self;
+ _favoriteItem = [[NSMenuItem alloc] initWithTitle:_NS("Toggle Favorite") action:@selector(toggleFavorite:) keyEquivalent:@""];
+ self.favoriteItem.target = self;
+
_libraryMenu = [[NSMenu alloc] initWithTitle:@""];
[_libraryMenu addMenuItemsFromArray:@[
playItem,
appendItem,
+ self.favoriteItem,
bookmarkItem,
revealItem,
deleteItem,
@@ -107,6 +114,7 @@
_mediaItemRequiringMenuItems = [NSHashTable weakObjectsHashTable];
[_mediaItemRequiringMenuItems addObject:playItem];
[_mediaItemRequiringMenuItems addObject:appendItem];
+ [_mediaItemRequiringMenuItems addObject:self.favoriteItem];
[_mediaItemRequiringMenuItems addObject:revealItem];
[_mediaItemRequiringMenuItems addObject:deleteItem];
[_mediaItemRequiringMenuItems addObject:informationItem];
@@ -155,6 +163,20 @@
}
}
[self menuItems:_recentsMediaItemRequiringMenuItems setHidden:anyNonRecent];
+
+ __block BOOL anyUnfavorited = NO;
+ for (VLCLibraryRepresentedItem * const item in self.representedItems) {
+ [item.item iterateMediaItemsWithBlock:^(VLCMediaLibraryMediaItem * _Nonnull const mediaItem) {
+ if (!mediaItem.favorited) {
+ anyUnfavorited = YES;
+ return;
+ }
+ }];
+ if (anyUnfavorited)
+ break;
+ }
+ self.favoriteItem.title = anyUnfavorited ? _NS("Add to Favorites") : _NS("Remove from Favorites");
+ self.favoriteItem.action = anyUnfavorited ? @selector(addFavorite:) : @selector(removeFavorite:);
} else if (_representedInputItems != nil && self.representedInputItems.count > 0) {
[self menuItems:_mediaItemRequiringMenuItems setHidden:YES];
@@ -284,6 +306,25 @@
[_informationWindowController toggleWindow:sender];
}
+- (void)addFavorite:(id)sender
+{
+ [self setItemsFavorite:YES];
+}
+
+- (void)removeFavorite:(id)sender
+{
+ [self setItemsFavorite:NO];
+}
+
+- (void)setItemsFavorite:(BOOL)favorite
+{
+ for (VLCLibraryRepresentedItem * const item in self.representedItems) {
+ [item.item iterateMediaItemsWithBlock:^(VLCMediaLibraryMediaItem * _Nonnull const mediaItem) {
+ [mediaItem setFavorite:favorite];
+ }];
+ }
+}
+
- (void)toggleBookmark:(id)sender
{
if (self.representedInputItems == nil ||
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/87247e6cf3a275680ebf50304969c3b72f0826a5...8f523cb62563868a12dd26fdd14dd2b46a843edc
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/87247e6cf3a275680ebf50304969c3b72f0826a5...8f523cb62563868a12dd26fdd14dd2b46a843edc
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list