Ranchero-Software / NetNewsWire

RSS reader for macOS and iOS.
https://netnewswire.com/
MIT License
8.42k stars 534 forks source link

Catch Up command #662

Open brentsimmons opened 5 years ago

brentsimmons commented 5 years ago

Catch Up…

Goes at the bottom of the Article menu. Displays a sheet:

Catch Up Mark everything as read older than today in selected accounts: [checkbox] On My Mac [checkbox] FeedBin etc.

[Cancel] [Catch Up]

If the [Catch Up] button is clicked, then it does what it says: marks everything as read older than today in the selected accounts.

Note: the [Catch Up] button is enabled when one or more accounts is enabled.

The list of accounts could be in a scrollable table view, with four lines (good guess?) showing at a time.

The checkbox defaults to unchecked for each account. This way there’s no accidental catching up.

brentsimmons commented 5 years ago

Also note: this should be undoable, like the other mark-read commands.

vincode-io commented 4 years ago

This is something I've wanted to have lately. I think this issue is a good candidate for a beginner wanting to learn Mac programming a little better. It is also something that someone wanting to contribute to iOS could do.

I envision this working quite differently on iOS. I think it would go well in the context menu for Accounts.

vincode-io commented 2 years ago

I'd like to propose an alternate UI that would be more flexible and work well on both iOS and macOS. (Since we don't have an Article menu on iOS.)

I'd like to add a context menu item in the context menu for the Sidebar. This menu item would be available for All Unread, Account, Folders, and Feeds. On macOS this menu should also be added to the Article menu.

Mark Older as Read in "Feed Name"

This context menu would expand a submenu with the following options:

(These are the same durations that BazQux uses for this function. I'm not married to them.)

The "Mark Older" item should only be available if there are unread articles in the selected item. I can't think of a way to efficiently restrict the duration submenu, so we would always have to show all options.

The reason that I would like Catch Up to work more granularly than at the Account level is because different feeds have articles that age differently. For example a news feed has articles that are only relevant for a few days. But a developer blog has articles that can be relevant for years.

Another example is that I have a folder called Racing that has some very old, but still relevant articles about Road Racing. But if I get behind on my Twitter feeds in my Twitter folder, I would want to catch those up without marking my Racing articles as read.

I also think being able to select duration is useful. Maybe I have time to catch up on 2 or 3 days of Twitter posts and would like to do that instead of just saving 1 day.

brentsimmons commented 2 years ago

Good proposal. I agree. Let’s do it. 👍

vincode-io commented 2 years ago

What do you think about changing the Mark All as Read icon? I think that since our Mark as Read icon is the open circle, that the Mark All as Read and Mark Older as Read could use the open circle with arrows in it to denote direction of the marking. For Mark Older as Read the arrow direction would depend on the sort order. For Mark All as Read it would have arrows in both directions.

Here are the icons:

Screen Shot 2022-09-22 at 1 19 05 PM

Here is the proposed Mark All as Read change in action:

Screen Shot 2022-09-23 at 7 38 33 AM

Note: we shouldn't need to define any new entries in AppAssets The markAboveAsReadImage and markBelowAsReadImage already exist. They are currently just triangles though and would be better served as arrows I believe. Changing them to arrows also allows us to change the markAllAsReadImage to something that better shows the relationship between the different Mark functions.

brentsimmons commented 2 years ago

That’s a good idea — I like it. Let’s do it.

Should we add Mark Above as Read and Mark Below as Read to the Mac toolbar? (As not default.)

vincode-io commented 2 years ago

Yeah, I'll add those toolbar items.

bryanculver commented 2 years ago

@vincode-io is this what we're thinking?

image
bryanculver commented 2 years ago

How about this for iOS?

Screen Shot 2022-09-25 at 21 38 38 Screen Shot 2022-09-25 at 21 50 57
vincode-io commented 2 years ago

Instead of "Catch Up" use "Mark Older Than". It is more consistent with our current labels.

vincode-io commented 2 years ago

We should also use a submenu on iOS instead of a dialog.

bryanculver commented 2 years ago

Better?

image
vincode-io commented 2 years ago

We're getting closer.

I think the menu option should read Mark Older Than as Read in "Accidentally in Code" though. It doesn't really roll off the tongue, but it matches our other Mark menu options better.

bryanculver commented 2 years ago

We're getting closer.

I think the menu option should read Mark Older Than as Read in "Accidentally in Code" though. It doesn't really roll off the tongue, but it matches our other Mark menu options better.

image
vincode-io commented 2 years ago

Don't forget the icon. You should use AppAssets.markAboveAsReadImage or AppAssets.markBelowAsReadImage depending on the sort direction of the Timeline.

bryanculver commented 2 years ago
vincode-io commented 2 years ago

That looks really good!

brentsimmons commented 2 years ago

Very nice!

Here’s the tricky part — and I’m not sure if it’s do-able or not:

The truncated feed name should still have the right double quotes, as in: “Accidentall…” instead of “Accidental…

vincode-io commented 2 years ago

I can't see how this could be done in a UIMenu. You would have to be able to compute the truncation based on the runtime menu width as the menu is laid out. There just doesn't seem to be anywhere in UIMenu to hook into to do this.

stuartbreckenridge commented 2 years ago

Do we actually need to mention the feed title?

In the surrounds of a context menu, the feed title is right at the top/bottom...

vincode-io commented 2 years ago

I don't think the name of the Feed name needs to be there. We don't have it on the Mac and it just makes the menu look more cluttered on iOS.

I would like to remove the Feed name from both Mark Older Than and Mark All.

brentsimmons commented 2 years ago

Agreed — let’s remove the feed name from Mark Older Than and Mark All.

bryanculver commented 2 years ago

Agreed — let’s remove the feed name from Mark Older Than and Mark All.

👍 this will be incorporated in my PR when it’s ready

vincode-io commented 2 years ago

We probably want to remove the Feed name from the Timeline context menu's Mark All as Read to be consistent.

Forget what I typed above. We need the Feed name on the Timeline context menu because there may be multiple Feeds in a Smart Feed or a Folder.

vincode-io commented 2 years ago

@brentsimmons Now that we've made our Mark All as Read icons more consistent, I noticed an inconsistency with the Next Unread icon. It uses the open circle which we use to denote read articles. Shouldn't it be a closed circle since we are searching for unread circle?

Suggested change:

Screen Shot 2022-09-29 at 12 02 22 PM

vincode-io commented 2 years ago

Forget my suggestion about changing the Next Unread icon. I tried it on the Mac and it looked weird. It gave the impression that it was in an toggled on state, like one of our filters. Not good.

brentsimmons commented 3 months ago

Reopening because this needs additional verification.