// // SearchViewController.m // PicCast // // Created by Matthew Handler on 4/28/11. // Copyright 2011 Earl Industries. All rights reserved. // #import "SearchViewController.h" #import "PicCastAppDelegate.h" @implementation SearchViewController @synthesize tableView, mainSearchBar; - (void)viewDidLoad { [super viewDidLoad]; [self.navigationController.navigationBar drawLogo]; UIView *backgroundView = [[UIView alloc] initWithFrame:self.view.frame]; backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundGradient.png"]]; self.tableView.backgroundView = backgroundView; self.tableView.backgroundColor = [UIColor clearColor]; [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; [self.tableView setSeparatorColor:[UIColor colorWithRed:0.9 green:0.9 blue:0.9 alpha:1.0]]; objMan = [[HJObjManager alloc] initWithLoadingBufferSize:6 memCacheSize:20]; NSString* cacheDirectory = [NSHomeDirectory() stringByAppendingString:@"/Library/Caches/imgcache/icons/"] ; HJMOFileCache* fileCache = [[[HJMOFileCache alloc] initWithRootPath:cacheDirectory] autorelease]; objMan.fileCache = fileCache; // Have the file cache trim itself down to a size & age limit, so it doesn't grow forever fileCache.fileCountLimit = 100; fileCache.fileAgeLimit = 60*60*24*7; //1 week [fileCache trimCacheUsingBackgroundThread]; tableDictionary = [[[SectionDictionary alloc] init] retain]; sourcesDictionary = [[[NSMutableDictionary alloc] init] retain]; db = [[FMDatabase databaseWithPath:[PicCastAppDelegate getDatabasePath]] retain]; [db setShouldCacheStatements:NO]; // [db setTraceExecution:true]; // [db setLogsErrors:true]; // [self getTopicsFromDb]; // // [self loadSubscribedTopics]; } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code. } return self; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code. } */ - (void)viewWillAppear:(BOOL)animated { NSIndexPath *selectedRowIndexPath = [self.tableView indexPathForSelectedRow]; if (selectedRowIndexPath != nil) { [self.tableView deselectRowAtIndexPath:selectedRowIndexPath animated:NO]; } } #pragma mark - #pragma mark UISearchBar protocol - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { // if ([searchText length] > 0) { // NSError *error = NULL; // NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-zA-Z]" // options:NSRegularExpressionCaseInsensitive // error:&error]; // // NSString *newString = [regex stringByReplacingMatchesInString:searchText // options:NSRegularExpressionCaseInsensitive // range:[searchBar.text rangeOfString:searchText] // withTemplate:@""]; // // if (![newString isEqualToString:searchBar.text]) // searchBar.text = newString; // } } - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { [searchBar setShowsCancelButton:YES animated:YES]; self.tableView.allowsSelection = NO; self.tableView.scrollEnabled = NO; } - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { searchBar.text = @""; [searchBar setShowsCancelButton:NO animated:YES]; [searchBar resignFirstResponder]; self.tableView.allowsSelection = YES; self.tableView.scrollEnabled = YES; } - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { [searchBar setShowsCancelButton:NO animated:YES]; [searchBar resignFirstResponder]; // [MBProgressHUD showHUDAddedTo:self.view animated:YES]; // // _searchString = [searchBar.text copy]; // [searchBar setShowsCancelButton:NO animated:YES]; // [searchBar resignFirstResponder]; // // NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.werdmerge.com/search.php?word=%@", searchBar.text]] // cachePolicy:NSURLRequestUseProtocolCachePolicy // timeoutInterval:60.0]; // // if ([NSURLConnection connectionWithRequest:theRequest delegate:self]) { // [_receivedData setLength:0]; // } else { // [MBProgressHUD hideHUDForView:self.view animated:YES]; // [WerdMergeAppDelegate prompt:@"Error" withMessage:@"No internet connection" andButtonTitle:@"shucks" withDelegate:self]; // } // // [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"haveSearched"]; } #pragma mark - #pragma mark uitableviewcontroller protocol - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { // create the parent view that will hold header Label UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(10.0, 0.0, 300.0, 44.0)]; // create the button object UILabel * headerLabel = [[UILabel alloc] initWithFrame:CGRectZero]; headerLabel.backgroundColor = [UIColor clearColor]; headerLabel.opaque = NO; headerLabel.textColor = [UIColor orangeColor]; headerLabel.highlightedTextColor = [UIColor whiteColor]; headerLabel.font = [UIFont boldSystemFontOfSize:20]; headerLabel.frame = CGRectMake(10.0, 0.0, 300.0, 44.0); // If you want to align the header text as centered // headerLabel.frame = CGRectMake(150.0, 0.0, 300.0, 44.0); headerLabel.text = @"tamper proof cap"; // i.e. array element [customView addSubview:headerLabel]; return customView; } - (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 44.0; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 3; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if (section == 0) return @"Feeds"; else if (section == 1) return @"Sets"; else return @"Photos"; } //- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath //{ // if (indexPath.section + 1 == [tableDictionary count] && // indexPath.row == [[tableDictionary objectForIndex:indexPath.section] count]) // return 44; // else // return 100; //} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier = @"resultCell"; UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:identifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; } return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } - (void)dealloc { [mainSearchBar release]; [tableView release]; [tableDictionary release]; [photoViewController release]; [sourcesDictionary release]; [objMan release]; [searchString release]; [super dealloc]; } @end