Home > Filbert

Filbert

Filbert is a project mainly written in Java, it's free.

Android frontend for ArtiCheck

Filbert is the Android front-end for ArtiCheck.

TODO

  • Prototype wireframe: get colours to match

  • Prototype wireframe: get buttons for add/removing.

  • Prototype wireframe: get sections populated in-line instead of as section buttons.

  • Make a new activity that just makes a list of CRs, i.e. an inventory.

  • Icons/symbols drawn on photographs must persist in the database.

  • Be able to undo the last drawn symbol. Don't depict this in a list of previous symbols way for now, just have a single dumb button.

  • Spend 30min refactoring code, making it more maintainable. Mark as X when done, and every few days re-add as a TODO task.

  • Start a technical document for the internals.

  • JavaDoc everything. This is persistent; focus on javadoc'ing one class at the time, thoroughly.

  • Rotate and confirm the condition report becomes the only part of the screen. Rotate again and confirm we go back to a list + condition report view.

QUALITY ASSURANCE TESTING

  • Fix how the back button works. Test thoroughly at all stages of the application.

  • At every stage of the application go home and then return to the application and confirm it works.

  • At every stage of the application rotate between landscape and portrait.

BUGS

X Release builds => proguard => crash using GSON because of something to do with TypeToken and reflection. Either use Jackson or roll your own function to convert JSONArray to List.

  • !! Pretty sure radio buttons are broken, fix them.

  • Right now when using updateContent() to populate the views we just "select" items, rather than explicitly unselecting views that aren't specified, e.g. for check boxes. If we call updateContent() more than once this implies the screen will not be valid because we're not clearing out unselected items, or unspecified items.

DONE

X Create a dummy condition report layout with a bunch of text fields, check boxes, radio buttons, in a scroll view, just to make sure it works.

X Given a form layout JSON string create a condition report layout.

X Add ability to represent a type of form with a given media. For example, if the media is "Painting" then want to have a certain set of fields, field types, and field values.

Field types:
    -   Text.
    -   Checkbox (from fixed set of values).
    -   Radio group (from fixed set of values).

Represent this data in an SQL table as JSON.  Use the JSON to
populate the layout of the condition report from scratch.

X On selection of a given condition report load the correct JSON string from the SQL table and then create the layout.

X Tabs on top of right-hand pane for CR sections.

  • Implement as buttons, scrollable left-to-right.

x Selecting a condition report will pop open a new list, with e.g.

  • Basic info.
  • Painting type.
  • Noticeable damage.
  • Photographs
Some of these list items will depend on what media type you've
selected.  These items will be encoded as JSON in the SQL
table somehow (a given media will have several JSON strings,
each helping to populate this list and the condition report).     

X Complete the database loop - changes to CR is saved back to the database every click and onPause(). And make sure all checkboxes/radio buttons/text fields are populated from the database.

More difficult than it seems; although selecting a new
condition report does call onPause() a lot of the clicking doesn't,
and it should.  Hence the need for background updates.  But
don't update on every click, too heavy?  Background thread
far more complex, so every click is simpler and better.

But what about text fields?  Let's try every update, see
how it goes?

X Make it look pretty. Probably continual task.

X Style the fragments a-la Google I/O 2011 / Gmail.

X Complete CRUD for condition reports; by now RU is done but need to finish off CD. Use addFooterView() on ListView to add new CRs, how to delete? Long click + menu?

X Cannot select more than one checkbox, debug and fix.

X Save photographs into some standard location in on-device memory. Store "file pointers" within SQL database. Save with a thumbnail.

X Make the photograph fragment for a condition report load up the thumbnails for the CR in a grid-type view. Do not attempt to load all thumbnails at once; some background task to load and make it available to the fragment. If a thumbnail isn't loaded display some placeholder.

X Clicking on a photograph thumbnail loads a new fragment that contains just the photograph in a bigger view. Still no annotations.

X Add ability to take photographs using the tablet and associate them with the current condition report. No editing at this stage. No storage.

X Rather than cycliing the photograph lock state to draw additional symbols we let the toolbar buttons lock, and graphically depict this.

Previous:KeyboardLed