mpcjanssen / simpletask-android

GNU General Public License v3.0
547 stars 128 forks source link

Please add a time picker #192

Open geckolinux opened 9 years ago

geckolinux commented 9 years ago

Hello, I often have a due time in my todos. I know that Simpletask lets me create a calendar reminder, but I would prefer to see it in my todo. Of course I can type it into the todo, but an quick time picker would be faster. Thanks a lot!

mpcjanssen commented 9 years ago

Todo.txt doesn't really define timestamps so I am a but hesitant to add this. Any reason time specific tasks can't be added on your calendar?

geckolinux commented 9 years ago

Thanks for taking a look at this. Well, I usually don't set reminders, I just need to see the date and time in my todo. I prefer to have as much information as possible all in one place in my todo.txt, and I don't use the Android calendar much. When I schedule an appointment with somebody, I usually want to quickly jot down the date and time before I forget, so having to create my todo item with a date, and then save it, then be switched to the Android calendar to create a reminder and again set the FROM and UNTIL date (with a date roller utility instead of a calendar picker, which I don't like at all), and disable the alarm that is automatically created, is kind of a long and clumsy process for my workflow.

Actually this reminds me of an auxiliary bug: Does the Android Calendar/Reminder integration used in Simpletask permit passing more information to the reminder, such as the date and time? As noted above, even if I have a date set in Simpletask, I again have to set it in the reminder.

Thanks again for your time.

smichel17 commented 8 years ago

@mpcjanssen This still something you'd like to do sooner, or tag it with someday/maybe?

jumper047 commented 8 years ago

@mpcjanssen, +1 for this. Don't use android calendar at all, but it is very conveniently on smartwatches (i use Pebble with timeline interface). I need to set reminder manually for every planned task:(.

vojtechkral commented 8 years ago

I do this by simply appending the time to the task. For example Dentist due:2016-07-15 11:00. Not perfect but works fairly well...

smichel17 commented 8 years ago

@mpcjanssen @vojtechkral Would it break anything if we allowed simpletask to support timestamps with due:YYYY-MM-DD:HH:MM? Then calendar reminders could create appointments at the given time (or at a default time).

I'm not advocating that we do this. I am curious how much compatibility we'd break, doing it, so I can form an opinion about whether we should or not.

jumper047 commented 8 years ago

@smichel17, IMHO variant with due:YYYY-MM-DD HH:MM is better. As vojtechkral, i also use it. And it don't break anything.

smichel17 commented 8 years ago

Or maybe we could just formalize the way @vojtechkral does things: if there is a task with a due date, any string with the form HH:MM or HH:MMam/HH:MMpm could be interpreted as the desired time to set the calendar appointment.

edit: haha, @jumper047 beat me to it

smichel17 commented 8 years ago

Here's some questions to think about / my conclusions:

Say I have an existing task, dentist at 11:20 and then I use simpletask to add a date to it. Is the result dentist at 11:20 due:2016-06-23 or is it dentist at due:2016-06-23 11:20? Seems like it should be the first one. Does the calendar appointment that gets added start at 11:20 or at the default time? Again, seems like the first.

What if I need to leave my house at 10:40, so I want a reminder at THAT time? (I also want to include the time of the appointment). That's easy enough: dentist at 11:20 due:2016-06-23 10:40 would produce a calendar appointment at 10:40 and (correctly) interpret 11:20 as just part of the task.

What happens when I already have dentist at 11:20 due:2016-06-23 as a task, and I want to add the 10:40 reminder to it? Is the result dentist at 11:20 t:2016-06-22 10:40 or dentist at 10:40 due:2016-06-23? Again, seems like it should be the first one.

But what if I want to set the reminder back to the default time? Again, there's two options: dentist at 11:20 due:2016-06-23 or dentist at due:2016-06-23 Here's where things stop making sense. The second option seems clearly broken. But according to the first paragraph, the first option should have the calendar reminder at 11:20, not the default time. Do I have to remove the specific time twice to get that?

My conclusion is that if we were to implement this, HH:MM would be position-dependent: it would need to come immediately after the due date or simpletask will count it as part of the text of the task.

jumper047 commented 8 years ago

Oh, i understand right usecase for reminders:D. I think, if I create a task "dentist at 11:00 due:2016-06-22" Simpletask automatically adds an entry in the calendar of the specified date and time. If I want to remind myself that I need to go, I create reminder, and set the time 10:20. About position - it better to be position dependent, i think. For example - "Make a bet for 10:12 on next match due:2016-07-01 17:00")))).

vojtechkral commented 8 years ago

