DRY up common patterns for fields
Refactor to bind to an Item container, not just a raw Element
Gets rid of the Column extends Element hack and paves the way for error messages
and other things.
Use more features of the TextInputLayout
Support more text field types
Support reported/item tables
Right now renders using a GridLayout which means all columns are the same width.
No horizontal scrolling or becoming not-a-table for many columns, so big tables
will be a disaster. Does render and work though.
The strategy here is to actually make each cell an "item" in the RecyclerView
instead of each row being an item. Then the layout manager takes care of it.
This means that the end-of-row-ness is just because of column count, and not
actually enforced at all. It also means that as currently built if any row has
a missing field it'll mess up the whole thing.
No type directed rendering or anything yet, just dump it out.
Allow copying result form fields to clipboard
If we get send a form of type submit or cancel, ignore it
These don't make any sense to send to us, but in practise biboumi does and
expects us to ignore it.
Default action if there are none
Spec says that actions must be specified if there are any. In practise, at
least biboumi violates this and sends back no actions at all but is in
"executing" state meaning it expects a next stage. So in this case we should do
something smarter than assuming we're all done. Put up a button for the
execute/default action.
Hide pager when there are no commands
And really hide it, even swipe should not work to get to the blank page
Only setup the command pager when not already set up
Otherwise it gets confused and blanks itself out.
Use radio buttons + EditText for list-single + open
Use radio buttons when there is no existing value
Default to a spinner for list-single
End a session that is over with nothing to say
If status is completed or canceled and there are no children, then there's
nothing more to say so just remove the session.
Show all available actions
Instead of a single "done" button, show all available actions in the footer,
each in a different color (generated the same as avatar backgrounds, etc) with
the action name translated if a translation is available.
The pseudo-action "close" is for when a command is already completed. In this
case, the execute() call will see that the session is already completed and it
will be removed without actually checking the action string at all.
Support boolean fields with checkboxes