2 // ContactsDataSource.m
5 // Created by Quang Anh Do on 10/07/2010.
6 // Copyright 2010 Quang Anh Do. All rights reserved.
9 #import "ContactsDataSource.h"
10 #import "CommonFunctions.h"
12 #import "ContactItemCell.h"
15 @implementation ContactsDataSource
18 if (self = [super init]) {
19 NSDictionary *contactList = [NSKeyedUnarchiver unarchiveObjectWithFile:[applicationDocumentsDirectory() stringByAppendingPathComponent:@"contacts.plist"]];
21 NSMutableDictionary *nameIndexes = [NSMutableDictionary dictionary];
23 for (Contact *contact in contactList) {
25 NSString *urlString = linkToContact(contact.identifier, contact.displayName);
26 TTTableTextItem *contactItem = [TTTableTextItem itemWithText:contact.displayName URL:urlString];
28 // Setup name indexes for section headers
29 NSString *firstLetter = [contact.displayName substringToIndex:1];
30 NSMutableArray *existingArray;
31 if (existingArray = [nameIndexes valueForKey:firstLetter]) {
32 [existingArray addObject:contactItem];
34 NSMutableArray *tempArray = [NSMutableArray array];
35 [nameIndexes setObject:tempArray forKey:firstLetter];
36 [tempArray addObject:contactItem];
39 [self.items addObject:contactItem];
43 self.sections = [[[nameIndexes allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] mutableCopy];
44 self.items = [NSMutableArray array];
46 for (NSString *index in self.sections) {
47 [self.items addObject:[nameIndexes objectForKey:index]];
50 TTTableSummaryItem *countItem = [TTTableSummaryItem itemWithText:[NSString stringWithFormat:@"%d Contacts", [contactList count]] URL:NULL];
51 [[self.items lastObject] addObject:countItem];
57 - (NSArray*)sectionIndexTitlesForTableView:(UITableView*)tableView {
58 return [TTSectionedDataSource lettersForSectionsWithSearch:NO summary:YES];
61 - (Class)tableView:(UITableView*)tableView cellClassForObject:(id)object {
62 return [ContactItemCell class];