Add custom NSTableViewCell and Core Data model class

- custom TableViewCell for displaying active and Archived  timers.
- TimerEvent data model entity class added.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Configure TableView and DetailView using Storyboard

- Set up outlet connections for custom NSTableView class, MLGTimerCell.
- Configure push segue from TableView to DetailView using manual trigger.
- Added detail disclosure button to prototype cell.
- Configure MLGDetailView with UITextField for event name, and UITextView for even notes.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add proper cleanup and save state methods to AppDelegate.

- Destroy NSTimer object when entering background.
- save NSManagedObjectContext to persistent store when entering background and resigning activity.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add lightweight migration options to Core Data

- reduce chances of data model inconsistency.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add and connect outlet connections.

- Outlets for event title and note text.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Convenience methods added to custom Core Data model entity class.

- public class method to alloc and add new TimerEvent into passed managedObjectContext.
- private convenience method to return entity name.
- public convenience method for updating entity attributes using passed NSDate instance.
- public method to update entity attributes using passed NSDate instance, and state.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Use custom Core Data entity and MLGTimerCell

- change fetchRequest to retrieve custom entity.
- use TimerEvent entity convenience methods to alloc and add new entities to managed object context.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add sections for archived and active timers, and cleanup code.

- fetch request uses TimerEvent entity "sectionName" key path for section titles.
- Timers with HISTORY state are now moved into "Archived" table section.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add NSTimer and timer update methods.

- NSTimer used to update ACTIVE TimerEvent entities every 1/10 second.
- Selecting NEW, ACTIVE or PAUSED table rows will change the state of the corresponding timer: NEW --> ACTIVE, PAUSED --> ACTIVE, ACTIVE --> PAUSED.
- Deleting a timer in the "Active Timers" section of the table will "archive" the timer; the timer is disabled and moved to the "History" section.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Support files

- Core Data model
- Project, info.plist

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add public method for setting up new cells

- Configure cells with passed TimerEvent object.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Add save and cancel methods

- save method connected to corresponding navigation bar button.
- saves directly to managedObjectContext.
- cancel method connected to corresponding navigation bar button.
- cancel removes the TimerEvent entity from the managedObjectContext if it is new.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Code cleanup and formatting.

- Remove unused methods.
- Remove boilerplate comments.

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Untrack entitlements

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>
Update gitignore

Signed-off-by: Christopher Morse <dignanmorse@gmail.com>