This is related to this question I asked here earlier. I want to handle the full range of options for monthly reminders in my Android app. So I handle:
- Repeat on the day of the month (e.g. the 17th of every month)
- Repeat on the same day of the week every month (e.g. the second Sunday of every month)
- Repeat on the number of days from the end of the month (e.g. three days before the end of every month. This is good for remembering to pay rent, for example)
- Repeat on the same day of the week every month, counting from the end of the month (e.g. the last Saturday of every month)
I have a number of questions on how to handle this clearly. The first is what do I do when the given pattern does not occur in a given month (e.g. many months don't have a 31st, and there are only 4 5th Fridays a year)? Based on the responses I got from the last question I'm leaning towards pushing it to the last day of the month if the pattern can't be met. Or the first of the month for the patterns that count from the end. But I have the example of a group I used to belong to that met on every fifth Saturday. If a month didn't have a fifth Saturday, we didn't meet. So I wonder if it would be reasonable to have a checkbox or other boolean selector to switch between a strict pattern match and a flexible pattern match?
My other issue is how to display these things to the user. Currently I have a pretty technical description, but I'm moving everything to a more conversational tone. I'm also changing from my existing system, where users select from a drop-down, to one in which all the options are available in a sidebar and the user can click the option they want and it will disappear from the sidebar and appear in the reminder details (eventually I want the user to also be able to drag and drop). When you click the option (or finish dragging, when I implement that), a dialog appears to customize the required details of the repeat pattern. I'm thinking of something like this:
My tagline is "The most versatile reminder app for Android", and it is that or pretty darn close, but I'm struggling with how to present all of the options that implies in a clean and clear interface.