This idea comes up every now and then (such as in #370 and #210), but is hard to get right without breaking too many things or making things very complicated.

smichel17 commented 8 years ago

@vojtechkral @mpcjanssen What do you think about this idea?


  1. Remove the current automatic calendar reminder feature entirely.
  2. Support a new extension: rem:YYYY-MM-DD:HH:MM. (edit: or just r: instead of rem:)
    • Any task with this extension will have a calendar reminder be created on that date at that time.
    • If no time is given (just rem:YYYY-MM-DD), add it to the calendar but do not set any reminders.
    • Multiple reminders work fine. If they're on different days, create multiple calendar appointments for those days. If they're on the same day, create a single appointment with multiple reminders.
    • Repurpose the "Set Reminder" functionality so instead of opening the calendar app, it adds a reminder to the task.
      • Add an option to clear all reminders.
  3. Optional: remove support for the due: extension -> people should use the rem: extension instead.
    • Alternative: Don't use rem:, but instead change due: to work the way rem: was described.
    • I wanted to include this here because it's related content-wise, but there's another discussion we should have about design philosophy before we talk about it. I'll make a separate issue about that. #465
vojtechkral commented 8 years ago

@smichel17 I'm not sure about that. It could work, but from my experience so far I'd say trying to turn Simpletask into a calendar/scheduling app doesn't work well without making it complex. Even your proposal sounds fairly complex, although it is probably the best one so far...

The root problem - the root of all evil - and the reason why I started trying to solve the problem in Simpletask in the first place - are crappy Android calendar apps. What would solve the problem for me would be a calendar app with a decent UX. So, I'm inclined to:

  1. Deliver only bugfixes-type of improvements to Simpletask calendar sync
  2. Fork Etar (which I just did) and try to hack on it, see where it takes me
smichel17 commented 8 years ago

@vojtechkral in the context of #465

I agree with you that Simpletask is not a calendar app or calendar-managing app and should not be, and the real solution is a good calendar app for android. I'd be happy to work with you doing UX work on your etar fork.

I think it's important to distinguish between backend complexity and UX complexity. My solution may be more complicated in the backend, but its interface is much simpler.

The current solution says,

If you want simpletask to add anything to your calendar, you can choose between a manual reminder, which is set through your native calendar app and cannot be unset through simpletask, and automatic reminders. If you use automatic reminders, you need to go to the settings and enable that type of reminder, then decide what time the reminder should be set at and how many days before the threshold/due date it should be set (both of which must be the same for all reminders and the same between threshold & due dates). Then reminders will automatically be created on their own dedicated simpletask calendar.

My solution says,

If you want simpletask to create a reminder, there's an extension for that, rem:YYYY-MM-DD:HH:MM. One reminder will be added to a dedicated simpletask calendar for each reminder that is set in the task. The simpletask interface allows you to add another reminder or to clear all existing reminders.

Basically, we're adding a small amount of functionality to the "set reminder" feature, and then removing the "Calendar reminders" feature entirely.

mpcjanssen commented 8 years ago

I favor leaving everything as it is. I can see the use for auto syncing all due dates or setting specific reminders. But to make a full blown calendar out of it goes beyond what simpletask should be. Its not a calendar app.

mpcjanssen commented 8 years ago

Only thing to consider if adding a time shortcut is a option.

smichel17 commented 8 years ago

I am a little confused. In my mind, my proposal makes simpletask less like a calendar app.

Automatic reminders based on due date seems more like a calendar app to me than manually adding reminders via a todo.txt extension. I think reminders are also more fitting than due dates. Due dates should go on your calendar. Although I don't think you should need reminders either, they seem to be much more in the spirit of GTD than due dates.

My proposal also allows us to eliminate every setting related to calendar reminders, which is a pretty big win in my mind.

Am I missing something, that makes my proposal more like a calendar app than Simpletask is now?

krayon commented 8 years ago

Regarding date formats, currently YYYY-MM-DD complies with ISO8601 ( https://en.wikipedia.org/wiki/ISO_8601 ) and I would encourage continued compliance regardless of what solution is chosen. This taken the form YYYY-MM-DD'T'HH:MM ('T' being literal), eg: 2016-06-25T00:33. Standards == Good.

mpcjanssen commented 8 years ago

@krayon , the date format will not change. Besides possibly breaking ISO8601 compatibility, it will also break the dates in other todo.txt clients, so that's not an option.

Again for this issue, the only thing I am considering is if I want to add a time picker. I will consider @smichel17 's idea separately. I have less problems with introducing a new extension if it makes sense.

mpcjanssen commented 8 years ago

For any general reminder discussion, please see #466

smichel17 commented 8 years ago

As per my big long recent comment in #466, I think we should not add a time picker for the due: extension.