├── Source ├── Main │ ├── Utilities │ │ ├── NSObject+Extensions.h │ │ └── NSObject+Extensions.m │ ├── Services │ │ ├── APIServices+Parsing.h │ │ ├── APIServices.h │ │ ├── APIServices+Utils.h │ │ ├── BaseServices.h │ │ ├── APIServices+Parsing.m │ │ ├── BaseServices.m │ │ ├── APIServices+Utils.m │ │ └── APIServices.m │ ├── main.m │ ├── Models │ │ ├── Surname.m │ │ └── Surname.h │ ├── Views │ │ ├── SurnamesDataSource.h │ │ ├── ChoicesListDataSource.h │ │ ├── BaseWebViewController.h │ │ ├── BaseTableViewRefreshController.h │ │ ├── BaseTableViewDataSource.h │ │ ├── BaseTableViewController.h │ │ ├── SurnamesViewController.h │ │ ├── BaseViewController.h │ │ ├── ChoicesListDataSource.m │ │ ├── BaseLoadingViewCenter.h │ │ ├── SurnamesDataSource.m │ │ ├── BaseTableViewDataSource.m │ │ ├── BaseTableViewRefreshController.m │ │ ├── BaseLoadingViewCenter.m │ │ ├── BaseTableViewController.m │ │ ├── SurnamesViewController.m │ │ ├── BaseWebViewController.m │ │ ├── BaseViewController.m │ │ └── MainWindow.xib │ ├── AppDelegate.h │ ├── MyLocationGetter.h │ ├── Define.h │ ├── Prefix.pch │ ├── MyLocationGetter.m │ └── AppDelegate.m └── External │ └── Gallager │ └── SynthesizeSingleton.h ├── .gitignore ├── Resources ├── Entitlements.plist └── Info.plist ├── README ├── .gitmodules └── AussieSurnames.xcodeproj └── project.pbxproj /Source/Main/Utilities/NSObject+Extensions.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | @interface NSObject (Extensions) 5 | 6 | - (id)niledNull; 7 | 8 | @end 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # xcode noise 2 | build/* 3 | *.pbxuser 4 | *.mode1v3 5 | *.perspectivev3 6 | 7 | # old skool 8 | .svn 9 | 10 | # osx noise 11 | .DS_Store 12 | profile -------------------------------------------------------------------------------- /Source/Main/Services/APIServices+Parsing.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "APIServices.h" 3 | 4 | @interface APIServices (parsing) 5 | 6 | - (void)parseSurnames:(ASIHTTPRequest *)request; 7 | 8 | @end 9 | -------------------------------------------------------------------------------- /Resources/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | get-task-allow 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/Main/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | int main(int argc, char *argv[]) { 4 | 5 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 6 | int retVal = UIApplicationMain(argc, argv, nil, nil); 7 | [pool release]; 8 | return retVal; 9 | } 10 | -------------------------------------------------------------------------------- /Source/Main/Utilities/NSObject+Extensions.m: -------------------------------------------------------------------------------- 1 | #import "NSObject+Extensions.h" 2 | 3 | 4 | @implementation NSObject (Extensions) 5 | 6 | - (id)niledNull 7 | { 8 | if ([self isKindOfClass:[NSNull class]]) { 9 | return nil; 10 | } 11 | 12 | return self; 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Source/Main/Models/Surname.m: -------------------------------------------------------------------------------- 1 | #import "Surname.h" 2 | 3 | 4 | @implementation Surname 5 | 6 | @synthesize name, amount, surnameId; 7 | 8 | - (void)dealloc 9 | { 10 | [name release]; 11 | [amount release]; 12 | [surnameId release]; 13 | 14 | [super dealloc]; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Right after cloning the project, don't forget to 2 | update the submodules: 3 | 4 | If you have a recent version of git, you 5 | can do this easily by executing the following command: 6 | 7 | - git submodule update --init --recursive 8 | - then make sure you close and reopen your project on Xcode. -------------------------------------------------------------------------------- /Source/Main/Views/SurnamesDataSource.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseTableViewDataSource.h" 3 | 4 | #define ShowMorePlaceholder @"Load More Surnames..." 5 | 6 | @interface SurnamesDataSource : BaseTableViewDataSource { 7 | 8 | } 9 | 10 | - (Surname *)surnameForIndexPath:(NSIndexPath *)indexPath; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Source/Main/Models/Surname.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | //{"name":"AAZAMI","amount":2,"id":142} 4 | 5 | @interface Surname : NSObject { 6 | 7 | } 8 | 9 | @property (nonatomic, copy) NSString *name; 10 | @property (nonatomic, copy) NSNumber *amount; 11 | @property (nonatomic, copy) NSNumber *surnameId; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Source/Main/Views/ChoicesListDataSource.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseTableViewDataSource.h" 3 | 4 | @interface ChoicesListDataSource : BaseTableViewDataSource { 5 | 6 | } 7 | 8 | - (id)initWitChoicesList:(NSArray *)choicesList; 9 | 10 | - (NSString *)choiceForIndexPath:(NSIndexPath *)indexPath; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseWebViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseViewController.h" 3 | 4 | @interface BaseWebViewController : BaseViewController { 5 | 6 | } 7 | 8 | @property (nonatomic, retain) IBOutlet UIWebView *webView; 9 | 10 | @property (nonatomic, retain) NSURLRequest *request; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Source/Main/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface AppDelegate : NSObject { 4 | } 5 | 6 | @property (nonatomic, retain) IBOutlet UIWindow *window; 7 | @property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 8 | 9 | 10 | 11 | + (AppDelegate *)sharedAppDelegate; 12 | 13 | @end 14 | 15 | -------------------------------------------------------------------------------- /Source/Main/Services/APIServices.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseServices.h" 3 | 4 | @interface APIServices : BaseServices { 5 | 6 | } 7 | 8 | + (APIServices *)sharedAPIServices; 9 | 10 | - (void)refreshSurnamesForPage:(NSInteger)page; 11 | - (void)refreshSurnamesForSearchString:(NSString *)searchString page:(NSInteger)page; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Source/Main/Services/APIServices+Utils.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | @interface APIServices (utils) 5 | 6 | - (ASIHTTPRequest *)requestWithUrl:(NSString *)url; 7 | - (ASIFormDataRequest *)formRequestWithUrl:(NSString *)url; 8 | 9 | - (void)notifyDone:(ASIHTTPRequest *)request object:(id)object; 10 | - (void)notifyFailed:(ASIHTTPRequest *)request withError:(NSString *)errorString; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseTableViewRefreshController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseTableViewController.h" 3 | #import "EGORefreshTableHeaderView.h" 4 | 5 | @interface BaseTableViewRefreshController : BaseTableViewController { 6 | 7 | } 8 | 9 | @property (nonatomic, readonly) EGORefreshTableHeaderView *refreshHeaderView; 10 | 11 | - (void)showRefreshHeaderView; 12 | - (void)hideRefreshHeaderView; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | @interface BaseTableViewDataSource : NSObject { 5 | 6 | } 7 | 8 | @property (nonatomic, readonly) NSMutableArray *content; 9 | - (void)resetContent; 10 | 11 | - (id)objectForIndexPath:(NSIndexPath *)indexPath; 12 | 13 | @end 14 | 15 | @protocol BaseTableViewDataSource 16 | 17 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 18 | 19 | @end 20 | 21 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseTableViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseViewController.h" 3 | 4 | @interface BaseTableViewController : BaseViewController { 5 | 6 | } 7 | 8 | @property (nonatomic, retain) IBOutlet UITableView *tableView; 9 | - (void)setupDataSource; 10 | 11 | // Content Filtering 12 | @property (nonatomic, copy) NSString *searchString; 13 | - (void)setupSearchDataSource; 14 | - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Source/Main/MyLocationGetter.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | // GPS 5 | #define GPSLocationDidStop @"GPSLocationDidStop" 6 | #define GPSLocationDidFix @"GPSLocationDidFix" 7 | 8 | @interface MyLocationGetter : NSObject { 9 | 10 | CLLocationManager *_locationManager; 11 | 12 | BOOL _alwaysOn; 13 | } 14 | 15 | @property (nonatomic, readonly) CLLocationManager *locationManager; 16 | @property (nonatomic) BOOL alwaysOn; 17 | 18 | - (void)startUpdates; 19 | - (void)stopUpdates; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Source/Main/Views/SurnamesViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BaseTableViewRefreshController.h" 3 | #import "SurnamesDataSource.h" 4 | 5 | @interface SurnamesViewController : BaseTableViewRefreshController { 6 | 7 | } 8 | 9 | @property (nonatomic, retain) IBOutlet UISearchBar *searchBar; 10 | @property (nonatomic, retain) IBOutlet UILabel *errorLabel; 11 | 12 | @property (nonatomic, retain) SurnamesDataSource *surnamesDataSource; 13 | @property (nonatomic, readonly) NSMutableArray *surnames; 14 | 15 | @property (nonatomic) NSInteger page; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Source/Main/Define.h: -------------------------------------------------------------------------------- 1 | // Timeout Request 2 | #define RequestTimeOutSeconds 30.0 3 | 4 | // URL 5 | #define BASE_URL @"http://australian-surnames.heroku.com" 6 | #define BASEURL(base, path) [NSString stringWithFormat:@"%@%@", base, path] 7 | // 8 | #define SURNAMES_PATH @"/" 9 | #define SURNAMESURL(base, path, page) [NSString stringWithFormat:@"%@?page=%d", BASEURL(base, path), page] 10 | #define SEARCHURL(base, path, searchString, page) [NSString stringWithFormat:@"%@?q=%@&page=%d", BASEURL(base, path), searchString, page] 11 | 12 | // Notifications 13 | #define SurnamesShouldReloadContentNotification @"SurnamesShouldReloadContentNotification" 14 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "MBProgressHUD.h" 3 | #import "BaseLoadingViewCenter.h" 4 | 5 | @interface BaseViewController : UIViewController { 6 | MBProgressHUD *_loadingView; 7 | MBProgressHUD *_noResultsView; 8 | } 9 | 10 | - (void)setupCustomInitialisation; 11 | 12 | - (void)setupNavigationBar; 13 | - (void)setupToolbar; 14 | 15 | - (void)locationDidFix; 16 | - (void)locationDidStop; 17 | 18 | - (void)shouldReloadContent:(NSNotification *)notification; 19 | 20 | @property (nonatomic, retain) MBProgressHUD *loadingView; 21 | @property (nonatomic, retain) MBProgressHUD *noResultsView; 22 | 23 | @property (nonatomic, readonly) BOOL isNetworkReachable; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Source/Main/Services/BaseServices.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "ASINetworkQueue.h" 3 | #import "ASIHTTPRequest.h" 4 | #import "ASIFormDataRequest.h" 5 | #import "BaseLoadingViewCenter.h" 6 | 7 | 8 | @interface BaseServices : NSObject { 9 | 10 | } 11 | 12 | @property (nonatomic, readonly) ASINetworkQueue *networkQueue; 13 | 14 | - (NSString *)notificationNameForRequest:(ASIHTTPRequest *)request; 15 | 16 | - (void)informEmtpy:(BOOL)empty forKey:(NSString *)key; 17 | 18 | @end 19 | 20 | @protocol BaseServicesContentManagement 21 | 22 | - (void)downloadContentForUrl:(NSString *)url withObject:(id)object path:(NSString *)path notificationName:(NSString *)notificationName; 23 | 24 | - (void)fetchCompleted:(ASIHTTPRequest *)request; 25 | - (void)fetchFailed:(ASIHTTPRequest *)request; 26 | - (void)queueFinished:(ASINetworkQueue *)queue; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Source/External/asihttprequest"] 2 | path = Source/External/asihttprequest 3 | url = git://github.com/pokeb/asi-http-request.git 4 | [submodule "Source/External/json-framework"] 5 | path = Source/External/json-framework 6 | url = git://github.com/stig/json-framework 7 | [submodule "Source/External/MBProgressHUD"] 8 | path = Source/External/MBProgressHUD 9 | url = git://github.com/sync/MBProgressHUD.git 10 | [submodule "Source/External/NSDate-Extensions"] 11 | path = Source/External/NSDate-Extensions 12 | url = git://github.com/sync/NSDate-Extensions.git 13 | [submodule "Source/External/EGOTableViewPullRefresh"] 14 | path = Source/External/EGOTableViewPullRefresh 15 | url = git://github.com/enormego/EGOTableViewPullRefresh.git 16 | [submodule "Source/External/objectivesupport"] 17 | path = Source/External/objectivesupport 18 | url = git://github.com/yfactorial/objectivesupport.git 19 | -------------------------------------------------------------------------------- /Source/Main/Services/APIServices+Parsing.m: -------------------------------------------------------------------------------- 1 | #import "APIServices+Parsing.h" 2 | #import "APIServices+Utils.h" 3 | #import "NSObject+JSONSerializableSupport.h" 4 | #import "ObjectiveResourceDateFormatter.h" 5 | 6 | @implementation APIServices (parsing) 7 | 8 | - (void)parseSurnames:(ASIHTTPRequest *)request; 9 | { 10 | if ([request.responseData length] != 0) { 11 | 12 | // "surname": { 13 | // "name": "AAZAMI", 14 | // "amount": 2, 15 | // "id": 142 16 | // } 17 | 18 | [ObjectiveResourceDateFormatter setSerializeFormat:DateTime]; 19 | NSArray *content = [NSArray fromJSONData:request.responseData]; 20 | 21 | 22 | NSDictionary *info = request.userInfo; 23 | [self notifyDone:request object:[NSDictionary dictionaryWithObjectsAndKeys: 24 | content, @"surnames", 25 | [info valueForKey:@"object"], @"object", 26 | nil 27 | ]]; 28 | } 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | Icon files 12 | 13 | Icon.png 14 | Icon@2x.png 15 | 16 | CFBundleIdentifier 17 | com.anthonyMittaz.AussieSurnames 18 | CFBundleInfoDictionaryVersion 19 | 6.0 20 | CFBundleName 21 | ${PRODUCT_NAME} 22 | CFBundlePackageType 23 | APPL 24 | CFBundleSignature 25 | ???? 26 | CFBundleVersion 27 | 0.2 28 | LSRequiresIPhoneOS 29 | 30 | NSMainNibFile 31 | MainWindow 32 | 33 | 34 | -------------------------------------------------------------------------------- /Source/Main/Prefix.pch: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #ifndef __IPHONE_3_0 4 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 5 | #endif 6 | 7 | 8 | #ifdef __OBJC__ 9 | #import 10 | #import 11 | #import "SynthesizeSingleton.h" 12 | #import 13 | #import "Define.h" 14 | #import "NSObject+Extensions.h" 15 | #import "Surname.h" 16 | #import "MyLocationGetter.h" 17 | #import "APIServices.h" 18 | #import "AppDelegate.h" 19 | #endif 20 | 21 | //Right-click on your target and click Get Info. Select the Build tab. Make sure Configuration is set to Debug. Add -DDEBUG to the Other C Flags of your target. 22 | // 23 | //And that’s about it. When you want to log only in debug builds use DLog(). In release builds DLog() will be compiled as an empty comment. Otherwise use ALog() for logging in both debug and release builds. (A as in always.) 24 | #ifdef DEBUG 25 | # define DLog(...) NSLog(__VA_ARGS__) 26 | #else 27 | # define DLog(...) /* */ 28 | #endif 29 | #define ALog(...) NSLog(__VA_ARGS__) 30 | -------------------------------------------------------------------------------- /Source/External/Gallager/SynthesizeSingleton.h: -------------------------------------------------------------------------------- 1 | // 2 | // SynthesizeSingleton.h 3 | // 4 | // Created by Matt Gallagher on 20/10/08. 5 | // 6 | 7 | #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \ 8 | \ 9 | static classname *shared##classname = nil; \ 10 | \ 11 | + (classname *)shared##classname \ 12 | { \ 13 | @synchronized(self) \ 14 | { \ 15 | if (shared##classname == nil) \ 16 | { \ 17 | [[self alloc] init]; \ 18 | } \ 19 | } \ 20 | \ 21 | return shared##classname; \ 22 | } \ 23 | \ 24 | + (id)allocWithZone:(NSZone *)zone \ 25 | { \ 26 | @synchronized(self) \ 27 | { \ 28 | if (shared##classname == nil) \ 29 | { \ 30 | shared##classname = [super allocWithZone:zone]; \ 31 | return shared##classname; \ 32 | } \ 33 | } \ 34 | \ 35 | return nil; \ 36 | } \ 37 | \ 38 | - (id)copyWithZone:(NSZone *)zone \ 39 | { \ 40 | return self; \ 41 | } \ 42 | \ 43 | - (id)retain \ 44 | { \ 45 | return self; \ 46 | } \ 47 | \ 48 | - (NSUInteger)retainCount \ 49 | { \ 50 | return NSUIntegerMax; \ 51 | } \ 52 | \ 53 | - (void)release \ 54 | { \ 55 | } \ 56 | \ 57 | - (id)autorelease \ 58 | { \ 59 | return self; \ 60 | } 61 | -------------------------------------------------------------------------------- /Source/Main/Views/ChoicesListDataSource.m: -------------------------------------------------------------------------------- 1 | #import "ChoicesListDataSource.h" 2 | 3 | @implementation ChoicesListDataSource 4 | 5 | #pragma mark - 6 | #pragma mark Content 7 | 8 | - (id)initWitChoicesList:(NSArray *)choicesList 9 | { 10 | if ((self = [super init])) { 11 | [self.content addObjectsFromArray:choicesList]; 12 | } 13 | return self; 14 | } 15 | 16 | - (NSString *)choiceForIndexPath:(NSIndexPath *)indexPath 17 | { 18 | return [self objectForIndexPath:indexPath]; 19 | } 20 | 21 | // Customize the appearance of table view cells. 22 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 23 | { 24 | #define ChoicesCellIdentifier @"ChoicesCellIdentifier" 25 | 26 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ChoicesCellIdentifier]; 27 | if (cell == nil) { 28 | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ChoicesCellIdentifier] autorelease]; 29 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 30 | } 31 | 32 | NSString *choice = [self choiceForIndexPath:indexPath]; 33 | 34 | cell.textLabel.text = choice; 35 | 36 | return cell; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseLoadingViewCenter.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface BaseLoadingViewCenter : NSObject { 4 | } 5 | 6 | + (BaseLoadingViewCenter *)sharedBaseLoadingViewCenter; 7 | 8 | @property (nonatomic, readonly) NSMutableDictionary *keyedObservers; 9 | 10 | - (void)addObserver:(NSObject *)observer forKey:(NSString *)key; 11 | - (void)removeObserver:(NSObject *)observer forKey:(NSString *)key; 12 | 13 | - (void)didStartLoadingForKey:(NSString *)key; 14 | - (void)didStopLoadingForKey:(NSString *)key; 15 | - (void)showErrorMsg:(NSString *)errorMsg forKey:(NSString *)key; 16 | - (void)showErrorMsg:(NSString *)errorMsg details:(NSString *)details forKey:(NSString *)key; 17 | - (void)removeErrorMsgForKey:(NSString *)key; 18 | 19 | @end 20 | 21 | 22 | @protocol BaseLoadingViewCenterDelegate 23 | 24 | @required 25 | - (void)baseLoadingViewCenterDidStartForKey:(NSString *)key; 26 | - (void)baseLoadingViewCenterDidStopForKey:(NSString *)key; 27 | - (void)baseLoadingViewCenterShowErrorMsg:(NSString *)errorMsg forKey:(NSString *)key; 28 | - (void)baseLoadingViewCenterShowErrorMsg:(NSString *)errorMsg details:(NSString *)details forKey:(NSString *)key; 29 | - (void)baseLoadingViewCenterRemoveErrorMsgForKey:(NSString *)key; 30 | 31 | @end -------------------------------------------------------------------------------- /Source/Main/Views/SurnamesDataSource.m: -------------------------------------------------------------------------------- 1 | #import "SurnamesDataSource.h" 2 | 3 | @implementation SurnamesDataSource 4 | 5 | - (Surname *)surnameForIndexPath:(NSIndexPath *)indexPath 6 | { 7 | return [self objectForIndexPath:indexPath]; 8 | } 9 | 10 | // Customize the appearance of table view cells. 11 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 12 | { 13 | #define SurnamesCellIdentifier @"SurnamesCellIdentifier" 14 | 15 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SurnamesCellIdentifier]; 16 | if (cell == nil) { 17 | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:SurnamesCellIdentifier] autorelease]; 18 | cell.accessoryType = UITableViewCellAccessoryNone; 19 | } 20 | 21 | Surname *surname = [self surnameForIndexPath:indexPath]; 22 | 23 | cell.textLabel.text = surname.name; 24 | cell.detailTextLabel.text = (surname.amount) ? [NSString stringWithFormat:@"%@", surname.amount] : nil; 25 | 26 | if (surname.surnameId.integerValue == NSNotFound) { 27 | cell.selectionStyle = UITableViewCellSelectionStyleBlue; 28 | } else { 29 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 30 | } 31 | 32 | return cell; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Source/Main/Services/BaseServices.m: -------------------------------------------------------------------------------- 1 | #import "BaseServices.h" 2 | 3 | @implementation BaseServices 4 | 5 | @synthesize networkQueue; 6 | 7 | - (ASINetworkQueue *)networkQueue 8 | { 9 | if (!networkQueue) { 10 | networkQueue = [[ASINetworkQueue alloc] init]; 11 | if ([self respondsToSelector:@selector(fetchStarted:)]) { 12 | [networkQueue setRequestDidStartSelector:@selector(fetchStarted:)]; 13 | } 14 | if ([self respondsToSelector:@selector(fetchCompleted:)]) { 15 | [networkQueue setRequestDidFinishSelector:@selector(fetchCompleted:)]; 16 | } 17 | if ([self respondsToSelector:@selector(fetchFailed:)]) { 18 | [networkQueue setRequestDidFailSelector:@selector(fetchFailed:)]; 19 | } 20 | if ([self respondsToSelector:@selector(queueFinished:)]) { 21 | [networkQueue setQueueDidFinishSelector:@selector(queueFinished:)]; 22 | } 23 | 24 | [networkQueue setDelegate:self]; 25 | } 26 | 27 | return networkQueue; 28 | } 29 | 30 | - (void)informEmtpy:(BOOL)empty forKey:(NSString *)key 31 | { 32 | if (empty) { 33 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]showErrorMsg:@"Empty Content!" forKey:key]; 34 | } else { 35 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]removeErrorMsgForKey:key]; 36 | } 37 | } 38 | 39 | #define BaseServicesNotificationUnknown @"BaseServicesNotificationUnknown" 40 | 41 | - (NSString *)notificationNameForRequest:(ASIHTTPRequest *)request 42 | { 43 | NSString *notificationName = [request.userInfo valueForKey:@"notificationName"]; 44 | return (notificationName) ? notificationName : BaseServicesNotificationUnknown; 45 | } 46 | 47 | #pragma mark - 48 | #pragma mark Dealloc 49 | 50 | - (void)dealloc { 51 | [networkQueue release]; 52 | 53 | [super dealloc]; 54 | } 55 | 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /Source/Main/Services/APIServices+Utils.m: -------------------------------------------------------------------------------- 1 | #import "APIServices+Utils.h" 2 | #import "ASIHTTPRequest.h" 3 | 4 | @implementation APIServices (utils) 5 | 6 | - (ASIHTTPRequest *)requestWithUrl:(NSString *)url 7 | { 8 | ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:url]]; 9 | request.numberOfTimesToRetryOnTimeout = 1; 10 | request.timeOutSeconds = RequestTimeOutSeconds; 11 | [request addRequestHeader:@"Accept" value:@"application/json"]; 12 | 13 | return request; 14 | } 15 | 16 | - (ASIFormDataRequest *)formRequestWithUrl:(NSString *)url 17 | { 18 | ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]]; 19 | request.numberOfTimesToRetryOnTimeout = 2; 20 | request.timeOutSeconds = RequestTimeOutSeconds; 21 | [request setRequestMethod:@"POST"]; 22 | 23 | [request setShouldAttemptPersistentConnection:NO]; 24 | [request addRequestHeader:@"X-Requested-With" value:@"XMLHttpRequest"]; 25 | [request addRequestHeader:@"Accept" value:@"application/json"]; 26 | 27 | #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0 28 | [request setShouldContinueWhenAppEntersBackground:YES]; 29 | #endif 30 | 31 | return request; 32 | } 33 | 34 | - (void)notifyDone:(ASIHTTPRequest *)request object:(id)object; 35 | { 36 | [[NSNotificationCenter defaultCenter] postNotificationName:[self notificationNameForRequest:request] object:object]; 37 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]didStopLoadingForKey:[self notificationNameForRequest:request]]; 38 | } 39 | 40 | - (void)notifyFailed:(ASIHTTPRequest *)request withError:(NSString *)errorString 41 | { 42 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]showErrorMsg:errorString forKey:[self notificationNameForRequest:request]]; 43 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]didStopLoadingForKey:[self notificationNameForRequest:request]]; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Source/Main/MyLocationGetter.m: -------------------------------------------------------------------------------- 1 | #import "MyLocationGetter.h" 2 | 3 | @implementation MyLocationGetter 4 | 5 | @synthesize alwaysOn=_alwaysOn; 6 | - (id) init 7 | { 8 | self = [super init]; 9 | if (self != nil) { 10 | self.alwaysOn = FALSE; 11 | } 12 | return self; 13 | } 14 | 15 | 16 | - (CLLocationManager *)locationManager 17 | { 18 | if (!_locationManager) { 19 | _locationManager = [[CLLocationManager alloc] init]; 20 | 21 | _locationManager.delegate = self; 22 | if (self.alwaysOn) { 23 | _locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; 24 | } else { 25 | _locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 26 | } 27 | 28 | // Set a movement threshold for new events 29 | if (self.alwaysOn) { 30 | _locationManager.distanceFilter = kCLDistanceFilterNone; 31 | } else { 32 | _locationManager.distanceFilter = 500; 33 | } 34 | 35 | } 36 | return _locationManager; 37 | } 38 | 39 | - (void)startUpdates 40 | { 41 | [self.locationManager startUpdatingLocation]; 42 | } 43 | 44 | - (void)stopUpdates 45 | { 46 | [self.locationManager stopUpdatingLocation]; 47 | } 48 | 49 | 50 | // Delegate method from the CLLocationManagerDelegate protocol. 51 | - (void)locationManager:(CLLocationManager *)manager 52 | didUpdateToLocation:(CLLocation *)newLocation 53 | fromLocation:(CLLocation *)oldLocation 54 | { 55 | // Horizontal coordinates 56 | if (signbit(newLocation.horizontalAccuracy)) { 57 | // Invalid coordinate 58 | return; 59 | } 60 | 61 | NSDate* eventDate = newLocation.timestamp; 62 | NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; 63 | if (howRecent <= -(60*60*24)) 64 | { 65 | // If it is older than one day don't care about this value 66 | return; 67 | } 68 | 69 | // Tell everyone that gps got a fix 70 | [[NSNotificationCenter defaultCenter] postNotificationName:GPSLocationDidFix object:nil userInfo:nil]; 71 | } 72 | 73 | - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 74 | { 75 | if ([error code] == kCLErrorDenied) { 76 | // should stop looking for coordinates 77 | [self.locationManager stopUpdatingLocation]; 78 | [[NSNotificationCenter defaultCenter] postNotificationName:GPSLocationDidStop object:nil userInfo:nil]; 79 | } 80 | } 81 | 82 | #pragma mark - 83 | #pragma mark dealloc 84 | 85 | - (void)dealloc { 86 | [_locationManager release]; 87 | 88 | [super dealloc]; 89 | } 90 | 91 | @end 92 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseTableViewDataSource.m: -------------------------------------------------------------------------------- 1 | #import "BaseTableViewDataSource.h" 2 | 3 | 4 | @implementation BaseTableViewDataSource 5 | 6 | @synthesize content; 7 | 8 | #pragma mark - 9 | #pragma mark Content 10 | 11 | - (NSMutableArray *)content 12 | { 13 | if (!content) { 14 | content = [[NSMutableArray alloc]init]; 15 | } 16 | return content; 17 | } 18 | 19 | #pragma mark - 20 | #pragma mark Reset Content 21 | 22 | - (void)resetContent 23 | { 24 | // refresh content 25 | [self.content removeAllObjects]; 26 | } 27 | 28 | #pragma mark - 29 | #pragma mark Table view methods 30 | 31 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 32 | { 33 | // Check if content first elemetn return array or not 34 | // If yes, tableview has more than one section 35 | if (self.content && self.content.count > 0 36 | && [[self.content objectAtIndex:0]respondsToSelector:@selector(objectAtIndex:)]) { 37 | return self.content.count; 38 | } 39 | return 1; 40 | } 41 | 42 | 43 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 44 | { 45 | // Check if content first elemetn return array or not 46 | // If yes, tableview has more than one section 47 | if (self.content && self.content.count > section 48 | && [[self.content objectAtIndex:section]respondsToSelector:@selector(objectAtIndex:)]) { 49 | return [[self.content objectAtIndex:section]count]; 50 | } 51 | return self.content.count; 52 | } 53 | 54 | 55 | // Customize the appearance of table view cells. 56 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 57 | { 58 | #define MyCellIdentifier @"MyCellIdentifier" 59 | 60 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyCellIdentifier]; 61 | if (cell == nil) { 62 | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyCellIdentifier] autorelease]; 63 | } 64 | 65 | return cell; 66 | } 67 | 68 | #pragma mark - 69 | #pragma mark Table view methods helper 70 | 71 | - (id)objectForIndexPath:(NSIndexPath *)indexPath; 72 | { 73 | // Hack to see if array has got multiple sections or not 74 | NSArray *firstLevel = nil; 75 | if (self.content && self.content.count > indexPath.section 76 | && [[self.content objectAtIndex:indexPath.section]respondsToSelector:@selector(objectAtIndex:)] 77 | && self.content.count>indexPath.section) { 78 | firstLevel = [self.content objectAtIndex:indexPath.section]; 79 | } else { 80 | firstLevel = self.content; 81 | } 82 | // if nothing return nil 83 | return (firstLevel.count>indexPath.row)?[firstLevel objectAtIndex:indexPath.row]:nil; 84 | } 85 | 86 | - (void)dealloc 87 | { 88 | [content release]; 89 | 90 | [super dealloc]; 91 | } 92 | 93 | @end 94 | -------------------------------------------------------------------------------- /Source/Main/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | @interface AppDelegate (private) 4 | 5 | - (void)refreshAllControllers; 6 | - (void)enableGPS; 7 | - (void)locationDidFix; 8 | - (void)locationDidStop; 9 | 10 | @end 11 | 12 | 13 | @implementation AppDelegate 14 | 15 | SYNTHESIZE_SINGLETON_FOR_CLASS(AppDelegate) 16 | 17 | @synthesize window, navigationController; 18 | 19 | #pragma mark - 20 | #pragma mark Application lifecycle 21 | 22 | - (void)awakeFromNib { 23 | } 24 | 25 | 26 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 27 | 28 | // Override point for customization after application launch. 29 | 30 | // Add the navigation controller's view to the window and display. 31 | [window addSubview:self.navigationController.view]; 32 | [window makeKeyAndVisible]; 33 | 34 | return YES; 35 | } 36 | 37 | - (void)applicationWillResignActive:(UIApplication *)application { 38 | /* 39 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 40 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 41 | */ 42 | } 43 | 44 | 45 | - (void)applicationDidEnterBackground:(UIApplication *)application { 46 | /* 47 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 48 | If your application supports background execution, called instead of applicationWillTerminate: when the user quits. 49 | */ 50 | } 51 | 52 | 53 | - (void)applicationWillEnterForeground:(UIApplication *)application { 54 | /* 55 | Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. 56 | */ 57 | } 58 | 59 | 60 | - (void)applicationDidBecomeActive:(UIApplication *)application { 61 | /* 62 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 63 | */ 64 | // TODO 65 | } 66 | 67 | /** 68 | applicationWillTerminate: saves changes in the application's managed object context before the application terminates. 69 | */ 70 | - (void)applicationWillTerminate:(UIApplication *)application { 71 | } 72 | 73 | #pragma mark - 74 | #pragma mark Memory management 75 | 76 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 77 | /* 78 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 79 | */ 80 | } 81 | 82 | #pragma mark - 83 | #pragma mark Dealloc 84 | 85 | - (void)dealloc { 86 | [navigationController release]; 87 | [window release]; 88 | 89 | [super dealloc]; 90 | } 91 | 92 | 93 | @end 94 | 95 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseTableViewRefreshController.m: -------------------------------------------------------------------------------- 1 | #import "BaseTableViewRefreshController.h" 2 | 3 | 4 | @implementation BaseTableViewRefreshController 5 | 6 | @synthesize refreshHeaderView; 7 | 8 | #pragma mark - 9 | #pragma mark Setup 10 | 11 | - (EGORefreshTableHeaderView *)refreshHeaderView 12 | { 13 | if (!refreshHeaderView) { 14 | refreshHeaderView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 15 | 0.0f - self.tableView.bounds.size.height, 16 | 320.0f, 17 | self.tableView.bounds.size.height)]; 18 | refreshHeaderView.backgroundColor = [UIColor colorWithRed:226.0/255.0 green:231.0/255.0 blue:237.0/255.0 alpha:1.0]; 19 | [self.tableView addSubview:refreshHeaderView]; 20 | self.tableView.showsVerticalScrollIndicator = YES; 21 | } 22 | 23 | return refreshHeaderView; 24 | } 25 | 26 | #pragma mark - 27 | #pragma mark Content reloading 28 | 29 | - (void)showRefreshHeaderView 30 | { 31 | [self.tableView reloadData]; 32 | [self.refreshHeaderView setState:EGOOPullRefreshLoading]; 33 | [UIView beginAnimations:nil context:NULL]; 34 | [UIView setAnimationDuration:0.2]; 35 | self.tableView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f); 36 | [UIView commitAnimations]; 37 | } 38 | 39 | - (void)hideRefreshHeaderView 40 | { 41 | [UIView beginAnimations:nil context:NULL]; 42 | [UIView setAnimationDuration:.3]; 43 | [self.tableView setContentInset:UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 0.0f)]; 44 | [UIView commitAnimations]; 45 | 46 | [self.refreshHeaderView setState:EGOOPullRefreshNormal]; 47 | [self.refreshHeaderView setCurrentDate]; // should check if data reload was successful 48 | } 49 | 50 | #pragma mark - 51 | #pragma mark BaseLoadingViewCenter Delegate 52 | 53 | - (void)baseLoadingViewCenterDidStopForKey:(NSString *)key 54 | { 55 | [super baseLoadingViewCenterDidStopForKey:key]; 56 | 57 | [self hideRefreshHeaderView]; 58 | } 59 | 60 | #pragma mark - 61 | #pragma mark ScrollViewDelegate 62 | 63 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 64 | 65 | if (scrollView.isDragging) { 66 | if (self.refreshHeaderView.state == EGOOPullRefreshPulling && scrollView.contentOffset.y > -65.0f && scrollView.contentOffset.y < 0.0f) { 67 | [self.refreshHeaderView setState:EGOOPullRefreshNormal]; 68 | } else if (self.refreshHeaderView.state == EGOOPullRefreshNormal && scrollView.contentOffset.y < -65.0f) { 69 | [self.refreshHeaderView setState:EGOOPullRefreshPulling]; 70 | } 71 | } 72 | } 73 | 74 | - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 75 | 76 | if (scrollView.contentOffset.y <= - 65.0f) { 77 | [self showRefreshHeaderView]; 78 | } 79 | } 80 | 81 | #pragma mark - 82 | #pragma mark Memory managedment 83 | 84 | - (void)viewDidUnload { 85 | [super viewDidUnload]; 86 | 87 | [refreshHeaderView release]; 88 | refreshHeaderView = nil; 89 | } 90 | 91 | #pragma mark - 92 | #pragma mark Dealloc 93 | 94 | - (void)dealloc 95 | { 96 | [refreshHeaderView release]; 97 | 98 | [super dealloc]; 99 | } 100 | 101 | @end 102 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseLoadingViewCenter.m: -------------------------------------------------------------------------------- 1 | #import "BaseLoadingViewCenter.h" 2 | #import "SynthesizeSingleton.h" 3 | 4 | @implementation BaseLoadingViewCenter 5 | 6 | SYNTHESIZE_SINGLETON_FOR_CLASS(BaseLoadingViewCenter) 7 | 8 | @synthesize keyedObservers; 9 | 10 | - (NSMutableDictionary *)keyedObservers 11 | { 12 | // does not retain observers 13 | if (!keyedObservers) { 14 | keyedObservers = [[NSMutableDictionary alloc]init]; 15 | } 16 | 17 | return keyedObservers; 18 | } 19 | 20 | - (void)addObserver:(NSObject *)observer forKey:(NSString *)key 21 | { 22 | if (!observer || !key) { 23 | return; 24 | } 25 | 26 | NSMutableArray *observers = [NSMutableArray arrayWithArray:[self.keyedObservers valueForKey:key]]; 27 | if (![observers containsObject:[NSValue valueWithNonretainedObject:observer]]) { 28 | // Don't want to retain the observer 29 | [observers addObject:[NSValue valueWithNonretainedObject:observer]]; 30 | } 31 | [self.keyedObservers setValue:observers forKey:key]; 32 | } 33 | 34 | - (void)removeObserver:(NSObject *)observer forKey:(NSString *)key 35 | { 36 | if (!observer || !key) { 37 | return; 38 | } 39 | 40 | NSMutableArray *observers = [NSMutableArray arrayWithArray:[self.keyedObservers valueForKey:key]]; 41 | [observers removeObject:[NSValue valueWithNonretainedObject:observer]]; 42 | [self.keyedObservers setValue:observers forKey:key]; 43 | } 44 | 45 | - (void)didStartLoadingForKey:(NSString *)key 46 | { 47 | if (!key) { 48 | return; 49 | } 50 | 51 | NSArray *observers = [self.keyedObservers valueForKey:key]; 52 | for (NSValue *value in observers) { 53 | id object = [value nonretainedObjectValue]; 54 | [object baseLoadingViewCenterDidStartForKey:key]; 55 | } 56 | } 57 | 58 | - (void)didStopLoadingForKey:(NSString *)key 59 | { 60 | if (!key) { 61 | return; 62 | } 63 | 64 | NSArray *observers = [self.keyedObservers valueForKey:key]; 65 | for (NSValue *value in observers) { 66 | id object = [value nonretainedObjectValue]; 67 | [object baseLoadingViewCenterDidStopForKey:key]; 68 | } 69 | } 70 | 71 | - (void)showErrorMsg:(NSString *)errorMsg forKey:(NSString *)key 72 | { 73 | if (!key) { 74 | return; 75 | } 76 | 77 | NSArray *observers = [self.keyedObservers valueForKey:key]; 78 | for (NSValue *value in observers) { 79 | id object = [value nonretainedObjectValue]; 80 | [object baseLoadingViewCenterShowErrorMsg:errorMsg forKey:key]; 81 | } 82 | } 83 | 84 | - (void)showErrorMsg:(NSString *)errorMsg details:(NSString *)details forKey:(NSString *)key 85 | { 86 | if (!key) { 87 | return; 88 | } 89 | 90 | NSArray *observers = [self.keyedObservers valueForKey:key]; 91 | for (NSValue *value in observers) { 92 | id object = [value nonretainedObjectValue]; 93 | [object baseLoadingViewCenterShowErrorMsg:errorMsg details:details forKey:key]; 94 | } 95 | } 96 | 97 | - (void)removeErrorMsgForKey:(NSString *)key 98 | { 99 | if (!key) { 100 | return; 101 | } 102 | 103 | NSArray *observers = [self.keyedObservers valueForKey:key]; 104 | for (NSValue *value in observers) { 105 | id object = [value nonretainedObjectValue]; 106 | [object baseLoadingViewCenterRemoveErrorMsgForKey:key]; 107 | } 108 | } 109 | 110 | - (void)dealloc 111 | { 112 | [keyedObservers release]; 113 | 114 | [super dealloc]; 115 | } 116 | 117 | @end 118 | -------------------------------------------------------------------------------- /Source/Main/Services/APIServices.m: -------------------------------------------------------------------------------- 1 | #import "APIServices.h" 2 | #import "APIServices+Utils.h" 3 | #import "APIServices+Parsing.h" 4 | 5 | @implementation APIServices 6 | 7 | SYNTHESIZE_SINGLETON_FOR_CLASS(APIServices) 8 | 9 | #pragma mark - 10 | #pragma mark Surnames 11 | 12 | - (void)refreshSurnamesForPage:(NSInteger)page 13 | { 14 | NSString *notificationName = SurnamesShouldReloadContentNotification; 15 | NSString *path = @"surnames"; 16 | 17 | NSString *url = SURNAMESURL(BASE_URL, SURNAMES_PATH, page); 18 | [self downloadContentForUrl:url withObject:[NSNumber numberWithInteger:page] path:path notificationName:notificationName]; 19 | } 20 | 21 | - (void)refreshSurnamesForSearchString:(NSString *)searchString page:(NSInteger)page; 22 | { 23 | NSString *notificationName = SurnamesShouldReloadContentNotification; 24 | NSString *path = @"surnamesForSearchString"; 25 | 26 | if (!searchString) { 27 | return; 28 | } 29 | 30 | NSString *url = SEARCHURL(BASE_URL, SURNAMES_PATH, [searchString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], page); 31 | [self downloadContentForUrl:url withObject:[NSNumber numberWithInteger:page] path:path notificationName:notificationName]; 32 | } 33 | 34 | #pragma mark - 35 | #pragma mark Content Management 36 | 37 | - (void)downloadContentForUrl:(NSString *)url withObject:(id)object path:(NSString *)path notificationName:(NSString *)notificationName 38 | { 39 | NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys: 40 | path, @"path", 41 | notificationName, @"notificationName", 42 | object, @"object", 43 | nil]; 44 | 45 | ASIHTTPRequest *request = [self requestWithUrl:url]; 46 | request.userInfo = userInfo; 47 | request.delegate = self; 48 | 49 | [self.networkQueue addOperation:request]; 50 | [self.networkQueue go]; 51 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]didStartLoadingForKey:[self notificationNameForRequest:request]]; 52 | } 53 | 54 | #pragma mark - 55 | #pragma mark ASIHTTPRequest delegate 56 | 57 | - (void)fetchStarted:(ASIHTTPRequest *)request 58 | { 59 | DLog(@"fetch started for url: %@", request.url); 60 | } 61 | 62 | - (void)fetchCompleted:(ASIHTTPRequest *)request 63 | { 64 | NSError *error = request.error; 65 | if (error) { 66 | DLog(@"wserror: %@", error); 67 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]showErrorMsg:[error localizedDescription] forKey:[self notificationNameForRequest:request]]; 68 | } else { 69 | NSDictionary *info = request.userInfo; 70 | NSString *path = [info valueForKey:@"path"]; 71 | 72 | if ([path isEqualToString:@"surnames"] || 73 | [path isEqualToString:@"surnamesForSearchString"]) { 74 | [self parseSurnames:request]; 75 | } 76 | } 77 | 78 | DLog(@"fetch completed for url: %@ error:%@", request.originalURL, [request.error localizedDescription]); 79 | } 80 | 81 | - (void)fetchFailed:(ASIHTTPRequest *)request 82 | { 83 | DLog(@"fetch failed for url: %@ error:%@", request.originalURL, [request.error localizedDescription]); 84 | 85 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]showErrorMsg:[request.error localizedDescription] forKey:[self notificationNameForRequest:request]]; 86 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]didStopLoadingForKey:[self notificationNameForRequest:request]]; 87 | } 88 | 89 | - (void)queueFinished:(ASINetworkQueue *)queue 90 | { 91 | DLog(@"queue finished for service: %@", NSStringFromClass([self class])); 92 | 93 | } 94 | 95 | @end 96 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseTableViewController.m: -------------------------------------------------------------------------------- 1 | #import "BaseTableViewController.h" 2 | 3 | 4 | @implementation BaseTableViewController 5 | 6 | @synthesize tableView, searchString; 7 | 8 | #pragma mark - 9 | #pragma mark Initialisation 10 | 11 | // The designated initializer. Override to perform setup that is required before the view is loaded. 12 | // Only when xibless (interface buildder) 13 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 14 | if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 15 | // Custom initialization 16 | [self setupCustomInitialisation]; 17 | } 18 | return self; 19 | } 20 | 21 | // The designated initializer. Override to perform setup that is required before the view is loaded. 22 | // Only when using xib (interface buildder) 23 | - (id)initWithCoder:(NSCoder *)decoder { 24 | if (self = [super initWithCoder:decoder]) { 25 | // Custom initialization 26 | [self setupCustomInitialisation]; 27 | } 28 | return self; 29 | } 30 | 31 | - (void)setupCustomInitialisation 32 | { 33 | 34 | } 35 | 36 | - (void)viewDidLoad 37 | { 38 | [super viewDidLoad]; 39 | 40 | [self setupDataSource]; 41 | [self setupSearchDataSource]; 42 | } 43 | 44 | #pragma mark - 45 | #pragma mark Setup 46 | 47 | - (void)setupDataSource 48 | { 49 | 50 | } 51 | 52 | - (void)setupSearchDataSource 53 | { 54 | 55 | } 56 | 57 | #pragma mark - 58 | #pragma mark tableView Delegate 59 | 60 | - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 61 | 62 | 63 | [aTableView deselectRowAtIndexPath:indexPath animated:TRUE]; 64 | 65 | } 66 | 67 | #pragma mark - 68 | #pragma mark Content reloading 69 | 70 | - (void)shouldReloadContent:(NSNotification *)notification 71 | { 72 | [super shouldReloadContent:notification]; 73 | 74 | [self.tableView reloadData]; 75 | } 76 | 77 | #pragma mark - 78 | #pragma mark UISearchDisplayDelegate 79 | 80 | // return YES to reload table. called when search string/option changes. convenience methods on top UISearchBar delegate methods 81 | - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)aSearchString 82 | { 83 | if ([aSearchString isEqualToString:self.searchString]) { 84 | return FALSE; 85 | } 86 | self.searchString = aSearchString; 87 | [self filterContentForSearchText:aSearchString scope: 88 | [[controller.searchBar scopeButtonTitles] objectAtIndex:[controller.searchBar selectedScopeButtonIndex]]]; 89 | return TRUE; 90 | } 91 | 92 | - (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller 93 | { 94 | self.searchString = nil; 95 | } 96 | 97 | #pragma mark - 98 | #pragma mark Content Filtering 99 | 100 | - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope 101 | { 102 | [self.searchDisplayController.searchResultsTableView reloadData]; 103 | } 104 | 105 | #pragma mark - 106 | #pragma mark Memory 107 | 108 | - (void)viewDidUnload { 109 | [super viewDidUnload]; 110 | 111 | self.tableView = nil; 112 | } 113 | 114 | /* 115 | // Override to allow orientations other than the default portrait orientation. 116 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 117 | // Return YES for supported orientations 118 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 119 | } 120 | */ 121 | 122 | 123 | - (void)dealloc { 124 | [tableView release]; 125 | [searchString release]; 126 | 127 | [super dealloc]; 128 | } 129 | 130 | @end 131 | -------------------------------------------------------------------------------- /Source/Main/Views/SurnamesViewController.m: -------------------------------------------------------------------------------- 1 | #import "SurnamesViewController.h" 2 | 3 | @interface SurnamesViewController (private) 4 | 5 | - (void)refreshSurnames; 6 | - (void)reloadSurnames:(NSArray *)newPlaces removeCache:(BOOL)removeCache showMore:(BOOL)showMore; 7 | 8 | @end 9 | 10 | @implementation SurnamesViewController 11 | 12 | @synthesize surnamesDataSource, searchBar, errorLabel, page, surnames; 13 | 14 | #pragma mark - 15 | #pragma mark Initialisation 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | self.navigationItem.title = @"Australian Surnames"; 21 | 22 | self.page = 1; 23 | } 24 | 25 | - (void)viewDidUnload 26 | { 27 | [super viewDidUnload]; 28 | 29 | self.searchBar = nil; 30 | self.errorLabel = nil; 31 | } 32 | 33 | #pragma mark - 34 | #pragma mark Setup 35 | 36 | - (void)setupDataSource 37 | { 38 | [super setupDataSource]; 39 | 40 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shouldReloadContent:) name:SurnamesShouldReloadContentNotification object:nil]; 41 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]addObserver:self forKey:SurnamesShouldReloadContentNotification]; 42 | 43 | self.surnamesDataSource = [[[SurnamesDataSource alloc]init]autorelease]; 44 | self.tableView.dataSource = self.surnamesDataSource; 45 | [self refreshSurnames]; 46 | } 47 | 48 | #pragma mark - 49 | #pragma mark Content reloading 50 | 51 | - (void)shouldReloadContent:(NSNotification *)notification 52 | { 53 | NSDictionary *dict = [notification object]; 54 | 55 | NSNumber *currentPage = [dict valueForKey:@"object"]; 56 | self.page = currentPage.integerValue; 57 | 58 | NSArray *newSurnames = [dict valueForKey:@"surnames"]; 59 | [self reloadSurnames:newSurnames removeCache:(self.page == 1) showMore:newSurnames.count == 100]; 60 | } 61 | 62 | - (NSMutableArray *)surnames 63 | { 64 | if (!surnames) { 65 | surnames = [[NSMutableArray alloc]init]; 66 | } 67 | 68 | return surnames; 69 | } 70 | 71 | - (void)reloadSurnames:(NSArray *)newSurnames removeCache:(BOOL)removeCache showMore:(BOOL)showMore 72 | { 73 | [self.surnamesDataSource resetContent]; 74 | 75 | if (removeCache) { 76 | [self.surnames removeAllObjects]; 77 | } 78 | 79 | if (newSurnames) { 80 | [self.surnames addObjectsFromArray:newSurnames]; 81 | } 82 | 83 | [self.surnamesDataSource.content addObjectsFromArray:self.surnames]; 84 | 85 | if (showMore) { 86 | Surname *showMoreSurnames = [[[Surname alloc]init]autorelease]; 87 | showMoreSurnames.surnameId = [NSNumber numberWithInt:NSNotFound]; 88 | showMoreSurnames.name = ShowMorePlaceholder; 89 | [self.surnamesDataSource.content addObject:showMoreSurnames]; 90 | } 91 | 92 | [self.tableView reloadData]; 93 | 94 | self.errorLabel.text = @"No Matches!"; 95 | self.errorLabel.hidden = (self.surnames.count != 0); 96 | } 97 | 98 | #pragma mark - 99 | #pragma mark TableView Delegate 100 | 101 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 102 | 103 | Surname *surname = [self.surnamesDataSource surnameForIndexPath:indexPath]; 104 | 105 | if (surname.surnameId.integerValue == NSNotFound) { 106 | self.page += 1; 107 | if (self.searchString.length > 0) { 108 | [[APIServices sharedAPIServices]refreshSurnamesForSearchString:self.searchString page:self.page]; 109 | } else { 110 | [[APIServices sharedAPIServices]refreshSurnamesForPage:self.page]; 111 | } 112 | } 113 | 114 | [tableView deselectRowAtIndexPath:indexPath animated:TRUE]; 115 | } 116 | 117 | 118 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView 119 | { 120 | [super scrollViewDidScroll:scrollView]; 121 | 122 | if (!scrollView.dragging || scrollView.decelerating) { 123 | return; 124 | } 125 | 126 | [self.searchBar resignFirstResponder]; 127 | } 128 | 129 | - (void)showRefreshHeaderView 130 | { 131 | [super showRefreshHeaderView]; 132 | 133 | self.searchString = self.searchBar.text; 134 | if (self.searchString.length > 0) { 135 | [self filterContentForSearchText:self.searchString scope:nil]; 136 | } else { 137 | [self refreshSurnames]; 138 | } 139 | } 140 | 141 | #pragma mark - 142 | #pragma mark UISearchBarDelegate 143 | 144 | - (void)searchBarSearchButtonClicked:(UISearchBar *)aSearchBar 145 | { 146 | if ([aSearchBar.text isEqualToString:self.searchString]) { 147 | return; 148 | } 149 | [self filterContentForSearchText:aSearchBar.text scope:nil]; 150 | } 151 | 152 | #pragma mark - 153 | #pragma mark Content Filtering 154 | 155 | - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope 156 | { 157 | [self.searchBar resignFirstResponder]; 158 | self.searchString = searchText; 159 | 160 | self.page = 1; 161 | [[APIServices sharedAPIServices]refreshSurnamesForSearchString:self.searchString page:self.page]; 162 | } 163 | 164 | 165 | #pragma mark - 166 | #pragma mark Actions 167 | 168 | - (void)refreshSurnames 169 | { 170 | self.page = 1; 171 | 172 | [[APIServices sharedAPIServices]refreshSurnamesForPage:self.page]; 173 | } 174 | 175 | #pragma mark - 176 | #pragma mark Dealloc 177 | 178 | - (void)dealloc 179 | { 180 | [[NSNotificationCenter defaultCenter] removeObserver:self]; 181 | [[BaseLoadingViewCenter sharedBaseLoadingViewCenter]removeObserver:self forKey:SurnamesShouldReloadContentNotification]; 182 | 183 | [surnames release]; 184 | [errorLabel release]; 185 | [searchBar release]; 186 | [surnamesDataSource release]; 187 | 188 | [super dealloc]; 189 | } 190 | 191 | @end 192 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseWebViewController.m: -------------------------------------------------------------------------------- 1 | #import "BaseWebViewController.h" 2 | 3 | @interface BaseWebViewController (private) 4 | 5 | - (void)doneButtonTouched; 6 | - (void)backButtonTouched; 7 | - (void)forwardButtonTouched; 8 | - (void)actionButtonTouched; 9 | - (void)loadRequest; 10 | 11 | @end 12 | 13 | 14 | @implementation BaseWebViewController 15 | 16 | @synthesize webView, request; 17 | 18 | #pragma mark - 19 | #pragma mark Setup 20 | 21 | - (void)viewWillDisappear:(BOOL)animated 22 | { 23 | [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:FALSE]; 24 | } 25 | 26 | - (void)viewDidLoad 27 | { 28 | [super viewDidLoad]; 29 | 30 | self.webView.delegate = self; 31 | 32 | [self loadRequest]; 33 | } 34 | 35 | - (void)setupNavigationBar 36 | { 37 | self.navigationController.navigationBar.hidden = TRUE; 38 | } 39 | 40 | - (void)setupToolbar 41 | { 42 | self.navigationController.toolbar.barStyle = UIBarStyleBlackOpaque; 43 | self.navigationController.toolbar.translucent = FALSE; 44 | [self.navigationController setToolbarHidden:FALSE animated:FALSE]; 45 | 46 | UIBarButtonItem *flexItem = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 47 | target:nil 48 | action:nil]autorelease]; 49 | 50 | UIBarButtonItem *fixItem = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace 51 | target:nil 52 | action:nil]autorelease]; 53 | fixItem.width = 30.0; 54 | 55 | UIBarButtonItem *backItem = [[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"left-arrow.png"] 56 | style:UIBarButtonItemStylePlain 57 | target:self 58 | action:@selector(backButtonTouched)]autorelease]; 59 | if ([self.webView canGoBack]) { 60 | backItem.enabled = TRUE; 61 | } else { 62 | backItem.enabled = FALSE; 63 | } 64 | 65 | UIBarButtonItem *forwardItem = [[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"right-arrow.png"] 66 | style:UIBarButtonItemStylePlain 67 | target:self 68 | action:@selector(forwardButtonTouched)]autorelease]; 69 | if ([self.webView canGoForward]) { 70 | forwardItem.enabled = TRUE; 71 | } else { 72 | forwardItem.enabled = FALSE; 73 | } 74 | 75 | UIBarButtonItem *actionItem = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAction 76 | target:self 77 | action:@selector(actionButtonTouched)]autorelease]; 78 | 79 | UIBarButtonItem *doneItem = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone 80 | target:self 81 | action:@selector(doneButtonTouched)]autorelease]; 82 | 83 | NSArray *items = [NSArray arrayWithObjects: 84 | flexItem, 85 | backItem, 86 | fixItem, 87 | actionItem, 88 | fixItem, 89 | forwardItem, 90 | fixItem, 91 | doneItem, 92 | nil]; 93 | [self setToolbarItems:items animated:FALSE]; 94 | } 95 | 96 | #pragma mark - 97 | #pragma mark Request 98 | 99 | - (void)loadRequest 100 | { 101 | if (self.request) { 102 | [self.webView loadRequest:self.request]; 103 | } 104 | } 105 | 106 | - (void)setRequest:(NSURLRequest *)aRequest 107 | { 108 | if (![request isEqual:aRequest]) { 109 | [request release]; 110 | request = [aRequest retain]; 111 | } 112 | } 113 | 114 | #pragma mark - 115 | #pragma mark WebView Delegate 116 | 117 | - (void)webViewDidStartLoad:(UIWebView *)webView 118 | { 119 | // Show the netowrk activity indicator while operation is doing something 120 | [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:TRUE]; 121 | } 122 | 123 | - (void)webViewDidFinishLoad:(UIWebView *)webView 124 | { 125 | [self setupToolbar]; 126 | 127 | // Show the netowrk activity indicator while operation is doing something 128 | [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:FALSE]; 129 | } 130 | 131 | - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 132 | { 133 | [self setupToolbar]; 134 | 135 | // Show the netowrk activity indicator while operation is doing something 136 | [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:FALSE]; 137 | } 138 | 139 | #pragma mark - 140 | #pragma mark Action 141 | 142 | - (void)doneButtonTouched 143 | { 144 | [self dismissModalViewControllerAnimated:TRUE]; 145 | } 146 | 147 | - (void)backButtonTouched 148 | { 149 | if ([self.webView canGoBack]) { 150 | [self.webView goBack]; 151 | } 152 | } 153 | 154 | - (void)forwardButtonTouched 155 | { 156 | if ([self.webView canGoForward]) { 157 | [self.webView goForward]; 158 | } 159 | } 160 | 161 | - (void)actionButtonTouched 162 | { 163 | UIActionSheet *alertSheet = 164 | [[UIActionSheet alloc] initWithTitle:nil 165 | delegate:self 166 | cancelButtonTitle:@"Cancel" 167 | destructiveButtonTitle:nil 168 | otherButtonTitles:@"Open in Safari", nil]; 169 | 170 | alertSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent; 171 | [alertSheet showInView:self.view]; 172 | [alertSheet release]; 173 | } 174 | 175 | #pragma mark - 176 | #pragma mark actionSheet 177 | 178 | // change the navigation bar style, also make the status bar match with it 179 | - (void)actionSheet:(UIActionSheet *)modalView clickedButtonAtIndex:(NSInteger)buttonIndex 180 | { 181 | NSString *title = [modalView buttonTitleAtIndex:buttonIndex]; 182 | 183 | if ([title isEqualToString:@"Open in Safari"]) { 184 | if (![[UIApplication sharedApplication]openURL:self.webView.request.URL]) { 185 | [[UIApplication sharedApplication]openURL:self.request.URL]; 186 | } 187 | } 188 | } 189 | 190 | #pragma mark - 191 | #pragma mark Memory 192 | 193 | - (void)viewDidUnload { 194 | [super viewDidUnload]; 195 | 196 | self.webView = nil; 197 | } 198 | 199 | #pragma mark - 200 | #pragma mark Dealloc 201 | 202 | - (void)dealloc { 203 | [request release]; 204 | [webView release]; 205 | 206 | [super dealloc]; 207 | } 208 | 209 | 210 | @end 211 | -------------------------------------------------------------------------------- /Source/Main/Views/BaseViewController.m: -------------------------------------------------------------------------------- 1 | #import "BaseViewController.h" 2 | #import "Reachability.h" 3 | 4 | @implementation BaseViewController 5 | 6 | @synthesize loadingView, noResultsView; 7 | 8 | #pragma mark - 9 | #pragma mark Initialisation 10 | 11 | // The designated initializer. Override to perform setup that is required before the view is loaded. 12 | // Only when xibless (interface buildder) 13 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 14 | { 15 | if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 16 | // Custom initialization 17 | [self setupCustomInitialisation]; 18 | } 19 | return self; 20 | } 21 | 22 | // The designated initializer. Override to perform setup that is required before the view is loaded. 23 | // Only when using xib (interface buildder) 24 | - (id)initWithCoder:(NSCoder *)decoder 25 | { 26 | if (self = [super initWithCoder:decoder]) { 27 | // Custom initialization 28 | [self setupCustomInitialisation]; 29 | } 30 | return self; 31 | } 32 | 33 | - (void)setupCustomInitialisation 34 | { 35 | 36 | } 37 | 38 | - (void)viewDidLoad 39 | { 40 | [super viewDidLoad]; 41 | 42 | [self setupNavigationBar]; 43 | [self setupToolbar]; 44 | 45 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(locationDidFix) name:GPSLocationDidFix object:nil]; 46 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(locationDidStop) name:GPSLocationDidStop object:nil]; 47 | } 48 | 49 | #pragma mark - 50 | #pragma mark Setup 51 | 52 | - (void)setupNavigationBar 53 | { 54 | 55 | } 56 | 57 | - (void)setupToolbar 58 | { 59 | 60 | } 61 | 62 | #pragma mark - 63 | #pragma mark Content reloading 64 | 65 | - (void)shouldReloadContent:(NSNotification *)notification 66 | { 67 | 68 | } 69 | 70 | #pragma mark - 71 | #pragma mark BaseLoadingViewCenter Delegate 72 | 73 | - (void)baseLoadingViewCenterDidStartForKey:(NSString *)key 74 | { 75 | [self.noResultsView hide:FALSE]; 76 | 77 | if (!self.loadingView) { 78 | self.loadingView = [[[MBProgressHUD alloc] initWithView:self.view]autorelease]; 79 | self.loadingView.delegate = self; 80 | [self.view addSubview:self.loadingView]; 81 | [self.view bringSubviewToFront:self.loadingView]; 82 | [self.loadingView show:TRUE]; 83 | } 84 | self.loadingView.labelText = @"Loading"; 85 | } 86 | 87 | - (void)baseLoadingViewCenterDidStopForKey:(NSString *)key 88 | { 89 | [self.loadingView hide:TRUE]; 90 | } 91 | 92 | - (void)baseLoadingViewCenterShowErrorMsg:(NSString *)errorMsg forKey:(NSString *)key; 93 | { 94 | [self.loadingView hide:FALSE]; 95 | 96 | if (!self.noResultsView) { 97 | self.noResultsView = [[[MBProgressHUD alloc] initWithView:self.view]autorelease]; 98 | self.noResultsView.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]] autorelease]; 99 | self.noResultsView.labelText = errorMsg; 100 | self.noResultsView.mode = MBProgressHUDModeCustomView; 101 | self.noResultsView.delegate = self; 102 | [self.view addSubview:self.noResultsView]; 103 | [self.view bringSubviewToFront:self.noResultsView]; 104 | [self.noResultsView show:TRUE]; 105 | [self performSelector:@selector(baseLoadingViewCenterRemoveErrorMsgForKey:) withObject:key afterDelay:1.5]; 106 | } 107 | } 108 | 109 | - (void)baseLoadingViewCenterShowErrorMsg:(NSString *)errorMsg details:(NSString *)details forKey:(NSString *)key 110 | { 111 | [self.loadingView hide:FALSE]; 112 | 113 | if (!self.noResultsView) { 114 | self.noResultsView = [[[MBProgressHUD alloc] initWithView:self.view]autorelease]; 115 | self.noResultsView.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]] autorelease]; 116 | self.noResultsView.labelText = errorMsg; 117 | self.noResultsView.detailsLabelText = details; 118 | self.noResultsView.mode = MBProgressHUDModeCustomView; 119 | self.noResultsView.delegate = self; 120 | [self.view addSubview:self.noResultsView]; 121 | [self.view bringSubviewToFront:self.noResultsView]; 122 | [self.noResultsView show:TRUE]; 123 | [self performSelector:@selector(baseLoadingViewCenterRemoveErrorMsgForKey:) withObject:key afterDelay:1.5]; 124 | } 125 | } 126 | 127 | - (void)baseLoadingViewCenterRemoveErrorMsgForKey:(NSString *)key 128 | { 129 | [self.noResultsView hide:TRUE]; 130 | } 131 | 132 | #pragma mark - 133 | #pragma mark MBProgressHUDDelegate methods 134 | 135 | - (void)hudWasHidden:(MBProgressHUD *)hud 136 | { 137 | if (hud == self.loadingView) { 138 | [self.loadingView removeFromSuperview]; 139 | self.loadingView = nil; 140 | } else if (hud == self.noResultsView) { 141 | [self.noResultsView removeFromSuperview]; 142 | self.noResultsView = nil; 143 | } 144 | } 145 | 146 | #pragma mark - 147 | #pragma mark Network Availability 148 | 149 | - (BOOL)isNetworkReachable 150 | { 151 | return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != kNotReachable); 152 | } 153 | 154 | #pragma mark - 155 | #pragma mark Core Location 156 | 157 | - (void)locationDidFix 158 | { 159 | 160 | } 161 | 162 | - (void)locationDidStop 163 | { 164 | 165 | } 166 | 167 | #pragma mark - 168 | #pragma mark Memory 169 | 170 | - (void)didReceiveMemoryWarning { 171 | // Releases the view if it doesn't have a superview. 172 | [super didReceiveMemoryWarning]; 173 | 174 | // Release any cached data, images, etc that aren't in use. 175 | } 176 | 177 | - (void)viewDidUnload { 178 | // Release any retained subviews of the main view. 179 | // e.g. self.myOutlet = nil; 180 | } 181 | 182 | #pragma mark - 183 | #pragma mark Rotation Support 184 | 185 | // Override to allow orientations other than the default portrait orientation. 186 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 187 | return UIInterfaceOrientationIsPortrait(interfaceOrientation); 188 | } 189 | 190 | - (void)dealloc { 191 | [[NSNotificationCenter defaultCenter] removeObserver:self]; 192 | 193 | noResultsView.delegate = nil; 194 | [noResultsView release]; 195 | loadingView.delegate = nil; 196 | [loadingView release]; 197 | 198 | [super dealloc]; 199 | } 200 | 201 | @end 202 | -------------------------------------------------------------------------------- /Source/Main/Views/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10H574 6 | 823 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | 45 | 1316 46 | 47 | {320, 480} 48 | 49 | 1 50 | MSAxIDEAA 51 | 52 | NO 53 | NO 54 | 55 | 1 56 | 57 | IBCocoaTouchFramework 58 | YES 59 | 60 | 61 | 62 | 63 | 1 64 | 65 | IBCocoaTouchFramework 66 | NO 67 | 68 | 69 | 256 70 | {0, 0} 71 | NO 72 | YES 73 | YES 74 | IBCocoaTouchFramework 75 | 76 | 77 | YES 78 | 79 | 80 | 81 | Australian Surnames 82 | IBCocoaTouchFramework 83 | 84 | 85 | SurnamesView 86 | 87 | 1 88 | 89 | IBCocoaTouchFramework 90 | NO 91 | 92 | 93 | 94 | 95 | 96 | 97 | YES 98 | 99 | 100 | delegate 101 | 102 | 103 | 104 | 4 105 | 106 | 107 | 108 | window 109 | 110 | 111 | 112 | 5 113 | 114 | 115 | 116 | navigationController 117 | 118 | 119 | 120 | 61 121 | 122 | 123 | 124 | delegate 125 | 126 | 127 | 128 | 62 129 | 130 | 131 | 132 | 133 | YES 134 | 135 | 0 136 | 137 | 138 | 139 | 140 | 141 | 2 142 | 143 | 144 | YES 145 | 146 | 147 | 148 | 149 | -1 150 | 151 | 152 | File's Owner 153 | 154 | 155 | 3 156 | 157 | 158 | 159 | 160 | -2 161 | 162 | 163 | 164 | 165 | 57 166 | 167 | 168 | YES 169 | 170 | 171 | 172 | 173 | 174 | 175 | 58 176 | 177 | 178 | YES 179 | 180 | 181 | 182 | 183 | 184 | 59 185 | 186 | 187 | 188 | 189 | 60 190 | 191 | 192 | 193 | 194 | 195 | 196 | YES 197 | 198 | YES 199 | -1.CustomClassName 200 | -2.CustomClassName 201 | 2.IBAttributePlaceholdersKey 202 | 2.IBEditorWindowLastContentRect 203 | 2.IBPluginDependency 204 | 3.CustomClassName 205 | 3.IBPluginDependency 206 | 57.IBEditorWindowLastContentRect 207 | 57.IBPluginDependency 208 | 58.CustomClassName 209 | 58.IBPluginDependency 210 | 59.IBPluginDependency 211 | 60.IBPluginDependency 212 | 213 | 214 | YES 215 | UIApplication 216 | UIResponder 217 | 218 | YES 219 | 220 | 221 | YES 222 | 223 | 224 | {{812, 376}, {320, 480}} 225 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 226 | AppDelegate 227 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 228 | {{0, 354}, {320, 480}} 229 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 230 | SurnamesViewController 231 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 232 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 233 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 234 | 235 | 236 | 237 | YES 238 | 239 | 240 | YES 241 | 242 | 243 | 244 | 245 | YES 246 | 247 | 248 | YES 249 | 250 | 251 | 252 | 62 253 | 254 | 255 | 256 | YES 257 | 258 | AppDelegate 259 | NSObject 260 | 261 | YES 262 | 263 | YES 264 | navigationController 265 | window 266 | 267 | 268 | YES 269 | UINavigationController 270 | UIWindow 271 | 272 | 273 | 274 | YES 275 | 276 | YES 277 | navigationController 278 | window 279 | 280 | 281 | YES 282 | 283 | navigationController 284 | UINavigationController 285 | 286 | 287 | window 288 | UIWindow 289 | 290 | 291 | 292 | 293 | IBProjectSource 294 | Source/Main/AppDelegate.h 295 | 296 | 297 | 298 | AppDelegate 299 | NSObject 300 | 301 | IBUserSource 302 | 303 | 304 | 305 | 306 | BaseTableViewController 307 | BaseViewController 308 | 309 | tableView 310 | UITableView 311 | 312 | 313 | tableView 314 | 315 | tableView 316 | UITableView 317 | 318 | 319 | 320 | IBProjectSource 321 | Source/Main/Views/BaseTableViewController.h 322 | 323 | 324 | 325 | BaseTableViewRefreshController 326 | BaseTableViewController 327 | 328 | IBProjectSource 329 | Source/Main/Views/BaseTableViewRefreshController.h 330 | 331 | 332 | 333 | BaseViewController 334 | UIViewController 335 | 336 | IBProjectSource 337 | Source/Main/Views/BaseViewController.h 338 | 339 | 340 | 341 | NSObject 342 | 343 | IBProjectSource 344 | Source/External/json-framework/Classes/SBJsonStreamWriter.h 345 | 346 | 347 | 348 | NSObject 349 | 350 | IBProjectSource 351 | Source/External/objectivesupport/Classes/lib/Core/NSObject+PropertySupport.h 352 | 353 | 354 | 355 | NSObject 356 | 357 | IBProjectSource 358 | Source/External/objectivesupport/Classes/lib/Serialization/JSON/NSObject+JSONSerializableSupport.h 359 | 360 | 361 | 362 | NSObject 363 | 364 | IBProjectSource 365 | Source/External/objectivesupport/Classes/lib/Serialization/NSObject+Serialize.h 366 | 367 | 368 | 369 | NSObject 370 | 371 | IBProjectSource 372 | Source/Main/Utilities/NSObject+Extensions.h 373 | 374 | 375 | 376 | SurnamesViewController 377 | BaseTableViewRefreshController 378 | 379 | YES 380 | 381 | YES 382 | errorLabel 383 | searchBar 384 | 385 | 386 | YES 387 | UILabel 388 | UISearchBar 389 | 390 | 391 | 392 | YES 393 | 394 | YES 395 | errorLabel 396 | searchBar 397 | 398 | 399 | YES 400 | 401 | errorLabel 402 | UILabel 403 | 404 | 405 | searchBar 406 | UISearchBar 407 | 408 | 409 | 410 | 411 | IBProjectSource 412 | Source/Main/Views/SurnamesViewController.h 413 | 414 | 415 | 416 | SurnamesViewController 417 | BaseTableViewRefreshController 418 | 419 | IBUserSource 420 | 421 | 422 | 423 | 424 | UIWindow 425 | UIView 426 | 427 | IBUserSource 428 | 429 | 430 | 431 | 432 | 433 | YES 434 | 435 | NSObject 436 | 437 | IBFrameworkSource 438 | Foundation.framework/Headers/NSError.h 439 | 440 | 441 | 442 | NSObject 443 | 444 | IBFrameworkSource 445 | Foundation.framework/Headers/NSFileManager.h 446 | 447 | 448 | 449 | NSObject 450 | 451 | IBFrameworkSource 452 | Foundation.framework/Headers/NSKeyValueCoding.h 453 | 454 | 455 | 456 | NSObject 457 | 458 | IBFrameworkSource 459 | Foundation.framework/Headers/NSKeyValueObserving.h 460 | 461 | 462 | 463 | NSObject 464 | 465 | IBFrameworkSource 466 | Foundation.framework/Headers/NSKeyedArchiver.h 467 | 468 | 469 | 470 | NSObject 471 | 472 | IBFrameworkSource 473 | Foundation.framework/Headers/NSObject.h 474 | 475 | 476 | 477 | NSObject 478 | 479 | IBFrameworkSource 480 | Foundation.framework/Headers/NSRunLoop.h 481 | 482 | 483 | 484 | NSObject 485 | 486 | IBFrameworkSource 487 | Foundation.framework/Headers/NSThread.h 488 | 489 | 490 | 491 | NSObject 492 | 493 | IBFrameworkSource 494 | Foundation.framework/Headers/NSURL.h 495 | 496 | 497 | 498 | NSObject 499 | 500 | IBFrameworkSource 501 | Foundation.framework/Headers/NSURLConnection.h 502 | 503 | 504 | 505 | NSObject 506 | 507 | IBFrameworkSource 508 | QuartzCore.framework/Headers/CAAnimation.h 509 | 510 | 511 | 512 | NSObject 513 | 514 | IBFrameworkSource 515 | QuartzCore.framework/Headers/CALayer.h 516 | 517 | 518 | 519 | NSObject 520 | 521 | IBFrameworkSource 522 | UIKit.framework/Headers/UIAccessibility.h 523 | 524 | 525 | 526 | NSObject 527 | 528 | IBFrameworkSource 529 | UIKit.framework/Headers/UINibLoading.h 530 | 531 | 532 | 533 | NSObject 534 | 535 | IBFrameworkSource 536 | UIKit.framework/Headers/UIResponder.h 537 | 538 | 539 | 540 | UIApplication 541 | UIResponder 542 | 543 | IBFrameworkSource 544 | UIKit.framework/Headers/UIApplication.h 545 | 546 | 547 | 548 | UIBarButtonItem 549 | UIBarItem 550 | 551 | IBFrameworkSource 552 | UIKit.framework/Headers/UIBarButtonItem.h 553 | 554 | 555 | 556 | UIBarItem 557 | NSObject 558 | 559 | IBFrameworkSource 560 | UIKit.framework/Headers/UIBarItem.h 561 | 562 | 563 | 564 | UILabel 565 | UIView 566 | 567 | IBFrameworkSource 568 | UIKit.framework/Headers/UILabel.h 569 | 570 | 571 | 572 | UINavigationBar 573 | UIView 574 | 575 | IBFrameworkSource 576 | UIKit.framework/Headers/UINavigationBar.h 577 | 578 | 579 | 580 | UINavigationController 581 | UIViewController 582 | 583 | IBFrameworkSource 584 | UIKit.framework/Headers/UINavigationController.h 585 | 586 | 587 | 588 | UINavigationItem 589 | NSObject 590 | 591 | 592 | 593 | UIResponder 594 | NSObject 595 | 596 | 597 | 598 | UIScrollView 599 | UIView 600 | 601 | IBFrameworkSource 602 | UIKit.framework/Headers/UIScrollView.h 603 | 604 | 605 | 606 | UISearchBar 607 | UIView 608 | 609 | IBFrameworkSource 610 | UIKit.framework/Headers/UISearchBar.h 611 | 612 | 613 | 614 | UISearchDisplayController 615 | NSObject 616 | 617 | IBFrameworkSource 618 | UIKit.framework/Headers/UISearchDisplayController.h 619 | 620 | 621 | 622 | UITableView 623 | UIScrollView 624 | 625 | IBFrameworkSource 626 | UIKit.framework/Headers/UITableView.h 627 | 628 | 629 | 630 | UIView 631 | 632 | IBFrameworkSource 633 | UIKit.framework/Headers/UIPrintFormatter.h 634 | 635 | 636 | 637 | UIView 638 | 639 | IBFrameworkSource 640 | UIKit.framework/Headers/UITextField.h 641 | 642 | 643 | 644 | UIView 645 | UIResponder 646 | 647 | IBFrameworkSource 648 | UIKit.framework/Headers/UIView.h 649 | 650 | 651 | 652 | UIViewController 653 | 654 | 655 | 656 | UIViewController 657 | 658 | IBFrameworkSource 659 | UIKit.framework/Headers/UIPopoverController.h 660 | 661 | 662 | 663 | UIViewController 664 | 665 | IBFrameworkSource 666 | UIKit.framework/Headers/UISplitViewController.h 667 | 668 | 669 | 670 | UIViewController 671 | 672 | IBFrameworkSource 673 | UIKit.framework/Headers/UITabBarController.h 674 | 675 | 676 | 677 | UIViewController 678 | UIResponder 679 | 680 | IBFrameworkSource 681 | UIKit.framework/Headers/UIViewController.h 682 | 683 | 684 | 685 | UIWindow 686 | UIView 687 | 688 | IBFrameworkSource 689 | UIKit.framework/Headers/UIWindow.h 690 | 691 | 692 | 693 | 694 | 0 695 | IBCocoaTouchFramework 696 | 697 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 698 | 699 | 700 | 701 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 702 | 703 | 704 | YES 705 | ../../../AussieSurnames.xcodeproj 706 | 3 707 | 132 708 | 709 | 710 | -------------------------------------------------------------------------------- /AussieSurnames.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 45; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 11 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 12 | 2434D15612B2E004007B8A13 /* SurnamesDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2434D15512B2E004007B8A13 /* SurnamesDataSource.m */; }; 13 | 2434D6E512B5A8CA007B8A13 /* libSystem.B.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2434D6E412B5A8CA007B8A13 /* libSystem.B.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 14 | 2437216F1297E254003C19B7 /* BaseServices.m in Sources */ = {isa = PBXBuildFile; fileRef = 2437216E1297E254003C19B7 /* BaseServices.m */; }; 15 | 243BE66B12976A6300186377 /* BaseWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 243BE66A12976A6300186377 /* BaseWebViewController.m */; }; 16 | 2449FA8D12A64D8600754D3C /* SurnamesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2449FA8C12A64D8600754D3C /* SurnamesViewController.m */; }; 17 | 2449FA9712A64EA500754D3C /* SurnamesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2449FA9612A64EA500754D3C /* SurnamesView.xib */; }; 18 | 248921C6128ED28700DC9712 /* APIServices.m in Sources */ = {isa = PBXBuildFile; fileRef = 248921C5128ED28700DC9712 /* APIServices.m */; }; 19 | 248921CB128EDE0200DC9712 /* APIServices+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 248921C8128EDE0200DC9712 /* APIServices+Utils.m */; }; 20 | 248921CC128EDE0200DC9712 /* APIServices+Parsing.m in Sources */ = {isa = PBXBuildFile; fileRef = 248921CA128EDE0200DC9712 /* APIServices+Parsing.m */; }; 21 | 248921D4128EE15E00DC9712 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 248921D3128EE15E00DC9712 /* MainWindow.xib */; }; 22 | 248921F5128EE28D00DC9712 /* BaseTableViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 248921F1128EE28D00DC9712 /* BaseTableViewDataSource.m */; }; 23 | 248921F6128EE28D00DC9712 /* ChoicesListDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 248921F3128EE28D00DC9712 /* ChoicesListDataSource.m */; }; 24 | 248927D4128FF71C00DC9712 /* EGORefreshTableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 248927A3128FF71C00DC9712 /* EGORefreshTableHeaderView.m */; }; 25 | 248927D5128FF71C00DC9712 /* blackArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927A5128FF71C00DC9712 /* blackArrow.png */; }; 26 | 248927D6128FF71C00DC9712 /* blackArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927A6128FF71C00DC9712 /* blackArrow@2x.png */; }; 27 | 248927D7128FF71C00DC9712 /* blueArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927A7128FF71C00DC9712 /* blueArrow.png */; }; 28 | 248927D8128FF71C00DC9712 /* blueArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927A8128FF71C00DC9712 /* blueArrow@2x.png */; }; 29 | 248927D9128FF71C00DC9712 /* grayArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927A9128FF71C00DC9712 /* grayArrow.png */; }; 30 | 248927DA128FF71C00DC9712 /* grayArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927AA128FF71C00DC9712 /* grayArrow@2x.png */; }; 31 | 248927DB128FF71C00DC9712 /* whiteArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927AB128FF71C00DC9712 /* whiteArrow.png */; }; 32 | 248927DC128FF71C00DC9712 /* whiteArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 248927AC128FF71C00DC9712 /* whiteArrow@2x.png */; }; 33 | 248927E7128FF81100DC9712 /* BaseTableViewRefreshController.m in Sources */ = {isa = PBXBuildFile; fileRef = 248927E6128FF81100DC9712 /* BaseTableViewRefreshController.m */; }; 34 | 248929841290335A00DC9712 /* ASIDataCompressor.m in Sources */ = {isa = PBXBuildFile; fileRef = 248929811290335A00DC9712 /* ASIDataCompressor.m */; }; 35 | 248929851290335A00DC9712 /* ASIDataDecompressor.m in Sources */ = {isa = PBXBuildFile; fileRef = 248929831290335A00DC9712 /* ASIDataDecompressor.m */; }; 36 | 24ADB44012CB6909000BE62C /* Surname.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB43F12CB6909000BE62C /* Surname.m */; }; 37 | 24ADB5FC12CB7069000BE62C /* NSString+InflectionSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4C912CB7069000BE62C /* NSString+InflectionSupport.m */; }; 38 | 24ADB5FD12CB7069000BE62C /* NSData+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4CB12CB7069000BE62C /* NSData+Additions.m */; }; 39 | 24ADB5FE12CB7069000BE62C /* NSObject+PropertySupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4CD12CB7069000BE62C /* NSObject+PropertySupport.m */; }; 40 | 24ADB5FF12CB7069000BE62C /* NSString+GSub.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4CF12CB7069000BE62C /* NSString+GSub.m */; }; 41 | 24ADB60012CB7069000BE62C /* ObjectiveResourceDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4D112CB7069000BE62C /* ObjectiveResourceDateFormatter.m */; }; 42 | 24ADB60412CB7069000BE62C /* NSArray+JSONSerializableSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4E012CB7069000BE62C /* NSArray+JSONSerializableSupport.m */; }; 43 | 24ADB60512CB7069000BE62C /* NSDictionary+JSONSerializableSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4E212CB7069000BE62C /* NSDictionary+JSONSerializableSupport.m */; }; 44 | 24ADB60612CB7069000BE62C /* NSObject+JSONSerializableSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4E412CB7069000BE62C /* NSObject+JSONSerializableSupport.m */; }; 45 | 24ADB60712CB7069000BE62C /* NSDate+Serialize.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4E612CB7069000BE62C /* NSDate+Serialize.m */; }; 46 | 24ADB60812CB7069000BE62C /* NSDictionary+KeyTranslation.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4E812CB7069000BE62C /* NSDictionary+KeyTranslation.m */; }; 47 | 24ADB60912CB7069000BE62C /* NSObject+Serialize.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4EA12CB7069000BE62C /* NSObject+Serialize.m */; }; 48 | 24ADB60A12CB7069000BE62C /* NSString+Serialize.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB4EC12CB7069000BE62C /* NSString+Serialize.m */; }; 49 | 24ADB6DA12CB7132000BE62C /* MyLocationGetter.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB6D912CB7132000BE62C /* MyLocationGetter.m */; }; 50 | 24ADB70B12CB7225000BE62C /* NSObject+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB70012CB7225000BE62C /* NSObject+JSON.m */; }; 51 | 24ADB70C12CB7225000BE62C /* SBJsonStreamParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB70212CB7225000BE62C /* SBJsonStreamParser.m */; }; 52 | 24ADB70D12CB7225000BE62C /* SBJsonStreamParserAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB70412CB7225000BE62C /* SBJsonStreamParserAdapter.m */; }; 53 | 24ADB70E12CB7225000BE62C /* SBJsonStreamParserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB70612CB7225000BE62C /* SBJsonStreamParserState.m */; }; 54 | 24ADB70F12CB7225000BE62C /* SBJsonStreamWriterState.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB70812CB7225000BE62C /* SBJsonStreamWriterState.m */; }; 55 | 24ADB71012CB7225000BE62C /* SBJsonTokeniser.m in Sources */ = {isa = PBXBuildFile; fileRef = 24ADB70A12CB7225000BE62C /* SBJsonTokeniser.m */; }; 56 | 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; 57 | 3A03484A125BF4A800F49FA6 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A034845125BF4A800F49FA6 /* BaseViewController.m */; }; 58 | 3A03484B125BF4A800F49FA6 /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A034847125BF4A800F49FA6 /* BaseTableViewController.m */; }; 59 | 3A03484C125BF4A800F49FA6 /* BaseLoadingViewCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A034849125BF4A800F49FA6 /* BaseLoadingViewCenter.m */; }; 60 | 3A03525E125DFD7700F49FA6 /* NSObject+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A03525D125DFD7700F49FA6 /* NSObject+Extensions.m */; }; 61 | 3A035469125FFFBB00F49FA6 /* Entitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3A035468125FFFBB00F49FA6 /* Entitlements.plist */; }; 62 | 3A22B5E5125BF20800A3B8C9 /* SBJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A22B4D3125BF20700A3B8C9 /* SBJsonParser.m */; }; 63 | 3A22B5E6125BF20800A3B8C9 /* SBJsonWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A22B4D5125BF20700A3B8C9 /* SBJsonWriter.m */; }; 64 | 3A22B679125BF20800A3B8C9 /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A22B592125BF20800A3B8C9 /* MBProgressHUD.m */; }; 65 | 3A22B693125BF20800A3B8C9 /* NSDate-Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A22B5C1125BF20800A3B8C9 /* NSDate-Utilities.m */; }; 66 | 3A22B699125BF20800A3B8C9 /* TimeFormatters.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A22B5C9125BF20800A3B8C9 /* TimeFormatters.m */; }; 67 | 3A3EEE5A127BEFC30034C867 /* SBJsonStreamWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A3EEE58127BEFC30034C867 /* SBJsonStreamWriter.m */; }; 68 | 3A57000F11FFB24F00248D1D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FFA211FFB24F00248D1D /* AppDelegate.m */; }; 69 | 3A57001011FFB24F00248D1D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FFA311FFB24F00248D1D /* main.m */; }; 70 | 3A57006511FFB58400248D1D /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57006411FFB58400248D1D /* CFNetwork.framework */; }; 71 | 3A57FE2411FFB1F300248D1D /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE2311FFB1F300248D1D /* AddressBook.framework */; }; 72 | 3A57FE2611FFB1F300248D1D /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE2511FFB1F300248D1D /* AddressBookUI.framework */; }; 73 | 3A57FE2811FFB1F300248D1D /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE2711FFB1F300248D1D /* CoreFoundation.framework */; }; 74 | 3A57FE2A11FFB1F300248D1D /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE2911FFB1F300248D1D /* CoreLocation.framework */; }; 75 | 3A57FE2E11FFB1F300248D1D /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE2D11FFB1F300248D1D /* MobileCoreServices.framework */; }; 76 | 3A57FE3011FFB1F300248D1D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE2F11FFB1F300248D1D /* QuartzCore.framework */; }; 77 | 3A57FE3211FFB1F300248D1D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE3111FFB1F300248D1D /* Security.framework */; }; 78 | 3A57FE3411FFB1F300248D1D /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE3311FFB1F300248D1D /* SystemConfiguration.framework */; }; 79 | 3A57FE3611FFB1F300248D1D /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A57FE3511FFB1F300248D1D /* libz.1.2.3.dylib */; }; 80 | 3A57FFCA11FFB24F00248D1D /* ASIAuthenticationDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF0A11FFB24F00248D1D /* ASIAuthenticationDialog.m */; }; 81 | 3A57FFCB11FFB24F00248D1D /* ASIDownloadCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF0D11FFB24F00248D1D /* ASIDownloadCache.m */; }; 82 | 3A57FFCC11FFB24F00248D1D /* ASIFormDataRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF0F11FFB24F00248D1D /* ASIFormDataRequest.m */; }; 83 | 3A57FFCD11FFB24F00248D1D /* ASIHTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF1111FFB24F00248D1D /* ASIHTTPRequest.m */; }; 84 | 3A57FFCE11FFB24F00248D1D /* ASIInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF1511FFB24F00248D1D /* ASIInputStream.m */; }; 85 | 3A57FFCF11FFB24F00248D1D /* ASINetworkQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF1711FFB24F00248D1D /* ASINetworkQueue.m */; }; 86 | 3A57FFE911FFB24F00248D1D /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A57FF5111FFB24F00248D1D /* Reachability.m */; }; 87 | /* End PBXBuildFile section */ 88 | 89 | /* Begin PBXFileReference section */ 90 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 91 | 1D6058910D05DD3D006BFB54 /* AussieSurnames.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AussieSurnames.app; sourceTree = BUILT_PRODUCTS_DIR; }; 92 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 93 | 2434D15412B2E004007B8A13 /* SurnamesDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SurnamesDataSource.h; sourceTree = ""; }; 94 | 2434D15512B2E004007B8A13 /* SurnamesDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SurnamesDataSource.m; sourceTree = ""; }; 95 | 2434D6E412B5A8CA007B8A13 /* libSystem.B.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libSystem.B.dylib; path = usr/lib/libSystem.B.dylib; sourceTree = SDKROOT; }; 96 | 2437216D1297E254003C19B7 /* BaseServices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseServices.h; sourceTree = ""; }; 97 | 2437216E1297E254003C19B7 /* BaseServices.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseServices.m; sourceTree = ""; }; 98 | 243BE66912976A6300186377 /* BaseWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseWebViewController.h; sourceTree = ""; }; 99 | 243BE66A12976A6300186377 /* BaseWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseWebViewController.m; sourceTree = ""; }; 100 | 2449FA8B12A64D8600754D3C /* SurnamesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SurnamesViewController.h; sourceTree = ""; }; 101 | 2449FA8C12A64D8600754D3C /* SurnamesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SurnamesViewController.m; sourceTree = ""; }; 102 | 2449FA9612A64EA500754D3C /* SurnamesView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SurnamesView.xib; sourceTree = ""; }; 103 | 248921C4128ED28700DC9712 /* APIServices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIServices.h; sourceTree = ""; }; 104 | 248921C5128ED28700DC9712 /* APIServices.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APIServices.m; sourceTree = ""; }; 105 | 248921C7128EDE0200DC9712 /* APIServices+Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "APIServices+Utils.h"; sourceTree = ""; }; 106 | 248921C8128EDE0200DC9712 /* APIServices+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "APIServices+Utils.m"; sourceTree = ""; }; 107 | 248921C9128EDE0200DC9712 /* APIServices+Parsing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "APIServices+Parsing.h"; sourceTree = ""; }; 108 | 248921CA128EDE0200DC9712 /* APIServices+Parsing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "APIServices+Parsing.m"; sourceTree = ""; }; 109 | 248921D3128EE15E00DC9712 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainWindow.xib; path = Views/MainWindow.xib; sourceTree = ""; }; 110 | 248921F0128EE28D00DC9712 /* BaseTableViewDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewDataSource.h; sourceTree = ""; }; 111 | 248921F1128EE28D00DC9712 /* BaseTableViewDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewDataSource.m; sourceTree = ""; }; 112 | 248921F2128EE28D00DC9712 /* ChoicesListDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChoicesListDataSource.h; sourceTree = ""; }; 113 | 248921F3128EE28D00DC9712 /* ChoicesListDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChoicesListDataSource.m; sourceTree = ""; }; 114 | 24892201128EE67500DC9712 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 115 | 248927A2128FF71C00DC9712 /* EGORefreshTableHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EGORefreshTableHeaderView.h; sourceTree = ""; }; 116 | 248927A3128FF71C00DC9712 /* EGORefreshTableHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EGORefreshTableHeaderView.m; sourceTree = ""; }; 117 | 248927A5128FF71C00DC9712 /* blackArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blackArrow.png; sourceTree = ""; }; 118 | 248927A6128FF71C00DC9712 /* blackArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blackArrow@2x.png"; sourceTree = ""; }; 119 | 248927A7128FF71C00DC9712 /* blueArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blueArrow.png; sourceTree = ""; }; 120 | 248927A8128FF71C00DC9712 /* blueArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blueArrow@2x.png"; sourceTree = ""; }; 121 | 248927A9128FF71C00DC9712 /* grayArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = grayArrow.png; sourceTree = ""; }; 122 | 248927AA128FF71C00DC9712 /* grayArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "grayArrow@2x.png"; sourceTree = ""; }; 123 | 248927AB128FF71C00DC9712 /* whiteArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = whiteArrow.png; sourceTree = ""; }; 124 | 248927AC128FF71C00DC9712 /* whiteArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "whiteArrow@2x.png"; sourceTree = ""; }; 125 | 248927E5128FF81100DC9712 /* BaseTableViewRefreshController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewRefreshController.h; sourceTree = ""; }; 126 | 248927E6128FF81100DC9712 /* BaseTableViewRefreshController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewRefreshController.m; sourceTree = ""; }; 127 | 248929801290335A00DC9712 /* ASIDataCompressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIDataCompressor.h; sourceTree = ""; }; 128 | 248929811290335A00DC9712 /* ASIDataCompressor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIDataCompressor.m; sourceTree = ""; }; 129 | 248929821290335A00DC9712 /* ASIDataDecompressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIDataDecompressor.h; sourceTree = ""; }; 130 | 248929831290335A00DC9712 /* ASIDataDecompressor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIDataDecompressor.m; sourceTree = ""; }; 131 | 24ADB43E12CB6909000BE62C /* Surname.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Surname.h; sourceTree = ""; }; 132 | 24ADB43F12CB6909000BE62C /* Surname.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Surname.m; sourceTree = ""; }; 133 | 24ADB4C612CB7069000BE62C /* CoreSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreSupport.h; sourceTree = ""; }; 134 | 24ADB4C812CB7069000BE62C /* NSString+InflectionSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+InflectionSupport.h"; sourceTree = ""; }; 135 | 24ADB4C912CB7069000BE62C /* NSString+InflectionSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+InflectionSupport.m"; sourceTree = ""; }; 136 | 24ADB4CA12CB7069000BE62C /* NSData+Additions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Additions.h"; sourceTree = ""; }; 137 | 24ADB4CB12CB7069000BE62C /* NSData+Additions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Additions.m"; sourceTree = ""; }; 138 | 24ADB4CC12CB7069000BE62C /* NSObject+PropertySupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+PropertySupport.h"; sourceTree = ""; }; 139 | 24ADB4CD12CB7069000BE62C /* NSObject+PropertySupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+PropertySupport.m"; sourceTree = ""; }; 140 | 24ADB4CE12CB7069000BE62C /* NSString+GSub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+GSub.h"; sourceTree = ""; }; 141 | 24ADB4CF12CB7069000BE62C /* NSString+GSub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+GSub.m"; sourceTree = ""; }; 142 | 24ADB4D012CB7069000BE62C /* ObjectiveResourceDateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectiveResourceDateFormatter.h; sourceTree = ""; }; 143 | 24ADB4D112CB7069000BE62C /* ObjectiveResourceDateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectiveResourceDateFormatter.m; sourceTree = ""; }; 144 | 24ADB4D212CB7069000BE62C /* ObjectiveSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectiveSupport.h; sourceTree = ""; }; 145 | 24ADB4DD12CB7069000BE62C /* JSONSerializable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONSerializable.h; sourceTree = ""; }; 146 | 24ADB4DE12CB7069000BE62C /* JSONSerializableSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONSerializableSupport.h; sourceTree = ""; }; 147 | 24ADB4DF12CB7069000BE62C /* NSArray+JSONSerializableSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+JSONSerializableSupport.h"; sourceTree = ""; }; 148 | 24ADB4E012CB7069000BE62C /* NSArray+JSONSerializableSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+JSONSerializableSupport.m"; sourceTree = ""; }; 149 | 24ADB4E112CB7069000BE62C /* NSDictionary+JSONSerializableSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+JSONSerializableSupport.h"; sourceTree = ""; }; 150 | 24ADB4E212CB7069000BE62C /* NSDictionary+JSONSerializableSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+JSONSerializableSupport.m"; sourceTree = ""; }; 151 | 24ADB4E312CB7069000BE62C /* NSObject+JSONSerializableSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+JSONSerializableSupport.h"; sourceTree = ""; }; 152 | 24ADB4E412CB7069000BE62C /* NSObject+JSONSerializableSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+JSONSerializableSupport.m"; sourceTree = ""; }; 153 | 24ADB4E512CB7069000BE62C /* NSDate+Serialize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+Serialize.h"; sourceTree = ""; }; 154 | 24ADB4E612CB7069000BE62C /* NSDate+Serialize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+Serialize.m"; sourceTree = ""; }; 155 | 24ADB4E712CB7069000BE62C /* NSDictionary+KeyTranslation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+KeyTranslation.h"; sourceTree = ""; }; 156 | 24ADB4E812CB7069000BE62C /* NSDictionary+KeyTranslation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+KeyTranslation.m"; sourceTree = ""; }; 157 | 24ADB4E912CB7069000BE62C /* NSObject+Serialize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+Serialize.h"; sourceTree = ""; }; 158 | 24ADB4EA12CB7069000BE62C /* NSObject+Serialize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+Serialize.m"; sourceTree = ""; }; 159 | 24ADB4EB12CB7069000BE62C /* NSString+Serialize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Serialize.h"; sourceTree = ""; }; 160 | 24ADB4EC12CB7069000BE62C /* NSString+Serialize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Serialize.m"; sourceTree = ""; }; 161 | 24ADB4ED12CB7069000BE62C /* Serialize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Serialize.h; sourceTree = ""; }; 162 | 24ADB6D812CB7132000BE62C /* MyLocationGetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLocationGetter.h; sourceTree = ""; }; 163 | 24ADB6D912CB7132000BE62C /* MyLocationGetter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLocationGetter.m; sourceTree = ""; }; 164 | 24ADB6FF12CB7225000BE62C /* NSObject+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+JSON.h"; sourceTree = ""; }; 165 | 24ADB70012CB7225000BE62C /* NSObject+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+JSON.m"; sourceTree = ""; }; 166 | 24ADB70112CB7225000BE62C /* SBJsonStreamParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParser.h; sourceTree = ""; }; 167 | 24ADB70212CB7225000BE62C /* SBJsonStreamParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParser.m; sourceTree = ""; }; 168 | 24ADB70312CB7225000BE62C /* SBJsonStreamParserAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParserAdapter.h; sourceTree = ""; }; 169 | 24ADB70412CB7225000BE62C /* SBJsonStreamParserAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParserAdapter.m; sourceTree = ""; }; 170 | 24ADB70512CB7225000BE62C /* SBJsonStreamParserState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParserState.h; sourceTree = ""; }; 171 | 24ADB70612CB7225000BE62C /* SBJsonStreamParserState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParserState.m; sourceTree = ""; }; 172 | 24ADB70712CB7225000BE62C /* SBJsonStreamWriterState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamWriterState.h; sourceTree = ""; }; 173 | 24ADB70812CB7225000BE62C /* SBJsonStreamWriterState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamWriterState.m; sourceTree = ""; }; 174 | 24ADB70912CB7225000BE62C /* SBJsonTokeniser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonTokeniser.h; sourceTree = ""; }; 175 | 24ADB70A12CB7225000BE62C /* SBJsonTokeniser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonTokeniser.m; sourceTree = ""; }; 176 | 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 177 | 3A034844125BF4A800F49FA6 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = ""; }; 178 | 3A034845125BF4A800F49FA6 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = ""; }; 179 | 3A034846125BF4A800F49FA6 /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = ""; }; 180 | 3A034847125BF4A800F49FA6 /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = ""; }; 181 | 3A034848125BF4A800F49FA6 /* BaseLoadingViewCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseLoadingViewCenter.h; sourceTree = ""; }; 182 | 3A034849125BF4A800F49FA6 /* BaseLoadingViewCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseLoadingViewCenter.m; sourceTree = ""; }; 183 | 3A03525C125DFD7700F49FA6 /* NSObject+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+Extensions.h"; sourceTree = ""; }; 184 | 3A03525D125DFD7700F49FA6 /* NSObject+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+Extensions.m"; sourceTree = ""; }; 185 | 3A035468125FFFBB00F49FA6 /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = ""; }; 186 | 3A22B4CB125BF20700A3B8C9 /* JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSON.h; sourceTree = ""; }; 187 | 3A22B4D2125BF20700A3B8C9 /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonParser.h; sourceTree = ""; }; 188 | 3A22B4D3125BF20700A3B8C9 /* SBJsonParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonParser.m; sourceTree = ""; }; 189 | 3A22B4D4125BF20700A3B8C9 /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonWriter.h; sourceTree = ""; }; 190 | 3A22B4D5125BF20700A3B8C9 /* SBJsonWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonWriter.m; sourceTree = ""; }; 191 | 3A22B591125BF20800A3B8C9 /* MBProgressHUD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; 192 | 3A22B592125BF20800A3B8C9 /* MBProgressHUD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; 193 | 3A22B5C0125BF20800A3B8C9 /* NSDate-Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate-Utilities.h"; sourceTree = ""; }; 194 | 3A22B5C1125BF20800A3B8C9 /* NSDate-Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate-Utilities.m"; sourceTree = ""; }; 195 | 3A22B5C8125BF20800A3B8C9 /* TimeFormatters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeFormatters.h; sourceTree = ""; }; 196 | 3A22B5C9125BF20800A3B8C9 /* TimeFormatters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimeFormatters.m; sourceTree = ""; }; 197 | 3A3EEE57127BEFC30034C867 /* SBJsonStreamWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamWriter.h; sourceTree = ""; }; 198 | 3A3EEE58127BEFC30034C867 /* SBJsonStreamWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamWriter.m; sourceTree = ""; }; 199 | 3A57002C11FFB2A500248D1D /* Define.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Define.h; sourceTree = ""; }; 200 | 3A57006411FFB58400248D1D /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 201 | 3A57FE2311FFB1F300248D1D /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; 202 | 3A57FE2511FFB1F300248D1D /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; 203 | 3A57FE2711FFB1F300248D1D /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 204 | 3A57FE2911FFB1F300248D1D /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; 205 | 3A57FE2D11FFB1F300248D1D /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; 206 | 3A57FE2F11FFB1F300248D1D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 207 | 3A57FE3111FFB1F300248D1D /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 208 | 3A57FE3311FFB1F300248D1D /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 209 | 3A57FE3511FFB1F300248D1D /* libz.1.2.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.2.3.dylib; path = usr/lib/libz.1.2.3.dylib; sourceTree = SDKROOT; }; 210 | 3A57FED511FFB24F00248D1D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 211 | 3A57FF0911FFB24F00248D1D /* ASIAuthenticationDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIAuthenticationDialog.h; sourceTree = ""; }; 212 | 3A57FF0A11FFB24F00248D1D /* ASIAuthenticationDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIAuthenticationDialog.m; sourceTree = ""; }; 213 | 3A57FF0B11FFB24F00248D1D /* ASICacheDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASICacheDelegate.h; sourceTree = ""; }; 214 | 3A57FF0C11FFB24F00248D1D /* ASIDownloadCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIDownloadCache.h; sourceTree = ""; }; 215 | 3A57FF0D11FFB24F00248D1D /* ASIDownloadCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIDownloadCache.m; sourceTree = ""; }; 216 | 3A57FF0E11FFB24F00248D1D /* ASIFormDataRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIFormDataRequest.h; sourceTree = ""; }; 217 | 3A57FF0F11FFB24F00248D1D /* ASIFormDataRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIFormDataRequest.m; sourceTree = ""; }; 218 | 3A57FF1011FFB24F00248D1D /* ASIHTTPRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIHTTPRequest.h; sourceTree = ""; }; 219 | 3A57FF1111FFB24F00248D1D /* ASIHTTPRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIHTTPRequest.m; sourceTree = ""; }; 220 | 3A57FF1211FFB24F00248D1D /* ASIHTTPRequestConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIHTTPRequestConfig.h; sourceTree = ""; }; 221 | 3A57FF1311FFB24F00248D1D /* ASIHTTPRequestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIHTTPRequestDelegate.h; sourceTree = ""; }; 222 | 3A57FF1411FFB24F00248D1D /* ASIInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIInputStream.h; sourceTree = ""; }; 223 | 3A57FF1511FFB24F00248D1D /* ASIInputStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIInputStream.m; sourceTree = ""; }; 224 | 3A57FF1611FFB24F00248D1D /* ASINetworkQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASINetworkQueue.h; sourceTree = ""; }; 225 | 3A57FF1711FFB24F00248D1D /* ASINetworkQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASINetworkQueue.m; sourceTree = ""; }; 226 | 3A57FF1811FFB24F00248D1D /* ASIProgressDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIProgressDelegate.h; sourceTree = ""; }; 227 | 3A57FF5011FFB24F00248D1D /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = ""; }; 228 | 3A57FF5111FFB24F00248D1D /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = ""; }; 229 | 3A57FF9111FFB24F00248D1D /* SynthesizeSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynthesizeSingleton.h; sourceTree = ""; }; 230 | 3A57FFA111FFB24F00248D1D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 231 | 3A57FFA211FFB24F00248D1D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 232 | 3A57FFA311FFB24F00248D1D /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 233 | 3A57FFA511FFB24F00248D1D /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; 234 | /* End PBXFileReference section */ 235 | 236 | /* Begin PBXFrameworksBuildPhase section */ 237 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 238 | isa = PBXFrameworksBuildPhase; 239 | buildActionMask = 2147483647; 240 | files = ( 241 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 242 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 243 | 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, 244 | 3A57FE2411FFB1F300248D1D /* AddressBook.framework in Frameworks */, 245 | 3A57FE2611FFB1F300248D1D /* AddressBookUI.framework in Frameworks */, 246 | 3A57FE2811FFB1F300248D1D /* CoreFoundation.framework in Frameworks */, 247 | 3A57FE2A11FFB1F300248D1D /* CoreLocation.framework in Frameworks */, 248 | 3A57FE2E11FFB1F300248D1D /* MobileCoreServices.framework in Frameworks */, 249 | 3A57FE3011FFB1F300248D1D /* QuartzCore.framework in Frameworks */, 250 | 3A57FE3211FFB1F300248D1D /* Security.framework in Frameworks */, 251 | 3A57FE3411FFB1F300248D1D /* SystemConfiguration.framework in Frameworks */, 252 | 3A57FE3611FFB1F300248D1D /* libz.1.2.3.dylib in Frameworks */, 253 | 3A57006511FFB58400248D1D /* CFNetwork.framework in Frameworks */, 254 | 2434D6E512B5A8CA007B8A13 /* libSystem.B.dylib in Frameworks */, 255 | ); 256 | runOnlyForDeploymentPostprocessing = 0; 257 | }; 258 | /* End PBXFrameworksBuildPhase section */ 259 | 260 | /* Begin PBXGroup section */ 261 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 262 | isa = PBXGroup; 263 | children = ( 264 | 1D6058910D05DD3D006BFB54 /* AussieSurnames.app */, 265 | ); 266 | name = Products; 267 | sourceTree = ""; 268 | }; 269 | 2449FA8712A64D1900754D3C /* Crowd */ = { 270 | isa = PBXGroup; 271 | children = ( 272 | 2434D15412B2E004007B8A13 /* SurnamesDataSource.h */, 273 | 2434D15512B2E004007B8A13 /* SurnamesDataSource.m */, 274 | 2449FA8B12A64D8600754D3C /* SurnamesViewController.h */, 275 | 2449FA8C12A64D8600754D3C /* SurnamesViewController.m */, 276 | 2449FA9612A64EA500754D3C /* SurnamesView.xib */, 277 | ); 278 | name = Crowd; 279 | sourceTree = ""; 280 | }; 281 | 248921C3128ED27000DC9712 /* API */ = { 282 | isa = PBXGroup; 283 | children = ( 284 | 248921C4128ED28700DC9712 /* APIServices.h */, 285 | 248921C5128ED28700DC9712 /* APIServices.m */, 286 | 248921C7128EDE0200DC9712 /* APIServices+Utils.h */, 287 | 248921C8128EDE0200DC9712 /* APIServices+Utils.m */, 288 | 248921C9128EDE0200DC9712 /* APIServices+Parsing.h */, 289 | 248921CA128EDE0200DC9712 /* APIServices+Parsing.m */, 290 | ); 291 | name = API; 292 | sourceTree = ""; 293 | }; 294 | 24892757128FF71C00DC9712 /* EGOTableViewPullRefresh */ = { 295 | isa = PBXGroup; 296 | children = ( 297 | 2489279C128FF71C00DC9712 /* EGOTableViewPullRefresh */, 298 | ); 299 | path = EGOTableViewPullRefresh; 300 | sourceTree = ""; 301 | }; 302 | 2489279C128FF71C00DC9712 /* EGOTableViewPullRefresh */ = { 303 | isa = PBXGroup; 304 | children = ( 305 | 2489279D128FF71C00DC9712 /* Classes */, 306 | 248927A4128FF71C00DC9712 /* Resources */, 307 | ); 308 | path = EGOTableViewPullRefresh; 309 | sourceTree = ""; 310 | }; 311 | 2489279D128FF71C00DC9712 /* Classes */ = { 312 | isa = PBXGroup; 313 | children = ( 314 | 248927A1128FF71C00DC9712 /* View */, 315 | ); 316 | path = Classes; 317 | sourceTree = ""; 318 | }; 319 | 248927A1128FF71C00DC9712 /* View */ = { 320 | isa = PBXGroup; 321 | children = ( 322 | 248927A2128FF71C00DC9712 /* EGORefreshTableHeaderView.h */, 323 | 248927A3128FF71C00DC9712 /* EGORefreshTableHeaderView.m */, 324 | ); 325 | path = View; 326 | sourceTree = ""; 327 | }; 328 | 248927A4128FF71C00DC9712 /* Resources */ = { 329 | isa = PBXGroup; 330 | children = ( 331 | 248927A5128FF71C00DC9712 /* blackArrow.png */, 332 | 248927A6128FF71C00DC9712 /* blackArrow@2x.png */, 333 | 248927A7128FF71C00DC9712 /* blueArrow.png */, 334 | 248927A8128FF71C00DC9712 /* blueArrow@2x.png */, 335 | 248927A9128FF71C00DC9712 /* grayArrow.png */, 336 | 248927AA128FF71C00DC9712 /* grayArrow@2x.png */, 337 | 248927AB128FF71C00DC9712 /* whiteArrow.png */, 338 | 248927AC128FF71C00DC9712 /* whiteArrow@2x.png */, 339 | ); 340 | path = Resources; 341 | sourceTree = ""; 342 | }; 343 | 24ADB49C12CB7069000BE62C /* objectivesupport */ = { 344 | isa = PBXGroup; 345 | children = ( 346 | 24ADB4C312CB7069000BE62C /* Classes */, 347 | ); 348 | path = objectivesupport; 349 | sourceTree = ""; 350 | }; 351 | 24ADB4C312CB7069000BE62C /* Classes */ = { 352 | isa = PBXGroup; 353 | children = ( 354 | 24ADB4C412CB7069000BE62C /* lib */, 355 | ); 356 | path = Classes; 357 | sourceTree = ""; 358 | }; 359 | 24ADB4C412CB7069000BE62C /* lib */ = { 360 | isa = PBXGroup; 361 | children = ( 362 | 24ADB4C512CB7069000BE62C /* Core */, 363 | 24ADB4DB12CB7069000BE62C /* Serialization */, 364 | ); 365 | path = lib; 366 | sourceTree = ""; 367 | }; 368 | 24ADB4C512CB7069000BE62C /* Core */ = { 369 | isa = PBXGroup; 370 | children = ( 371 | 24ADB4C612CB7069000BE62C /* CoreSupport.h */, 372 | 24ADB4C712CB7069000BE62C /* Inflections */, 373 | 24ADB4CA12CB7069000BE62C /* NSData+Additions.h */, 374 | 24ADB4CB12CB7069000BE62C /* NSData+Additions.m */, 375 | 24ADB4CC12CB7069000BE62C /* NSObject+PropertySupport.h */, 376 | 24ADB4CD12CB7069000BE62C /* NSObject+PropertySupport.m */, 377 | 24ADB4CE12CB7069000BE62C /* NSString+GSub.h */, 378 | 24ADB4CF12CB7069000BE62C /* NSString+GSub.m */, 379 | 24ADB4D012CB7069000BE62C /* ObjectiveResourceDateFormatter.h */, 380 | 24ADB4D112CB7069000BE62C /* ObjectiveResourceDateFormatter.m */, 381 | 24ADB4D212CB7069000BE62C /* ObjectiveSupport.h */, 382 | ); 383 | path = Core; 384 | sourceTree = ""; 385 | }; 386 | 24ADB4C712CB7069000BE62C /* Inflections */ = { 387 | isa = PBXGroup; 388 | children = ( 389 | 24ADB4C812CB7069000BE62C /* NSString+InflectionSupport.h */, 390 | 24ADB4C912CB7069000BE62C /* NSString+InflectionSupport.m */, 391 | ); 392 | path = Inflections; 393 | sourceTree = ""; 394 | }; 395 | 24ADB4DB12CB7069000BE62C /* Serialization */ = { 396 | isa = PBXGroup; 397 | children = ( 398 | 24ADB4DC12CB7069000BE62C /* JSON */, 399 | 24ADB4E512CB7069000BE62C /* NSDate+Serialize.h */, 400 | 24ADB4E612CB7069000BE62C /* NSDate+Serialize.m */, 401 | 24ADB4E712CB7069000BE62C /* NSDictionary+KeyTranslation.h */, 402 | 24ADB4E812CB7069000BE62C /* NSDictionary+KeyTranslation.m */, 403 | 24ADB4E912CB7069000BE62C /* NSObject+Serialize.h */, 404 | 24ADB4EA12CB7069000BE62C /* NSObject+Serialize.m */, 405 | 24ADB4EB12CB7069000BE62C /* NSString+Serialize.h */, 406 | 24ADB4EC12CB7069000BE62C /* NSString+Serialize.m */, 407 | 24ADB4ED12CB7069000BE62C /* Serialize.h */, 408 | ); 409 | path = Serialization; 410 | sourceTree = ""; 411 | }; 412 | 24ADB4DC12CB7069000BE62C /* JSON */ = { 413 | isa = PBXGroup; 414 | children = ( 415 | 24ADB4DD12CB7069000BE62C /* JSONSerializable.h */, 416 | 24ADB4DE12CB7069000BE62C /* JSONSerializableSupport.h */, 417 | 24ADB4DF12CB7069000BE62C /* NSArray+JSONSerializableSupport.h */, 418 | 24ADB4E012CB7069000BE62C /* NSArray+JSONSerializableSupport.m */, 419 | 24ADB4E112CB7069000BE62C /* NSDictionary+JSONSerializableSupport.h */, 420 | 24ADB4E212CB7069000BE62C /* NSDictionary+JSONSerializableSupport.m */, 421 | 24ADB4E312CB7069000BE62C /* NSObject+JSONSerializableSupport.h */, 422 | 24ADB4E412CB7069000BE62C /* NSObject+JSONSerializableSupport.m */, 423 | ); 424 | path = JSON; 425 | sourceTree = ""; 426 | }; 427 | 24ADB6DB12CB7137000BE62C /* Core Location */ = { 428 | isa = PBXGroup; 429 | children = ( 430 | 24ADB6D812CB7132000BE62C /* MyLocationGetter.h */, 431 | 24ADB6D912CB7132000BE62C /* MyLocationGetter.m */, 432 | ); 433 | name = "Core Location"; 434 | sourceTree = ""; 435 | }; 436 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 437 | isa = PBXGroup; 438 | children = ( 439 | 3A57FEDC11FFB24F00248D1D /* Source */, 440 | 3A57FED411FFB24F00248D1D /* Resources */, 441 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 442 | 19C28FACFE9D520D11CA2CBB /* Products */, 443 | 2434D6E412B5A8CA007B8A13 /* libSystem.B.dylib */, 444 | ); 445 | name = CustomTemplate; 446 | sourceTree = ""; 447 | }; 448 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 449 | isa = PBXGroup; 450 | children = ( 451 | 3A57006411FFB58400248D1D /* CFNetwork.framework */, 452 | 3A57FE2311FFB1F300248D1D /* AddressBook.framework */, 453 | 3A57FE2511FFB1F300248D1D /* AddressBookUI.framework */, 454 | 3A57FE2711FFB1F300248D1D /* CoreFoundation.framework */, 455 | 3A57FE2911FFB1F300248D1D /* CoreLocation.framework */, 456 | 3A57FE2D11FFB1F300248D1D /* MobileCoreServices.framework */, 457 | 3A57FE2F11FFB1F300248D1D /* QuartzCore.framework */, 458 | 3A57FE3111FFB1F300248D1D /* Security.framework */, 459 | 3A57FE3311FFB1F300248D1D /* SystemConfiguration.framework */, 460 | 3A57FE3511FFB1F300248D1D /* libz.1.2.3.dylib */, 461 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 462 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 463 | 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, 464 | 24892201128EE67500DC9712 /* MapKit.framework */, 465 | ); 466 | name = Frameworks; 467 | sourceTree = ""; 468 | }; 469 | 3A22B4A2125BF20700A3B8C9 /* json-framework */ = { 470 | isa = PBXGroup; 471 | children = ( 472 | 3A22B4CA125BF20700A3B8C9 /* Classes */, 473 | ); 474 | path = "json-framework"; 475 | sourceTree = ""; 476 | }; 477 | 3A22B4CA125BF20700A3B8C9 /* Classes */ = { 478 | isa = PBXGroup; 479 | children = ( 480 | 24ADB6FF12CB7225000BE62C /* NSObject+JSON.h */, 481 | 24ADB70012CB7225000BE62C /* NSObject+JSON.m */, 482 | 24ADB70112CB7225000BE62C /* SBJsonStreamParser.h */, 483 | 24ADB70212CB7225000BE62C /* SBJsonStreamParser.m */, 484 | 24ADB70312CB7225000BE62C /* SBJsonStreamParserAdapter.h */, 485 | 24ADB70412CB7225000BE62C /* SBJsonStreamParserAdapter.m */, 486 | 24ADB70512CB7225000BE62C /* SBJsonStreamParserState.h */, 487 | 24ADB70612CB7225000BE62C /* SBJsonStreamParserState.m */, 488 | 24ADB70712CB7225000BE62C /* SBJsonStreamWriterState.h */, 489 | 24ADB70812CB7225000BE62C /* SBJsonStreamWriterState.m */, 490 | 24ADB70912CB7225000BE62C /* SBJsonTokeniser.h */, 491 | 24ADB70A12CB7225000BE62C /* SBJsonTokeniser.m */, 492 | 3A3EEE57127BEFC30034C867 /* SBJsonStreamWriter.h */, 493 | 3A3EEE58127BEFC30034C867 /* SBJsonStreamWriter.m */, 494 | 3A22B4CB125BF20700A3B8C9 /* JSON.h */, 495 | 3A22B4D2125BF20700A3B8C9 /* SBJsonParser.h */, 496 | 3A22B4D3125BF20700A3B8C9 /* SBJsonParser.m */, 497 | 3A22B4D4125BF20700A3B8C9 /* SBJsonWriter.h */, 498 | 3A22B4D5125BF20700A3B8C9 /* SBJsonWriter.m */, 499 | ); 500 | path = Classes; 501 | sourceTree = ""; 502 | }; 503 | 3A22B555125BF20700A3B8C9 /* MBProgressHUD */ = { 504 | isa = PBXGroup; 505 | children = ( 506 | 3A22B591125BF20800A3B8C9 /* MBProgressHUD.h */, 507 | 3A22B592125BF20800A3B8C9 /* MBProgressHUD.m */, 508 | ); 509 | path = MBProgressHUD; 510 | sourceTree = ""; 511 | }; 512 | 3A22B594125BF20800A3B8C9 /* NSDate-Extensions */ = { 513 | isa = PBXGroup; 514 | children = ( 515 | 3A22B5C0125BF20800A3B8C9 /* NSDate-Utilities.h */, 516 | 3A22B5C1125BF20800A3B8C9 /* NSDate-Utilities.m */, 517 | 3A22B5C8125BF20800A3B8C9 /* TimeFormatters.h */, 518 | 3A22B5C9125BF20800A3B8C9 /* TimeFormatters.m */, 519 | ); 520 | path = "NSDate-Extensions"; 521 | sourceTree = ""; 522 | }; 523 | 3A57002D11FFB2AC00248D1D /* Other */ = { 524 | isa = PBXGroup; 525 | children = ( 526 | 3A57FFA311FFB24F00248D1D /* main.m */, 527 | 3A57FFA511FFB24F00248D1D /* Prefix.pch */, 528 | ); 529 | name = Other; 530 | path = Main; 531 | sourceTree = ""; 532 | }; 533 | 3A57FED411FFB24F00248D1D /* Resources */ = { 534 | isa = PBXGroup; 535 | children = ( 536 | 3A57FED811FFB24F00248D1D /* Images */, 537 | 3A57FED511FFB24F00248D1D /* Info.plist */, 538 | 3A035468125FFFBB00F49FA6 /* Entitlements.plist */, 539 | ); 540 | path = Resources; 541 | sourceTree = ""; 542 | }; 543 | 3A57FED811FFB24F00248D1D /* Images */ = { 544 | isa = PBXGroup; 545 | children = ( 546 | ); 547 | path = Images; 548 | sourceTree = ""; 549 | }; 550 | 3A57FEDC11FFB24F00248D1D /* Source */ = { 551 | isa = PBXGroup; 552 | children = ( 553 | 3A57FEDD11FFB24F00248D1D /* External */, 554 | 3A57FFA011FFB24F00248D1D /* Main */, 555 | 3A57002D11FFB2AC00248D1D /* Other */, 556 | ); 557 | path = Source; 558 | sourceTree = ""; 559 | }; 560 | 3A57FEDD11FFB24F00248D1D /* External */ = { 561 | isa = PBXGroup; 562 | children = ( 563 | 24ADB49C12CB7069000BE62C /* objectivesupport */, 564 | 24892757128FF71C00DC9712 /* EGOTableViewPullRefresh */, 565 | 3A22B4A2125BF20700A3B8C9 /* json-framework */, 566 | 3A22B555125BF20700A3B8C9 /* MBProgressHUD */, 567 | 3A22B594125BF20800A3B8C9 /* NSDate-Extensions */, 568 | 3A57FEDE11FFB24F00248D1D /* asihttprequest */, 569 | 3A57FF9011FFB24F00248D1D /* Gallager */, 570 | ); 571 | path = External; 572 | sourceTree = ""; 573 | }; 574 | 3A57FEDE11FFB24F00248D1D /* asihttprequest */ = { 575 | isa = PBXGroup; 576 | children = ( 577 | 3A57FF0811FFB24F00248D1D /* Classes */, 578 | 3A57FF4D11FFB24F00248D1D /* External */, 579 | ); 580 | path = asihttprequest; 581 | sourceTree = ""; 582 | }; 583 | 3A57FF0811FFB24F00248D1D /* Classes */ = { 584 | isa = PBXGroup; 585 | children = ( 586 | 248929801290335A00DC9712 /* ASIDataCompressor.h */, 587 | 248929811290335A00DC9712 /* ASIDataCompressor.m */, 588 | 248929821290335A00DC9712 /* ASIDataDecompressor.h */, 589 | 248929831290335A00DC9712 /* ASIDataDecompressor.m */, 590 | 3A57FF0911FFB24F00248D1D /* ASIAuthenticationDialog.h */, 591 | 3A57FF0A11FFB24F00248D1D /* ASIAuthenticationDialog.m */, 592 | 3A57FF0B11FFB24F00248D1D /* ASICacheDelegate.h */, 593 | 3A57FF0C11FFB24F00248D1D /* ASIDownloadCache.h */, 594 | 3A57FF0D11FFB24F00248D1D /* ASIDownloadCache.m */, 595 | 3A57FF0E11FFB24F00248D1D /* ASIFormDataRequest.h */, 596 | 3A57FF0F11FFB24F00248D1D /* ASIFormDataRequest.m */, 597 | 3A57FF1011FFB24F00248D1D /* ASIHTTPRequest.h */, 598 | 3A57FF1111FFB24F00248D1D /* ASIHTTPRequest.m */, 599 | 3A57FF1211FFB24F00248D1D /* ASIHTTPRequestConfig.h */, 600 | 3A57FF1311FFB24F00248D1D /* ASIHTTPRequestDelegate.h */, 601 | 3A57FF1411FFB24F00248D1D /* ASIInputStream.h */, 602 | 3A57FF1511FFB24F00248D1D /* ASIInputStream.m */, 603 | 3A57FF1611FFB24F00248D1D /* ASINetworkQueue.h */, 604 | 3A57FF1711FFB24F00248D1D /* ASINetworkQueue.m */, 605 | 3A57FF1811FFB24F00248D1D /* ASIProgressDelegate.h */, 606 | ); 607 | path = Classes; 608 | sourceTree = ""; 609 | }; 610 | 3A57FF4D11FFB24F00248D1D /* External */ = { 611 | isa = PBXGroup; 612 | children = ( 613 | 3A57FF4F11FFB24F00248D1D /* Reachability */, 614 | ); 615 | path = External; 616 | sourceTree = ""; 617 | }; 618 | 3A57FF4F11FFB24F00248D1D /* Reachability */ = { 619 | isa = PBXGroup; 620 | children = ( 621 | 3A57FF5011FFB24F00248D1D /* Reachability.h */, 622 | 3A57FF5111FFB24F00248D1D /* Reachability.m */, 623 | ); 624 | path = Reachability; 625 | sourceTree = ""; 626 | }; 627 | 3A57FF9011FFB24F00248D1D /* Gallager */ = { 628 | isa = PBXGroup; 629 | children = ( 630 | 3A57FF9111FFB24F00248D1D /* SynthesizeSingleton.h */, 631 | ); 632 | path = Gallager; 633 | sourceTree = ""; 634 | }; 635 | 3A57FFA011FFB24F00248D1D /* Main */ = { 636 | isa = PBXGroup; 637 | children = ( 638 | 3A57002C11FFB2A500248D1D /* Define.h */, 639 | 3A57FFA111FFB24F00248D1D /* AppDelegate.h */, 640 | 3A57FFA211FFB24F00248D1D /* AppDelegate.m */, 641 | 248921D3128EE15E00DC9712 /* MainWindow.xib */, 642 | 24ADB6DB12CB7137000BE62C /* Core Location */, 643 | 3A57FFA411FFB24F00248D1D /* Models */, 644 | 3A57FFA611FFB24F00248D1D /* Services */, 645 | 3A57FFA711FFB24F00248D1D /* Utilities */, 646 | 3A57FFA811FFB24F00248D1D /* Views */, 647 | ); 648 | path = Main; 649 | sourceTree = ""; 650 | }; 651 | 3A57FFA411FFB24F00248D1D /* Models */ = { 652 | isa = PBXGroup; 653 | children = ( 654 | 24ADB43E12CB6909000BE62C /* Surname.h */, 655 | 24ADB43F12CB6909000BE62C /* Surname.m */, 656 | ); 657 | path = Models; 658 | sourceTree = ""; 659 | }; 660 | 3A57FFA611FFB24F00248D1D /* Services */ = { 661 | isa = PBXGroup; 662 | children = ( 663 | 2437216D1297E254003C19B7 /* BaseServices.h */, 664 | 2437216E1297E254003C19B7 /* BaseServices.m */, 665 | 248921C3128ED27000DC9712 /* API */, 666 | ); 667 | path = Services; 668 | sourceTree = ""; 669 | }; 670 | 3A57FFA711FFB24F00248D1D /* Utilities */ = { 671 | isa = PBXGroup; 672 | children = ( 673 | 3A03525C125DFD7700F49FA6 /* NSObject+Extensions.h */, 674 | 3A03525D125DFD7700F49FA6 /* NSObject+Extensions.m */, 675 | ); 676 | path = Utilities; 677 | sourceTree = ""; 678 | }; 679 | 3A57FFA811FFB24F00248D1D /* Views */ = { 680 | isa = PBXGroup; 681 | children = ( 682 | 3A034844125BF4A800F49FA6 /* BaseViewController.h */, 683 | 3A034845125BF4A800F49FA6 /* BaseViewController.m */, 684 | 248921F0128EE28D00DC9712 /* BaseTableViewDataSource.h */, 685 | 248921F1128EE28D00DC9712 /* BaseTableViewDataSource.m */, 686 | 248921F2128EE28D00DC9712 /* ChoicesListDataSource.h */, 687 | 248921F3128EE28D00DC9712 /* ChoicesListDataSource.m */, 688 | 3A034846125BF4A800F49FA6 /* BaseTableViewController.h */, 689 | 3A034847125BF4A800F49FA6 /* BaseTableViewController.m */, 690 | 248927E5128FF81100DC9712 /* BaseTableViewRefreshController.h */, 691 | 248927E6128FF81100DC9712 /* BaseTableViewRefreshController.m */, 692 | 243BE66912976A6300186377 /* BaseWebViewController.h */, 693 | 243BE66A12976A6300186377 /* BaseWebViewController.m */, 694 | 3A034848125BF4A800F49FA6 /* BaseLoadingViewCenter.h */, 695 | 3A034849125BF4A800F49FA6 /* BaseLoadingViewCenter.m */, 696 | 2449FA8712A64D1900754D3C /* Crowd */, 697 | ); 698 | path = Views; 699 | sourceTree = ""; 700 | }; 701 | /* End PBXGroup section */ 702 | 703 | /* Begin PBXNativeTarget section */ 704 | 1D6058900D05DD3D006BFB54 /* AussieSurnames */ = { 705 | isa = PBXNativeTarget; 706 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AussieSurnames" */; 707 | buildPhases = ( 708 | 1D60588D0D05DD3D006BFB54 /* Resources */, 709 | 1D60588E0D05DD3D006BFB54 /* Sources */, 710 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 711 | ); 712 | buildRules = ( 713 | ); 714 | dependencies = ( 715 | ); 716 | name = AussieSurnames; 717 | productName = Envision; 718 | productReference = 1D6058910D05DD3D006BFB54 /* AussieSurnames.app */; 719 | productType = "com.apple.product-type.application"; 720 | }; 721 | /* End PBXNativeTarget section */ 722 | 723 | /* Begin PBXProject section */ 724 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 725 | isa = PBXProject; 726 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AussieSurnames" */; 727 | compatibilityVersion = "Xcode 3.1"; 728 | developmentRegion = English; 729 | hasScannedForEncodings = 1; 730 | knownRegions = ( 731 | English, 732 | Japanese, 733 | French, 734 | German, 735 | en, 736 | ); 737 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 738 | projectDirPath = ""; 739 | projectRoot = ""; 740 | targets = ( 741 | 1D6058900D05DD3D006BFB54 /* AussieSurnames */, 742 | ); 743 | }; 744 | /* End PBXProject section */ 745 | 746 | /* Begin PBXResourcesBuildPhase section */ 747 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 748 | isa = PBXResourcesBuildPhase; 749 | buildActionMask = 2147483647; 750 | files = ( 751 | 3A035469125FFFBB00F49FA6 /* Entitlements.plist in Resources */, 752 | 248921D4128EE15E00DC9712 /* MainWindow.xib in Resources */, 753 | 248927D5128FF71C00DC9712 /* blackArrow.png in Resources */, 754 | 248927D6128FF71C00DC9712 /* blackArrow@2x.png in Resources */, 755 | 248927D7128FF71C00DC9712 /* blueArrow.png in Resources */, 756 | 248927D8128FF71C00DC9712 /* blueArrow@2x.png in Resources */, 757 | 248927D9128FF71C00DC9712 /* grayArrow.png in Resources */, 758 | 248927DA128FF71C00DC9712 /* grayArrow@2x.png in Resources */, 759 | 248927DB128FF71C00DC9712 /* whiteArrow.png in Resources */, 760 | 248927DC128FF71C00DC9712 /* whiteArrow@2x.png in Resources */, 761 | 2449FA9712A64EA500754D3C /* SurnamesView.xib in Resources */, 762 | ); 763 | runOnlyForDeploymentPostprocessing = 0; 764 | }; 765 | /* End PBXResourcesBuildPhase section */ 766 | 767 | /* Begin PBXSourcesBuildPhase section */ 768 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 769 | isa = PBXSourcesBuildPhase; 770 | buildActionMask = 2147483647; 771 | files = ( 772 | 3A57FFCA11FFB24F00248D1D /* ASIAuthenticationDialog.m in Sources */, 773 | 3A57FFCB11FFB24F00248D1D /* ASIDownloadCache.m in Sources */, 774 | 3A57FFCC11FFB24F00248D1D /* ASIFormDataRequest.m in Sources */, 775 | 3A57FFCD11FFB24F00248D1D /* ASIHTTPRequest.m in Sources */, 776 | 3A57FFCE11FFB24F00248D1D /* ASIInputStream.m in Sources */, 777 | 3A57FFCF11FFB24F00248D1D /* ASINetworkQueue.m in Sources */, 778 | 3A57FFE911FFB24F00248D1D /* Reachability.m in Sources */, 779 | 3A57000F11FFB24F00248D1D /* AppDelegate.m in Sources */, 780 | 3A57001011FFB24F00248D1D /* main.m in Sources */, 781 | 3A22B5E5125BF20800A3B8C9 /* SBJsonParser.m in Sources */, 782 | 3A22B5E6125BF20800A3B8C9 /* SBJsonWriter.m in Sources */, 783 | 3A22B679125BF20800A3B8C9 /* MBProgressHUD.m in Sources */, 784 | 3A22B693125BF20800A3B8C9 /* NSDate-Utilities.m in Sources */, 785 | 3A22B699125BF20800A3B8C9 /* TimeFormatters.m in Sources */, 786 | 3A03484A125BF4A800F49FA6 /* BaseViewController.m in Sources */, 787 | 3A03484B125BF4A800F49FA6 /* BaseTableViewController.m in Sources */, 788 | 3A03484C125BF4A800F49FA6 /* BaseLoadingViewCenter.m in Sources */, 789 | 3A03525E125DFD7700F49FA6 /* NSObject+Extensions.m in Sources */, 790 | 3A3EEE5A127BEFC30034C867 /* SBJsonStreamWriter.m in Sources */, 791 | 248921C6128ED28700DC9712 /* APIServices.m in Sources */, 792 | 248921CB128EDE0200DC9712 /* APIServices+Utils.m in Sources */, 793 | 248921CC128EDE0200DC9712 /* APIServices+Parsing.m in Sources */, 794 | 248921F5128EE28D00DC9712 /* BaseTableViewDataSource.m in Sources */, 795 | 248921F6128EE28D00DC9712 /* ChoicesListDataSource.m in Sources */, 796 | 248927D4128FF71C00DC9712 /* EGORefreshTableHeaderView.m in Sources */, 797 | 248927E7128FF81100DC9712 /* BaseTableViewRefreshController.m in Sources */, 798 | 248929841290335A00DC9712 /* ASIDataCompressor.m in Sources */, 799 | 248929851290335A00DC9712 /* ASIDataDecompressor.m in Sources */, 800 | 243BE66B12976A6300186377 /* BaseWebViewController.m in Sources */, 801 | 2437216F1297E254003C19B7 /* BaseServices.m in Sources */, 802 | 2449FA8D12A64D8600754D3C /* SurnamesViewController.m in Sources */, 803 | 2434D15612B2E004007B8A13 /* SurnamesDataSource.m in Sources */, 804 | 24ADB44012CB6909000BE62C /* Surname.m in Sources */, 805 | 24ADB5FC12CB7069000BE62C /* NSString+InflectionSupport.m in Sources */, 806 | 24ADB5FD12CB7069000BE62C /* NSData+Additions.m in Sources */, 807 | 24ADB5FE12CB7069000BE62C /* NSObject+PropertySupport.m in Sources */, 808 | 24ADB5FF12CB7069000BE62C /* NSString+GSub.m in Sources */, 809 | 24ADB60012CB7069000BE62C /* ObjectiveResourceDateFormatter.m in Sources */, 810 | 24ADB60412CB7069000BE62C /* NSArray+JSONSerializableSupport.m in Sources */, 811 | 24ADB60512CB7069000BE62C /* NSDictionary+JSONSerializableSupport.m in Sources */, 812 | 24ADB60612CB7069000BE62C /* NSObject+JSONSerializableSupport.m in Sources */, 813 | 24ADB60712CB7069000BE62C /* NSDate+Serialize.m in Sources */, 814 | 24ADB60812CB7069000BE62C /* NSDictionary+KeyTranslation.m in Sources */, 815 | 24ADB60912CB7069000BE62C /* NSObject+Serialize.m in Sources */, 816 | 24ADB60A12CB7069000BE62C /* NSString+Serialize.m in Sources */, 817 | 24ADB6DA12CB7132000BE62C /* MyLocationGetter.m in Sources */, 818 | 24ADB70B12CB7225000BE62C /* NSObject+JSON.m in Sources */, 819 | 24ADB70C12CB7225000BE62C /* SBJsonStreamParser.m in Sources */, 820 | 24ADB70D12CB7225000BE62C /* SBJsonStreamParserAdapter.m in Sources */, 821 | 24ADB70E12CB7225000BE62C /* SBJsonStreamParserState.m in Sources */, 822 | 24ADB70F12CB7225000BE62C /* SBJsonStreamWriterState.m in Sources */, 823 | 24ADB71012CB7225000BE62C /* SBJsonTokeniser.m in Sources */, 824 | ); 825 | runOnlyForDeploymentPostprocessing = 0; 826 | }; 827 | /* End PBXSourcesBuildPhase section */ 828 | 829 | /* Begin XCBuildConfiguration section */ 830 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 831 | isa = XCBuildConfiguration; 832 | buildSettings = { 833 | ALWAYS_SEARCH_USER_PATHS = NO; 834 | COPY_PHASE_STRIP = NO; 835 | GCC_DYNAMIC_NO_PIC = NO; 836 | GCC_OPTIMIZATION_LEVEL = 0; 837 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 838 | GCC_PREFIX_HEADER = "$(SRCROOT)/Source/Main/Prefix.pch"; 839 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 840 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 841 | INFOPLIST_FILE = "$(SRCROOT)/Resources/Info.plist"; 842 | LIBRARY_SEARCH_PATHS = ( 843 | "$(inherited)", 844 | "\"$(SRCROOT)/Source/External/objectivesupport/google_toolbar/TigerGcov\"", 845 | ); 846 | OTHER_CFLAGS = "-DDEBUG"; 847 | OTHER_LDFLAGS = ( 848 | "-ObjC", 849 | "-all_load", 850 | ); 851 | PRODUCT_NAME = AussieSurnames; 852 | }; 853 | name = Debug; 854 | }; 855 | 1D6058950D05DD3E006BFB54 /* Release */ = { 856 | isa = XCBuildConfiguration; 857 | buildSettings = { 858 | ALWAYS_SEARCH_USER_PATHS = NO; 859 | COPY_PHASE_STRIP = YES; 860 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 861 | GCC_PREFIX_HEADER = "$(SRCROOT)/Source/Main/Prefix.pch"; 862 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 863 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 864 | INFOPLIST_FILE = "$(SRCROOT)/Resources/Info.plist"; 865 | LIBRARY_SEARCH_PATHS = ( 866 | "$(inherited)", 867 | "\"$(SRCROOT)/Source/External/objectivesupport/google_toolbar/TigerGcov\"", 868 | ); 869 | OTHER_LDFLAGS = ( 870 | "-ObjC", 871 | "-all_load", 872 | ); 873 | PRODUCT_NAME = AussieSurnames; 874 | VALIDATE_PRODUCT = YES; 875 | }; 876 | name = Release; 877 | }; 878 | 2437C1A312BDA88700F19C04 /* Appstore */ = { 879 | isa = XCBuildConfiguration; 880 | buildSettings = { 881 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 882 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; 883 | GCC_C_LANGUAGE_STANDARD = c99; 884 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 885 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 886 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 887 | GCC_WARN_UNUSED_VARIABLE = YES; 888 | IPHONEOS_DEPLOYMENT_TARGET = 3.1; 889 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 890 | PREBINDING = NO; 891 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 892 | SDKROOT = iphoneos; 893 | }; 894 | name = Appstore; 895 | }; 896 | 2437C1A412BDA88700F19C04 /* Appstore */ = { 897 | isa = XCBuildConfiguration; 898 | buildSettings = { 899 | ALWAYS_SEARCH_USER_PATHS = NO; 900 | COPY_PHASE_STRIP = YES; 901 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 902 | GCC_PREFIX_HEADER = "$(SRCROOT)/Source/Main/Prefix.pch"; 903 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 904 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 905 | INFOPLIST_FILE = "$(SRCROOT)/Resources/Info.plist"; 906 | LIBRARY_SEARCH_PATHS = ( 907 | "$(inherited)", 908 | "\"$(SRCROOT)/Source/External/objectivesupport/google_toolbar/TigerGcov\"", 909 | ); 910 | OTHER_LDFLAGS = ( 911 | "-ObjC", 912 | "-all_load", 913 | ); 914 | PRODUCT_NAME = AussieSurnames; 915 | VALIDATE_PRODUCT = YES; 916 | }; 917 | name = Appstore; 918 | }; 919 | 3A22B47A125BEE0300A3B8C9 /* AdHoc */ = { 920 | isa = XCBuildConfiguration; 921 | buildSettings = { 922 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 923 | CODE_SIGN_ENTITLEMENTS = "$(SRCROOT)/Resources/Entitlements.plist"; 924 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Anthony Mittaz"; 925 | GCC_C_LANGUAGE_STANDARD = c99; 926 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 927 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 928 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 929 | GCC_WARN_UNUSED_VARIABLE = YES; 930 | IPHONEOS_DEPLOYMENT_TARGET = 3.1; 931 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 932 | PREBINDING = NO; 933 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = "6D559501-D35C-475B-8062-40ADFC7C0BBB"; 934 | SDKROOT = iphoneos; 935 | }; 936 | name = AdHoc; 937 | }; 938 | 3A22B47B125BEE0300A3B8C9 /* AdHoc */ = { 939 | isa = XCBuildConfiguration; 940 | buildSettings = { 941 | ALWAYS_SEARCH_USER_PATHS = NO; 942 | COPY_PHASE_STRIP = YES; 943 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 944 | GCC_PREFIX_HEADER = "$(SRCROOT)/Source/Main/Prefix.pch"; 945 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 946 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 947 | INFOPLIST_FILE = "$(SRCROOT)/Resources/Info.plist"; 948 | LIBRARY_SEARCH_PATHS = ( 949 | "$(inherited)", 950 | "\"$(SRCROOT)/Source/External/objectivesupport/google_toolbar/TigerGcov\"", 951 | ); 952 | OTHER_LDFLAGS = ( 953 | "-ObjC", 954 | "-all_load", 955 | ); 956 | PRODUCT_NAME = AussieSurnames; 957 | VALIDATE_PRODUCT = YES; 958 | }; 959 | name = AdHoc; 960 | }; 961 | C01FCF4F08A954540054247B /* Debug */ = { 962 | isa = XCBuildConfiguration; 963 | buildSettings = { 964 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 965 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 966 | GCC_C_LANGUAGE_STANDARD = c99; 967 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 968 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 969 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 970 | GCC_WARN_UNUSED_VARIABLE = YES; 971 | IPHONEOS_DEPLOYMENT_TARGET = 3.1; 972 | OTHER_CFLAGS = ""; 973 | PREBINDING = NO; 974 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 975 | SDKROOT = iphoneos; 976 | }; 977 | name = Debug; 978 | }; 979 | C01FCF5008A954540054247B /* Release */ = { 980 | isa = XCBuildConfiguration; 981 | buildSettings = { 982 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 983 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 984 | GCC_C_LANGUAGE_STANDARD = c99; 985 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 986 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 987 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 988 | GCC_WARN_UNUSED_VARIABLE = YES; 989 | IPHONEOS_DEPLOYMENT_TARGET = 3.1; 990 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 991 | PREBINDING = NO; 992 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 993 | SDKROOT = iphoneos; 994 | }; 995 | name = Release; 996 | }; 997 | /* End XCBuildConfiguration section */ 998 | 999 | /* Begin XCConfigurationList section */ 1000 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AussieSurnames" */ = { 1001 | isa = XCConfigurationList; 1002 | buildConfigurations = ( 1003 | 1D6058940D05DD3E006BFB54 /* Debug */, 1004 | 1D6058950D05DD3E006BFB54 /* Release */, 1005 | 3A22B47B125BEE0300A3B8C9 /* AdHoc */, 1006 | 2437C1A412BDA88700F19C04 /* Appstore */, 1007 | ); 1008 | defaultConfigurationIsVisible = 0; 1009 | defaultConfigurationName = Release; 1010 | }; 1011 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AussieSurnames" */ = { 1012 | isa = XCConfigurationList; 1013 | buildConfigurations = ( 1014 | C01FCF4F08A954540054247B /* Debug */, 1015 | C01FCF5008A954540054247B /* Release */, 1016 | 3A22B47A125BEE0300A3B8C9 /* AdHoc */, 1017 | 2437C1A312BDA88700F19C04 /* Appstore */, 1018 | ); 1019 | defaultConfigurationIsVisible = 0; 1020 | defaultConfigurationName = Release; 1021 | }; 1022 | /* End XCConfigurationList section */ 1023 | }; 1024 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 1025 | } 1026 | --------------------------------------------------------------------------------