ref: use UnreadTotal instead of two bool
This commit is contained in:
@@ -66,8 +66,7 @@
|
|||||||
for (FeedGroup *fg in sortedList) {
|
for (FeedGroup *fg in sortedList) {
|
||||||
[menu insertFeedGroupItem:fg withUnread:self.unreadMap].submenu.delegate = self;
|
[menu insertFeedGroupItem:fg withUnread:self.unreadMap].submenu.delegate = self;
|
||||||
}
|
}
|
||||||
UnreadTotal *uct = self.unreadMap[menu.titleIndexPath];
|
[menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]];
|
||||||
[menu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate items for @c FeedArticles menu.
|
/// Generate items for @c FeedArticles menu.
|
||||||
@@ -85,8 +84,7 @@
|
|||||||
break;
|
break;
|
||||||
[menu addItem:[fa newMenuItem]];
|
[menu addItem:[fa newMenuItem]];
|
||||||
}
|
}
|
||||||
UnreadTotal *uct = self.unreadMap[menu.titleIndexPath];
|
[menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]];
|
||||||
[menu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -131,7 +129,7 @@
|
|||||||
// 3. set unread count & enabled header for all parents
|
// 3. set unread count & enabled header for all parents
|
||||||
NSArray<UnreadTotal*> *itms = [self.unreadMap itemsForPath:item.submenu.titleIndexPath create:NO];
|
NSArray<UnreadTotal*> *itms = [self.unreadMap itemsForPath:item.submenu.titleIndexPath create:NO];
|
||||||
for (UnreadTotal *uct in itms.reverseObjectEnumerator) {
|
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 setTitleCount:uct.unread];
|
||||||
item = item.parentItem;
|
item = item.parentItem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
@import Cocoa;
|
@import Cocoa;
|
||||||
@class FeedGroup, MapUnreadTotal;
|
@class FeedGroup, MapUnreadTotal, UnreadTotal;
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap;
|
- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap;
|
||||||
- (void)insertDefaultHeader;
|
- (void)insertDefaultHeader;
|
||||||
// Update menu
|
// Update menu
|
||||||
- (void)setHeaderHasUnread:(BOOL)hasUnread hasRead:(BOOL)hasRead;
|
- (void)setHeaderHasUnread:(UnreadTotal*)count;
|
||||||
- (nullable NSMenuItem*)deepestItemWithPath:(nonnull NSString*)path;
|
- (nullable NSMenuItem*)deepestItemWithPath:(nonnull NSString*)path;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,9 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
|
|||||||
|
|
||||||
|
|
||||||
/// Loop over default header and enable 'OpenAllUnread' and 'TagMarkAllRead' based on unread count.
|
/// 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;
|
NSInteger i = [self indexOfItemWithTag:TagHeaderDelimiter] - 1;
|
||||||
for (; i >= 0; i--) {
|
for (; i >= 0; i--) {
|
||||||
NSMenuItem *item = [self itemAtIndex:i];
|
NSMenuItem *item = [self itemAtIndex:i];
|
||||||
|
|||||||
Reference in New Issue
Block a user