Tuesday, July 31, 2007

Week 1 Update

I'm going to attempt weekly updates on the current state of my mileage program. One thing I noticed as I took these screenshots is that once the interface is laid out, it's really hard to show where the progress is. At quick glance, these screens look pretty much like the one I posted a week ago, but I really have put a lot of work into what's happening behind the scenes.

So, we fire up the program:

(click for larger image)

The Delete and Edit buttons require context, so they are disabled until a context is provided (via selection in the table). The Add button is enabled, and is the default for the enter key. We add a tank:

(click for larger image)

I'm thinking about hiding the Reset button when a new tank is being created. I'm not sure it has any value here. Cancel button is of course enabled at any time. The Done button is disabled until the three text fields have been populated...

(click for larger image)

...at which point it enables and becomes default. I do have a problem here that I don't know how to solve. I check to see when typing has begun in each field. This doesn't trigger if the user just tabs through the fields, which is good. As soon as the user starts typing in the third text field (order does not matter), the Done button becomes enabled. But if the user then deletes the text entry, leaving a blank field, the Done button remains enabled. If the user hits Enter, I've just populated an incomplete tank record. I can't change the trigger to when the user leaves the text field, because then the user would have to tab out or click in another field just to enable the Done button. That would annoy me, and isn't intuitive. So until I come up with a better method, I think I'm going to leave the enabling behavior as I have it now, but then poll the text fields to make sure they contain legitimate entries before performing the action.

I enter a few tanks in, and then realize I made a mistake on one of them:

(click for larger image)

I screwed up the date (the sort order is based on the odometer). Eventually I want to handle cases like this programmatically (still don't know if that's a word, but I'm sticking with it). "Say, either the date or the odometer for this tank appears to be incorrect, would you like to make a change?" For now, I just need to notice the negative duration and realize I need to fix it. So I select the appropriate tank, and the Delete and Edit buttons enable. Then I make the change:

(click for larger image)


Yay! So basically functionality is there. Not bad for a week's worth of work, with an average of maybe 2 hours per day spent.

No comments: