feat: show hidden articles by holding down option key

This commit is contained in:
relikd
2025-12-02 18:48:46 +01:00
parent 7a805ccdc4
commit ab71c51380
5 changed files with 7 additions and 5 deletions

View File

@@ -4,6 +4,7 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface BarMenu : NSObject <NSMenuDelegate> @interface BarMenu : NSObject <NSMenuDelegate>
@property (assign) BOOL showHidden;
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithStatusItem:(BarStatusItem*)statusItem NS_DESIGNATED_INITIALIZER; - (instancetype)initWithStatusItem:(BarStatusItem*)statusItem NS_DESIGNATED_INITIALIZER;
@end @end

View File

@@ -64,7 +64,7 @@
- (void)setFeedGroups:(NSArray<FeedGroup*>*)sortedList forMenu:(NSMenu*)menu { - (void)setFeedGroups:(NSArray<FeedGroup*>*)sortedList forMenu:(NSMenu*)menu {
[menu insertDefaultHeader]; [menu insertDefaultHeader];
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 showHidden:_showHidden].submenu.delegate = self;
} }
[menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]]; [menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]];
} }
@@ -78,7 +78,7 @@
BOOL onlyUnread = UserPrefsBool(Pref_feedUnreadOnly); BOOL onlyUnread = UserPrefsBool(Pref_feedUnreadOnly);
for (FeedArticle *fa in sortedList) { for (FeedArticle *fa in sortedList) {
if (onlyUnread && !fa.unread) if (onlyUnread && !fa.unread && !_showHidden)
continue; continue;
if (--mc < 0) // mc == 0 will first decrement to -1, then evaluate if (--mc < 0) // mc == 0 will first decrement to -1, then evaluate
break; break;

View File

@@ -152,6 +152,7 @@
-(void)menuWillOpen:(NSMenu *)menu { -(void)menuWillOpen:(NSMenu *)menu {
_mainMenu = menu; // autoreleased once closed _mainMenu = menu; // autoreleased once closed
self.barMenu = [[BarMenu alloc] initWithStatusItem:self]; self.barMenu = [[BarMenu alloc] initWithStatusItem:self];
self.barMenu.showHidden = NSEvent.modifierFlags & NSEventModifierFlagOption;
[self insertMainMenuHeader:menu]; [self insertMainMenuHeader:menu];
[self.barMenu menuNeedsUpdate:menu]; [self.barMenu menuNeedsUpdate:menu];

View File

@@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (readonly) BOOL isFeedMenu; @property (readonly) BOOL isFeedMenu;
// Generator // Generator
- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap; - (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap showHidden:(BOOL)showHidden;
- (void)insertDefaultHeader; - (void)insertDefaultHeader;
// Update menu // Update menu
- (void)setHeaderHasUnread:(UnreadTotal*)count; - (void)setHeaderHasUnread:(UnreadTotal*)count;

View File

@@ -44,7 +44,7 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
#pragma mark - Generator - #pragma mark - Generator -
/// Create new @c NSMenuItem with empty submenu and append it to the menu. @return Inserted item. /// Create new @c NSMenuItem with empty submenu and append it to the menu. @return Inserted item.
- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap { - (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap showHidden:(BOOL)showHidden {
unichar chr = '-'; unichar chr = '-';
NSMenuItem *item = nil; NSMenuItem *item = nil;
switch (fg.type) { switch (fg.type) {
@@ -57,7 +57,7 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
NSUInteger unread = unreadMap[[t substringFromIndex:2]].unread; NSUInteger unread = unreadMap[[t substringFromIndex:2]].unread;
// Check user preferences to show only unread entries // Check user preferences to show only unread entries
if (unread == 0 if (unread == 0 && !showHidden
&& (fg.type == FEED || fg.type == GROUP) && (fg.type == FEED || fg.type == GROUP)
&& UserPrefsBool(Pref_groupUnreadOnly)) { && UserPrefsBool(Pref_groupUnreadOnly)) {
item.hidden = YES; item.hidden = YES;