ref: use UnreadTotal instead of two bool

This commit is contained in:
relikd
2025-07-21 13:14:01 +02:00
parent fc6c3a3df2
commit 131bfaa14d
3 changed files with 8 additions and 8 deletions

View File

@@ -66,8 +66,7 @@
for (FeedGroup *fg in sortedList) {
[menu insertFeedGroupItem:fg withUnread:self.unreadMap].submenu.delegate = self;
}
UnreadTotal *uct = self.unreadMap[menu.titleIndexPath];
[menu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
[menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]];
}
/// Generate items for @c FeedArticles menu.
@@ -85,8 +84,7 @@
break;
[menu addItem:[fa newMenuItem]];
}
UnreadTotal *uct = self.unreadMap[menu.titleIndexPath];
[menu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
[menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]];
}
@@ -131,7 +129,7 @@
// 3. set unread count & enabled header for all parents
NSArray<UnreadTotal*> *itms = [self.unreadMap itemsForPath:item.submenu.titleIndexPath create:NO];
for (UnreadTotal *uct in itms.reverseObjectEnumerator) {
[item.submenu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
[item.submenu setHeaderHasUnread:uct];
[item setTitleCount:uct.unread];
item = item.parentItem;
}

View File

@@ -1,5 +1,5 @@
@import Cocoa;
@class FeedGroup, MapUnreadTotal;
@class FeedGroup, MapUnreadTotal, UnreadTotal;
NS_ASSUME_NONNULL_BEGIN
@@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap;
- (void)insertDefaultHeader;
// Update menu
- (void)setHeaderHasUnread:(BOOL)hasUnread hasRead:(BOOL)hasRead;
- (void)setHeaderHasUnread:(UnreadTotal*)count;
- (nullable NSMenuItem*)deepestItemWithPath:(nonnull NSString*)path;
@end

View File

@@ -92,7 +92,9 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
/// Loop over default header and enable 'OpenAllUnread' and 'TagMarkAllRead' based on unread count.
- (void)setHeaderHasUnread:(BOOL)hasUnread hasRead:(BOOL)hasRead {
- (void)setHeaderHasUnread:(UnreadTotal*)count {
BOOL hasUnread = count.unread > 0;
BOOL hasRead = count.unread < count.total;
NSInteger i = [self indexOfItemWithTag:TagHeaderDelimiter] - 1;
for (; i >= 0; i--) {
NSMenuItem *item = [self itemAtIndex:i];