louiskirsch / QuickDynalist

Add new items to dynalist quickly (native android app)
https://play.google.com/store/apps/details?id=com.louiskirsch.quickdynalist
GNU General Public License v3.0
35 stars 5 forks source link

Add items with checkbox by default for some lists #19

Closed jaynavar closed 4 years ago

jaynavar commented 4 years ago

Dynalist recently removed the ability to automatically add checkboxes to children of a specific item (https://blog.dynalist.io/psa-checkbox-revamp/). This has messed up my groceries list workflow, as I use items tagged with #quickdynalist for each of the stores I visit and add items to them through Quick Dynalist frequently, but now the newly added items don't have checkboxes.

It would be great if you could mark certain quick-add-lists (i.e. lists/items tagged with #quickdynalist) as "add child item with checkbox". Then whenever you add an item to this specific quick-add-list it will add a checkbox to the item. This would effectively replicate the old behavior of Dynalist.

I know this is a fairly niche feature and likely not worth the effort, but I just wanted to put this out there in case others think it would be useful as well.

louiskirsch commented 4 years ago

Yeah I noticed this issue too and it is driving me nuts. I'm actually not a very big fan of the Dynalist checkbox revamp.

In Quick Dynalist either a list (children of an item) has checkboxes everywhere or nowhere, with the new behavior in Dynalist you have to specify for each item whether it has a checkbox or not. I still haven't quite figured out how Dynalist decides whether to give the new item a checkbox or not. Maybe based on whether the item where the cursor was before had a checkbox?

I don't even understand what the usecase is for having some items with checkboxes and some without. I understand that the goal of this feature was to allow children of children to not have checkboxes, but this would be much better to achieve by defining lists to be 'checklists', non-recursively.

Any thoughts?

louiskirsch commented 4 years ago

Maybe I should declare a list a 'checklist' if any of its children have a checkbox, and automatically have new items in that list report a checkbox to Dynalist.

jaynavar commented 4 years ago

Could there be an extra tag that explicitly marks lists as checklists? Like #quickdynalistchecklist (used instead of #quickdynalist when we want it to be a checklist).

louiskirsch commented 4 years ago

Sure, that would be possible. But the tagging for inboxes is already confusing to most users. Having two ways of denoting checklists (checkbox in Dynalist, tag in QD) will not be very easy to discover and use.

jaynavar commented 4 years ago

Yes, I agree. I think it would be good to provide an explicit mechanism like the tag, and also some heuristic to detect checkbox lists. The issue I have with a heuristic, at least for my use case, is my grocery lists are typically empty so they wouldn't appear as checklists as they have no children, so an explicit tag would be necessary.

For a heuristic, perhaps add item with checkbox if all (rather than any) children at the same nesting level also have checkboxes ?

louiskirsch commented 4 years ago

I'm confused, if you would add an item to an empty list on the desktop, wouldn't it also not have a checkbox?

jaynavar commented 4 years ago

In the new system, yes, it wouldn't have a checkbox on desktop either. In the old system (if I recall correctly) marking "checkbox children" forced a checkbox on the parent item as well (in this case the grocery store name item), and all children then would also have check boxes even if it was the first new child under the grocery store.

Ideally there wouldn't need to be a checkbox on the parent item, as I only want the children to have checkboxes, but if you only want to implement a heuristic approach I would be fine with marking the grocery store items with checkboxes to force the children to have checkboxes. This behavior would be very similar to the old system. In this case you would want to add checkboxes to all children whose parents have checkboxes.

Wherever possible I would prefer explicit mechanisms, as I like marking intent rather than having it inferred, but if adding #quickdynalistchecklist is too niche I understand.

louiskirsch commented 4 years ago

I think I have a good solution. Any list is either a checklist or not a checklist. This can be selected in the menu (as it currently is) with 'Make checklist'. If the item has children, 'Make checklist' is set to true if all of them have checkboxes. If the item has no children, the previous value of make checklist is preserved. New items in the list receive a checkbox if the list is a checklist. Ie, if you delete your finished items, the 'checklist' property is preserved internally and new items will still have checkboxes until you add children with no checkboxes or your manually change the 'Make checklist'.

jaynavar commented 4 years ago

By "list" do you mean a document, or an individual item?

louiskirsch commented 4 years ago

An individual item and all of their children, excluding the children of their children

jaynavar commented 4 years ago

Seems like a great solution! Would definitely meet the needs I have. Thanks!