Unread indicator for groups
This commit is contained in:
@@ -25,6 +25,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
- *UI:* Accessibility hints for most UI elements
|
- *UI:* Accessibility hints for most UI elements
|
||||||
- *UI*: Show welcome message upon first usage (empty db)
|
- *UI*: Show welcome message upon first usage (empty db)
|
||||||
- *UI*: Custom colors via user defaults plist (bar icon tint & unread indicator)
|
- *UI*: Custom colors via user defaults plist (bar icon tint & unread indicator)
|
||||||
|
- *UI:* Unread indicator for groups
|
||||||
- Welcome message also adds Github releases feed
|
- Welcome message also adds Github releases feed
|
||||||
- Config URL scheme `barss:` with `open/preferences`, `config/fixcache`, and `backup/show`
|
- Config URL scheme `barss:` with `open/preferences`, `config/fixcache`, and `backup/show`
|
||||||
|
|
||||||
|
|||||||
@@ -36,23 +36,24 @@
|
|||||||
// ------ General settings ------ (Preferences > General Tab) ------
|
// ------ General settings ------ (Preferences > General Tab) ------
|
||||||
/** default: @c nil */ static NSString* const Pref_defaultHttpApplication = @"defaultHttpApplication";
|
/** default: @c nil */ static NSString* const Pref_defaultHttpApplication = @"defaultHttpApplication";
|
||||||
// ------ Appearance matrix ------ (Preferences > Appearance Tab) ------
|
// ------ Appearance matrix ------ (Preferences > Appearance Tab) ------
|
||||||
/** default: @c YES */ static NSString* const Pref_globalTintMenuIcon = @"globalTintMenuBarIcon";
|
/** default: @c YES */ static NSString* const Pref_globalTintMenuIcon = @"globalTintMenuBarIcon";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalUpdateAll = @"globalUpdateAll";
|
/** default: @c YES */ static NSString* const Pref_globalUpdateAll = @"globalUpdateAll";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalOpenUnread = @"globalOpenUnread";
|
/** default: @c YES */ static NSString* const Pref_globalOpenUnread = @"globalOpenUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalMarkRead = @"globalMarkRead";
|
/** default: @c YES */ static NSString* const Pref_globalMarkRead = @"globalMarkRead";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalMarkUnread = @"globalMarkUnread";
|
/** default: @c YES */ static NSString* const Pref_globalMarkUnread = @"globalMarkUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalUnreadCount = @"globalUnreadCount";
|
/** default: @c YES */ static NSString* const Pref_globalUnreadCount = @"globalUnreadCount";
|
||||||
/** default: @c YES */ static NSString* const Pref_groupOpenUnread = @"groupOpenUnread";
|
/** default: @c YES */ static NSString* const Pref_groupOpenUnread = @"groupOpenUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_groupMarkRead = @"groupMarkRead";
|
/** default: @c YES */ static NSString* const Pref_groupMarkRead = @"groupMarkRead";
|
||||||
/** default: @c YES */ static NSString* const Pref_groupMarkUnread = @"groupMarkUnread";
|
/** default: @c YES */ static NSString* const Pref_groupMarkUnread = @"groupMarkUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_groupUnreadCount = @"groupUnreadCount";
|
/** default: @c YES */ static NSString* const Pref_groupUnreadCount = @"groupUnreadCount";
|
||||||
/** default: @c YES */ static NSString* const Pref_feedOpenUnread = @"feedOpenUnread";
|
/** default: @c NO */ static NSString* const Pref_groupUnreadIndicator = @"groupUnreadIndicator";
|
||||||
/** default: @c YES */ static NSString* const Pref_feedMarkRead = @"feedMarkRead";
|
/** default: @c YES */ static NSString* const Pref_feedOpenUnread = @"feedOpenUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_feedMarkUnread = @"feedMarkUnread";
|
/** default: @c YES */ static NSString* const Pref_feedMarkRead = @"feedMarkRead";
|
||||||
/** default: @c YES */ static NSString* const Pref_feedUnreadCount = @"feedUnreadCount";
|
/** default: @c YES */ static NSString* const Pref_feedMarkUnread = @"feedMarkUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_feedUnreadIndicator = @"feedUnreadIndicator";
|
/** default: @c YES */ static NSString* const Pref_feedUnreadCount = @"feedUnreadCount";
|
||||||
/** default: @c NO */ static NSString* const Pref_feedTruncateTitle = @"feedTruncateTitle";
|
/** default: @c YES */ static NSString* const Pref_feedUnreadIndicator = @"feedUnreadIndicator";
|
||||||
/** default: @c NO */ static NSString* const Pref_feedLimitArticles = @"feedLimitArticles";
|
/** default: @c NO */ static NSString* const Pref_feedTruncateTitle = @"feedTruncateTitle";
|
||||||
|
/** default: @c NO */ static NSString* const Pref_feedLimitArticles = @"feedLimitArticles";
|
||||||
// ------ 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";
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ void UserPrefsInit(void) {
|
|||||||
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_feedUnreadIndicator]);
|
||||||
defaultsAppend(defs, @NO, @[Pref_feedTruncateTitle,
|
defaultsAppend(defs, @NO, @[Pref_groupUnreadIndicator,
|
||||||
|
Pref_feedTruncateTitle,
|
||||||
Pref_feedLimitArticles]);
|
Pref_feedLimitArticles]);
|
||||||
// Display limits & truncation ( defaults write de.relikd.baRSS {KEY} -int 10 )
|
// Display limits & truncation ( defaults write de.relikd.baRSS {KEY} -int 10 )
|
||||||
[defs setObject:[NSNumber numberWithUnsignedInteger:10] forKey:Pref_openFewLinksLimit];
|
[defs setObject:[NSNumber numberWithUnsignedInteger:10] forKey:Pref_openFewLinksLimit];
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>14336</string>
|
<string>14344</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string>public.app-category.news</string>
|
<string>public.app-category.news</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
[self entry:NSLocalizedString(@"Mark all read", nil) c1:Pref_globalMarkRead c2:Pref_groupMarkRead c3:Pref_feedMarkRead];
|
[self entry:NSLocalizedString(@"Mark all read", nil) c1:Pref_globalMarkRead c2:Pref_groupMarkRead c3:Pref_feedMarkRead];
|
||||||
[self entry:NSLocalizedString(@"Mark all unread", nil) c1:Pref_globalMarkUnread c2:Pref_groupMarkUnread c3:Pref_feedMarkUnread];
|
[self entry:NSLocalizedString(@"Mark all unread", nil) c1:Pref_globalMarkUnread c2:Pref_groupMarkUnread c3:Pref_feedMarkUnread];
|
||||||
[self entry:NSLocalizedString(@"Number of unread articles", nil) c1:Pref_globalUnreadCount c2:Pref_groupUnreadCount c3:Pref_feedUnreadCount];
|
[self entry:NSLocalizedString(@"Number of unread articles", nil) c1:Pref_globalUnreadCount c2:Pref_groupUnreadCount c3:Pref_feedUnreadCount];
|
||||||
[self entry:NSLocalizedString(@"Indicator for unread articles", nil) c1:nil c2:nil c3:Pref_feedUnreadIndicator];
|
[self entry:NSLocalizedString(@"Indicator for unread articles", nil) c1:nil c2:Pref_groupUnreadIndicator c3:Pref_feedUnreadIndicator];
|
||||||
[[self entry:NSLocalizedString(@"Truncate article title", nil) c1:nil c2:nil c3:Pref_feedTruncateTitle]
|
[[self entry:NSLocalizedString(@"Truncate article title", nil) c1:nil c2:nil c3:Pref_feedTruncateTitle]
|
||||||
tooltip:NSLocalizedString(@"Truncate article title after 60 characters", nil)];
|
tooltip:NSLocalizedString(@"Truncate article title after 60 characters", nil)];
|
||||||
[[self entry:NSLocalizedString(@"Limit number of articles", nil) c1:nil c2:nil c3:Pref_feedLimitArticles]
|
[[self entry:NSLocalizedString(@"Limit number of articles", nil) c1:nil c2:nil c3:Pref_feedLimitArticles]
|
||||||
|
|||||||
@@ -246,6 +246,7 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
|
|||||||
- (void)setTitleCount:(NSUInteger)count {
|
- (void)setTitleCount:(NSUInteger)count {
|
||||||
if (self.tag == TagTitleCountVisible) {
|
if (self.tag == TagTitleCountVisible) {
|
||||||
self.tag = 0; // clear mask
|
self.tag = 0; // clear mask
|
||||||
|
self.state = NSControlStateValueOff;
|
||||||
NSUInteger loc = [self.title rangeOfString:@" (" options:NSLiteralSearch | NSBackwardsSearch].location;
|
NSUInteger loc = [self.title rangeOfString:@" (" options:NSLiteralSearch | NSBackwardsSearch].location;
|
||||||
if (loc != NSNotFound)
|
if (loc != NSNotFound)
|
||||||
self.title = [self.title substringToIndex:loc];
|
self.title = [self.title substringToIndex:loc];
|
||||||
@@ -253,6 +254,9 @@ typedef NS_ENUM(NSInteger, MenuItemTag) {
|
|||||||
if (count > 0 && UserPrefsBool(self.submenu.isFeedMenu ? Pref_feedUnreadCount : Pref_groupUnreadCount)) {
|
if (count > 0 && UserPrefsBool(self.submenu.isFeedMenu ? 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];
|
||||||
|
if (UserPrefsBool(Pref_groupUnreadIndicator))
|
||||||
|
self.state = NSControlStateValueOn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user