[vlc-commits] [Git][videolan/vlc][master] macosx: Add menu entry to mark recent media items as unseen
Steve Lhomme (@robUx4)
gitlab at videolan.org
Tue Jul 1 06:31:23 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
e0f3c14d by Claudio Cambra at 2025-07-01T06:05:05+00:00
macosx: Add menu entry to mark recent media items as unseen
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
=====================================
@@ -27,6 +27,7 @@
#import "library/VLCInputItem.h"
#import "library/VLCLibraryController.h"
+#import "library/VLCLibraryModel.h"
#import "library/VLCLibraryRepresentedItem.h"
#import "library/VLCLibrarySegment.h"
@@ -44,6 +45,7 @@
VLCInformationWindowController *_informationWindowController;
NSHashTable<NSMenuItem*> *_mediaItemRequiringMenuItems;
+ NSHashTable<NSMenuItem*> *_recentsMediaItemRequiringMenuItems;
NSHashTable<NSMenuItem*> *_inputItemRequiringMenuItems;
NSHashTable<NSMenuItem*> *_localInputItemRequiringMenuItems;
NSHashTable<NSMenuItem*> *_folderInputItemRequiringMenuItems;
@@ -78,6 +80,9 @@
NSMenuItem *deleteItem = [[NSMenuItem alloc] initWithTitle:_NS("Delete from Library") action:@selector(moveToTrash:) keyEquivalent:@""];
deleteItem.target = self;
+ NSMenuItem *markUnseenItem = [[NSMenuItem alloc] initWithTitle:_NS("Mark as Unseen") action:@selector(markUnseen:) keyEquivalent:@""];
+ markUnseenItem.target = self;
+
NSMenuItem *informationItem = [[NSMenuItem alloc] initWithTitle:_NS("Information...") action:@selector(showInformation:) keyEquivalent:@""];
informationItem.target = self;
@@ -93,6 +98,7 @@
bookmarkItem,
revealItem,
deleteItem,
+ markUnseenItem,
informationItem,
[NSMenuItem separatorItem],
addItem
@@ -105,6 +111,9 @@
[_mediaItemRequiringMenuItems addObject:deleteItem];
[_mediaItemRequiringMenuItems addObject:informationItem];
+ _recentsMediaItemRequiringMenuItems = [NSHashTable weakObjectsHashTable];
+ [_recentsMediaItemRequiringMenuItems addObject:markUnseenItem];
+
_inputItemRequiringMenuItems = [NSHashTable weakObjectsHashTable];
[_inputItemRequiringMenuItems addObject:playItem];
[_inputItemRequiringMenuItems addObject:appendItem];
@@ -127,11 +136,26 @@
- (void)updateMenuItems
{
+ VLCLibraryModel * const libraryModel = VLCMain.sharedInstance.libraryController.libraryModel;
+ NSArray<VLCMediaLibraryMediaItem *> * const recents = libraryModel.listOfRecentMedia;
+
if (self.representedItems != nil && self.representedItems.count > 0) {
[self menuItems:_inputItemRequiringMenuItems setHidden:YES];
[self menuItems:_localInputItemRequiringMenuItems setHidden:YES];
[self menuItems:_folderInputItemRequiringMenuItems setHidden:YES];
[self menuItems:_mediaItemRequiringMenuItems setHidden:NO];
+
+ BOOL anyNonRecent = NO;
+ for (VLCLibraryRepresentedItem * const item in self.representedItems) {
+ if ([recents indexOfObjectPassingTest:^BOOL(VLCMediaLibraryMediaItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
+ return obj.libraryID == item.item.libraryID;
+ }] == NSNotFound) {
+ anyNonRecent = YES;
+ break;
+ }
+ }
+ [self menuItems:_recentsMediaItemRequiringMenuItems setHidden:anyNonRecent];
+
} else if (_representedInputItems != nil && self.representedInputItems.count > 0) {
[self menuItems:_mediaItemRequiringMenuItems setHidden:YES];
[self menuItems:_inputItemRequiringMenuItems setHidden:NO];
@@ -284,6 +308,14 @@
[defaultCenter postNotificationName:VLCLibraryBookmarkedLocationsChanged object:inputItemMRL];
}
+- (void)markUnseen:(id)sender
+{
+ vlc_medialibrary_t * const p_ml = vlc_ml_instance_get(getIntf());
+ for (VLCLibraryRepresentedItem * const item in self.representedItems) {
+ vlc_ml_media_set_played(p_ml, item.item.libraryID, false);
+ }
+}
+
- (void)setRepresentedItems:(NSArray<VLCLibraryRepresentedItem *> *)items
{
_representedItems = items;
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/e0f3c14d5f4c926b29cfb593b4942184c8f51000
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/e0f3c14d5f4c926b29cfb593b4942184c8f51000
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