Commits on May 1, 2011
Commits on Aug 9, 2010
Commits on Apr 17, 2010
Commits on Apr 16, 2010
  1. Change composer to a category.

    Thanks to dbarker on stack overflow, who suggested adding the composer stuff
    as a category of `UIViewController`. Then all I have to do is use it -- no
    more memory issue because there's no longer any separate proxy object to worry
    about. Phew!
    committed Apr 16, 2010
  2. Add Three20 license.

    committed Apr 16, 2010
  3. Add Three20-based composer.

    Seems to work well with the proxy, except that I can't figure out how to free
    the proxy from memory when I'm done. So I have a memory leak at the moment,
    but it looks good!
    Once I figure out how to deal with the leak, I'll need to get the addressing
    stuff working well and the sending progress.
    committed Apr 16, 2010
Commits on Apr 14, 2010
  1. Add buzzer cell gradient.

    Looks awesome on the phone -- thanks Roger!
    committed Apr 14, 2010
  2. Unbold date.

    I think it makes sense for it to be more invisible until the user actually looks for it (which will not be often).
    committed Apr 14, 2010
  3. Align dates with text.

    User dates are right-aligned.
    committed Apr 14, 2010
Commits on Apr 13, 2010
  1. Add icon shadow.

    With thanks to Roger.
    committed Apr 13, 2010
  2. Calculate cell dimensions based on screen size.

    Need to test with horizontal positioning.
    committed Apr 13, 2010
  3. Switch to new bubbles from Roger.

    committed Apr 13, 2010
Commits on Apr 1, 2010
  1. Start moving To: selection to composer.

    I added a field to select the recipient, but it's kind of funky. Might end up
    using Three20. Its TTMessageController looks ideal, but there's a lot to
    figure otu and its largely undocumented.
    committed Apr 1, 2010
Commits on Mar 31, 2010
  1. Use BuzzerModel instead of typedef.

    Was silly to use the typedef once I realized that BuzzerModel had exactly the
    attributes I needed, and was already easily available in BuzzerViewController.
    Also added some missing memory management for the new `buzzer` attribute in
    committed Mar 31, 2010
  2. Add recipient name to compose window

    I'm pulling the composite name from the address book entry.
    Also fiddled with getting the compose window to come up with the keyboard
    already in place, instead of it also animating, but haven't had any luck yet.
    committed Mar 31, 2010
Commits on Mar 29, 2010
  1. Add address picker when composing.

    This is only when clicking the "new message" icon from the root view. It pops
    up a `ABPeoplePickerNavigationController`, the user can select a recipient
    then select an email address, and then it fades to the
    `ComposeViewController`. The latter appears as a modal view of the picker,
    thus appearing to replace the picker. I also created
    `ComposeViewControllerDelegate` so that the root view controller can have the
    control to dismiss its modal dialog, which is the picker, and that dismisses
    both the picker and the composer at the same time, making it very clean.
    Next up, I need to make it so that the keyboard just appears in the compose
    window, without animation, and then to add the compose window to the buzzer
    controller. Both will need to take the correspondent information and do the
    right thing with it (using a typedef for that for now).
    committed Mar 29, 2010
  2. Move move button to the right.

    committed Mar 29, 2010
  3. Fix height of compose UITextView.

    committed Mar 29, 2010
  4. Start compose window.

    committed Mar 29, 2010
Commits on Mar 14, 2010
  1. Fix some memory leaks.

    committed Mar 14, 2010
  2. Try harder to find my icon.

    Add `findAmongEmails:cacheFor:` to `IconFinder`. It tries to find
    an icon in a list of icons and returns the first it finds,
    caching it for `cacheFor:`. If it's not found, and there isn't some
    image present already, it caches the default icon.
    Then switched `updateMyIcons:` in `RootViewController` to create
    an array of all email addresess, figure out which is the primary,
    and then pass them off to `findAmongEmails:cacheFor:`.
    committed Mar 14, 2010
  3. Remove unused `kCacheRefreshInterval`.

    I think I will just have the download upload icons.
    Also added a few TODOs.
    committed Mar 14, 2010
  4. Restore primary email address setting.

    I've updated `RootViewController` so that, when the config
    controller is dismissed, a new background task is started where
    all the confirmed email addresses are found, the first one saved
    as the primary, and then they're all passed off to the
    `updateThumbsForEmails:` method of `IconFinder`. This refreshes
    all the icons for all email addresses. It has been there a while,
    but was not yet used. It had a simple bug, easily fixed.
    While at it, I changed the setup of the address view so that the
    email field becomes the first responder when it loads if there is
    not already an address.
    committed Mar 14, 2010
  5. Allow insert of first address.

    committed Mar 14, 2010
Commits on Mar 13, 2010
  1. Fix crash when deleting just-added address.

    The table was reloading before the addresses were reloaded. So
    I've changed it to reload the addresses from the address
    controller instead of the config controller.
    While at it, I moved creation of a new address to when the
    request is submitted, not before. I've also eliminated a
    superfluous setting of the accessory type in the config
    committed Mar 13, 2010
  2. Update config view when address view popped off.

    Any time an address view is dismissed, we re-read the data for
    the config view. This is so that any changes in the address view
    are reflected in the config view.
    Doing this is simple, but took forever to figure out:
    * Move the population of the config view data from `viewDidLoad`
      to `ViewWillAppear:`, as the latter is called every time the
      view displays, while the former only the first time it
    * Grab the config view in the addres view's `ViewWillDisappear:`
      method and tell it to reload its data.
    So yeah, there could be times when no real changes are made, but
    that should be fairly rare, and this is a pretty cheap series of
    operations anyway.
    committed Mar 13, 2010
  3. Disable submit button until needed.

    No need to have the submit button enabled until there's something
    to submit. While at it:
    * Make the submit button actually save the new address to the database.
    * Enable the button as soon as any text is typed in.
    * Disable the button again on submit.
    * Use the "Send" button on the keyboard and have it submit when tapped.
    committed Mar 13, 2010