feat: introduce new Pref_article options

This commit is contained in:
relikd
2025-12-11 15:46:40 +01:00
parent 5d339b8125
commit 2e77f67102
6 changed files with 14 additions and 11 deletions

View File

@@ -60,7 +60,7 @@
NSMenuItem *item = [NSMenuItem new]; NSMenuItem *item = [NSMenuItem new];
item.title = [self shortArticleName]; item.title = [self shortArticleName];
item.enabled = (self.link.length > 0); item.enabled = (self.link.length > 0);
item.state = (self.unread && UserPrefsBool(Pref_feedUnreadIndicator) ? NSControlStateValueOn : NSControlStateValueOff); item.state = (self.unread && UserPrefsBool(Pref_articleUnreadIndicator) ? NSControlStateValueOn : NSControlStateValueOff);
item.onStateImage = [NSImage imageNamed:RSSImageMenuItemUnread]; item.onStateImage = [NSImage imageNamed:RSSImageMenuItemUnread];
item.accessibilityLabel = (self.unread ? NSLocalizedString(@"article: unread", @"accessibility label, feed menu item") : NSLocalizedString(@"article: read", @"accessibility label, feed menu item")); item.accessibilityLabel = (self.unread ? NSLocalizedString(@"article: unread", @"accessibility label, feed menu item") : NSLocalizedString(@"article: read", @"accessibility label, feed menu item"));
// truncate tooltip // truncate tooltip

View File

@@ -33,9 +33,11 @@
/** default: @c YES */ static NSString* const Pref_feedMarkUnread = @"feedMarkUnread"; /** default: @c YES */ static NSString* const Pref_feedMarkUnread = @"feedMarkUnread";
/** default: @c NO */ static NSString* const Pref_feedUnreadOnly = @"feedUnreadOnly"; /** default: @c NO */ static NSString* const Pref_feedUnreadOnly = @"feedUnreadOnly";
/** default: @c YES */ static NSString* const Pref_feedUnreadCount = @"feedUnreadCount"; /** default: @c YES */ static NSString* const Pref_feedUnreadCount = @"feedUnreadCount";
/** default: @c YES */ static NSString* const Pref_feedUnreadIndicator = @"feedUnreadIndicator"; /** default: @c NO */ static NSString* const Pref_feedUnreadIndicator = @"feedUnreadIndicator";
/** default: @c NO */ static NSString* const Pref_feedTruncateTitle = @"feedTruncateTitle"; /** default: @c NO */ static NSString* const Pref_feedTruncateTitle = @"feedTruncateTitle";
/** default: @c NO */ static NSString* const Pref_feedLimitArticles = @"feedLimitArticles"; /** default: @c NO */ static NSString* const Pref_feedLimitArticles = @"feedLimitArticles";
/** default: @c NO */ static NSString* const Pref_articleUnreadOnly = @"articleUnreadOnly";
/** default: @c YES */ static NSString* const Pref_articleUnreadIndicator = @"articleUnreadIndicator";
// ------ Hidden preferences ------ only modifiable via `defaults write de.relikd.baRSS {KEY}` ------ // ------ Hidden preferences ------ only modifiable via `defaults write de.relikd.baRSS {KEY}` ------
/** default: @c 10 */ static NSString* const Pref_openFewLinksLimit = @"openFewLinksLimit"; /** default: @c 10 */ static NSString* const Pref_openFewLinksLimit = @"openFewLinksLimit";
/** default: @c 60 */ static NSString* const Pref_shortArticleNamesLimit = @"shortArticleNamesLimit"; /** default: @c 60 */ static NSString* const Pref_shortArticleNamesLimit = @"shortArticleNamesLimit";

View File

@@ -17,12 +17,12 @@ void UserPrefsInit(void) {
Pref_globalMarkRead, Pref_groupMarkRead, Pref_feedMarkRead, Pref_globalMarkRead, Pref_groupMarkRead, Pref_feedMarkRead,
Pref_globalMarkUnread, Pref_groupMarkUnread, Pref_feedMarkUnread, Pref_globalMarkUnread, Pref_groupMarkUnread, Pref_feedMarkUnread,
Pref_globalUnreadCount, Pref_groupUnreadCount, Pref_feedUnreadCount, Pref_globalUnreadCount, Pref_groupUnreadCount, Pref_feedUnreadCount,
Pref_feedUnreadIndicator Pref_articleUnreadIndicator
]); ]);
defaultsAppend(defs, @NO, @[ defaultsAppend(defs, @NO, @[
Pref_globalToggleHidden, Pref_globalToggleHidden,
Pref_groupUnreadOnly, Pref_feedUnreadOnly, Pref_groupUnreadOnly, Pref_feedUnreadOnly, Pref_articleUnreadOnly,
Pref_groupUnreadIndicator, Pref_groupUnreadIndicator, Pref_feedUnreadIndicator,
Pref_feedTruncateTitle, Pref_feedTruncateTitle,
Pref_feedLimitArticles Pref_feedLimitArticles
]); ]);

View File

@@ -75,7 +75,7 @@
NSInteger mc = NSIntegerMax; NSInteger mc = NSIntegerMax;
if (UserPrefsBool(Pref_feedLimitArticles)) if (UserPrefsBool(Pref_feedLimitArticles))
mc = UserPrefsInt(Pref_articlesInMenuLimit); mc = UserPrefsInt(Pref_articlesInMenuLimit);
BOOL onlyUnread = UserPrefsBool(Pref_feedUnreadOnly); BOOL onlyUnread = UserPrefsBool(Pref_articleUnreadOnly);
for (FeedArticle *fa in sortedList) { for (FeedArticle *fa in sortedList) {
if (onlyUnread && !fa.unread && !_showHidden) if (onlyUnread && !fa.unread && !_showHidden)

View File

@@ -188,7 +188,7 @@
if (UserPrefsBool(Pref_globalToggleHidden)) { if (UserPrefsBool(Pref_globalToggleHidden)) {
NSMenuItem *toggleHidden = [menu addItemWithTitle:NSLocalizedString(@"Show hidden feeds", nil) action:@selector(toggleHiddenArticles) keyEquivalent:@"h"]; NSMenuItem *toggleHidden = [menu addItemWithTitle:NSLocalizedString(@"Show hidden feeds", nil) action:@selector(toggleHiddenArticles) keyEquivalent:@"h"];
toggleHidden.target = self; toggleHidden.target = self;
toggleHidden.enabled = !self.holdingOptKey && (UserPrefsBool(Pref_groupUnreadOnly) || UserPrefsBool(Pref_feedUnreadOnly)); toggleHidden.enabled = !self.holdingOptKey && (UserPrefsBool(Pref_groupUnreadOnly) || UserPrefsBool(Pref_feedUnreadOnly) || UserPrefsBool(Pref_articleUnreadOnly));
[toggleHidden setState:self.barMenu.showHidden ? NSControlStateValueOn : NSControlStateValueOff]; [toggleHidden setState:self.barMenu.showHidden ? NSControlStateValueOn : NSControlStateValueOff];
if (!toggleHidden.enabled) { if (!toggleHidden.enabled) {
toggleHidden.toolTip = self.holdingOptKey toggleHidden.toolTip = self.holdingOptKey

View File

@@ -58,8 +58,8 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
// Check user preferences to show only unread entries // Check user preferences to show only unread entries
if (unread == 0 && !showHidden if (unread == 0 && !showHidden
&& (fg.type == FEED || fg.type == GROUP) && ((fg.type == GROUP && UserPrefsBool(Pref_groupUnreadOnly))
&& UserPrefsBool(Pref_groupUnreadOnly)) { || (fg.type == FEED && UserPrefsBool(Pref_feedUnreadOnly)))) {
item.hidden = YES; item.hidden = YES;
} }
@@ -212,11 +212,12 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
if (loc != NSNotFound) if (loc != NSNotFound)
self.title = [self.title substringToIndex:loc]; self.title = [self.title substringToIndex:loc];
} }
if (count > 0 && UserPrefsBool(self.submenu.isFeedMenu ? Pref_feedUnreadCount : Pref_groupUnreadCount)) { BOOL isFeed = self.submenu.isFeedMenu;
if (count > 0 && UserPrefsBool(isFeed ? Pref_feedUnreadCount : Pref_groupUnreadCount)) {
self.tag = TagTitleCountVisible; // apply new mask self.tag = TagTitleCountVisible; // apply new mask
self.title = [self.title stringByAppendingFormat:@" (%ld)", count]; self.title = [self.title stringByAppendingFormat:@" (%ld)", count];
self.onStateImage = [NSImage imageNamed:RSSImageMenuItemUnread]; self.onStateImage = [NSImage imageNamed:RSSImageMenuItemUnread];
if (UserPrefsBool(Pref_groupUnreadIndicator)) if (UserPrefsBool(isFeed ? Pref_feedUnreadIndicator : Pref_groupUnreadIndicator))
self.state = NSControlStateValueOn; self.state = NSControlStateValueOn;
} }
} }