// PhotoGalleryViewController.m
// Girlfriend 411
//
// Created by John Stickle on 3/25/12.
// Copyright (c) 2012 Nexttep Productions. All rights reserved.
//
//
#import "PhotoGalleryViewController.h"
@implementation PhotoGalleryViewController
@synthesize grabButton;
@synthesize imageView;
@synthesize imageView2;
@synthesize imageView3;
@synthesize imageView4;
@synthesize imageView5;
@synthesize imageView6;
@synthesize imageView7;
@synthesize imageView8;
@synthesize imageView9;
@synthesize imgPicker;
@synthesize popover = _popover;
@synthesize imageData;
@synthesize image1Button;
@synthesize image2Button;
@synthesize image3Button;
@synthesize image4Button;
@synthesize image5Button;
@synthesize image6Button;
@synthesize image7Button;
@synthesize image8Button;
@synthesize image9Button;
@synthesize backToGalleryButton;
@synthesize editButton;
@synthesize tapToDeleteLabel;
@synthesize deleteButton1;
@synthesize deleteButton2;
@synthesize deleteButton3;
@synthesize deleteButton4;
@synthesize deleteButton5;
@synthesize deleteButton6;
@synthesize deleteButton7;
@synthesize deleteButton8;
@synthesize deleteButton9;
@synthesize user;
@synthesize array;
///
@synthesize fileNamesArray;
////
///
//This is the Add Photo button.
- (IBAction)grabImage {
if (imgPicker == nil) {
self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.delegate = self;
self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
_popover = [[UIPopoverController alloc] initWithContentViewController:imgPicker];
[_popover presentPopoverFromRect:self.imageView.bounds inView:self.imageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
else {
[self presentModalViewController:imgPicker animated:YES];
}
[self.imgPicker resignFirstResponder];
}
// Sets the image in the UIImageView
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
if (imageView.image == nil) {
imageView.image = img;
[self.array addObject:imageView];
[self.fileNamesArray addObject:imageView];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView2.image == nil) {
imageView2.image = img;
NSLog(@"The image is a %@", imageView);
[self.array addObject:imageView2];
[self.fileNamesArray addObject:imageView2];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView3.image == nil) {
imageView3.image = img;
[self.array addObject:imageView3];
[self.fileNamesArray addObject:imageView3];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView4.image == nil) {
imageView4.image = img;
[self.array addObject:imageView4];
[self.fileNamesArray addObject:imageView4];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView5.image == nil) {
imageView5.image = img;
[self.array addObject:imageView5];
[self.fileNamesArray addObject:imageView5];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView6.image == nil) {
imageView6.image = img;
[self.array addObject:imageView6];
[self.fileNamesArray addObject:imageView6];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView7.image == nil) {
imageView7.image = img;
[self.array addObject:imageView7];
[self.fileNamesArray addObject:imageView7];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView8.image == nil) {
imageView8.image = img;
[self.array addObject:imageView8];
[self.fileNamesArray addObject:imageView8];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView9.image == nil) {
imageView9.image = img;
[self.array addObject:imageView9];
[self.fileNamesArray addObject:imageView9];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Photo Gallery", @"Photo Gallery");
self.tabBarItem.image = [UIImage imageNamed:@"42-photos.png"];
}
return self;
}
////start of saving////
-(IBAction)saveButtonPressed:(id)sender {
NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) objectAtIndex:0];
// Log to make sure the views expected have previously been stored.
// If the array is empty, or shorter than expected, the problem is elsewhere.
NSLog(@"Image view array before saving = %@", self.array);
for (UIImageView *imageViewToSave in self.array) {
NSInteger tag = imageViewToSave.tag;
UIImage *image = imageViewToSave.image;
NSString *imageName = [NSString stringWithFormat:@"Image%i.png",tag];
NSString *imagePath = [docsDir stringByAppendingPathComponent:imageName];
// Log the image and path being saved. If either of these are nil, nothing will be written.
NSLog(@"Saving %@ to %@", image, imagePath);
[UIImagePNGRepresentation(image) writeToFile:imagePath atomically:NO];
}
NSLog(@"Save Button Pressed");
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"didenterbackground fired from controller");
[self.user setObject:self.array forKey:@"images"];
[user synchronize];
}
-(void)viewDidLoad {
NSLog(@"PG VC view did load.");
deleteButton1.hidden = YES;
deleteButton2.hidden = YES;
deleteButton3.hidden = YES;
deleteButton4.hidden = YES;
deleteButton5.hidden = YES;
deleteButton6.hidden = YES;
deleteButton7.hidden = YES;
deleteButton8.hidden = YES;
deleteButton9.hidden = YES;
backToGalleryButton.hidden = YES;
tapToDeleteLabel.hidden = YES;
image1Button.hidden = NO;
image2Button.hidden = NO;
image3Button.hidden = NO;
self.array = [NSMutableArray array];
NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
NSArray *docFiles = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:docsDir error:NULL];
for (NSString *fileName in docFiles) {
if ([fileName hasSuffix:@".png"]) {
NSString *fullPath = [docsDir stringByAppendingPathComponent:fileName];
UIImage *loadedImage = [UIImage imageWithContentsOfFile:fullPath];
[self.fileNamesArray addObject:fileName];
//[self.array addObject:loadedImage];
if (!imageView.image) {
imageView.image = loadedImage;
[self.array addObject:imageView];
}
else if (!imageView2.image) {
imageView2.image = loadedImage;
[self.array addObject:imageView2];
}
else if (!imageView3.image) {
imageView3.image = loadedImage;
[self.array addObject:imageView3];
}
else if (!imageView4.image) {
imageView4.image = loadedImage;
[self.array addObject:imageView4];
}
else if (!imageView5.image) {
imageView5.image = loadedImage;
[self.array addObject:imageView5];
}
else if (!imageView6.image) {
imageView6.image = loadedImage;
[self.array addObject:imageView6];
}
else if (!imageView7.image) {
imageView7.image = loadedImage;
[self.array addObject:imageView7];
}
else if (!imageView8.image) {
imageView8.image = loadedImage;
[self.array addObject:imageView8];
}
else if (!imageView9.image) {
imageView9.image = loadedImage;
[self.array addObject:imageView9];
}
}
}
}
- (void)viewDidUnload
{
self.user = nil;
}
////end of saving
//This enlarges the image when the user taps on it
- (IBAction)enlargeImage1:(id)sender {
[self.imageView setFrame:CGRectMake(0, 0, 320, 320)];
/////////////
backToGalleryButton.hidden = NO;
grabButton.hidden = YES;
editButton.hidden = YES;
image1Button.hidden = YES;
image2Button.hidden = YES;
image3Button.hidden = YES;
image4Button.hidden = YES;
image5Button.hidden = YES;
image6Button.hidden = YES;
image7Button.hidden = YES;
image8Button.hidden = YES;
image9Button.hidden = YES;
deleteButton1.hidden = YES;
deleteButton2.hidden = YES;
deleteButton3.hidden = YES;
deleteButton4.hidden = YES;
deleteButton5.hidden = YES;
deleteButton6.hidden = YES;
deleteButton7.hidden = YES;
deleteButton8.hidden = YES;
deleteButton9.hidden = YES;
}
//TODO: add enlargeImage methods for each UIImageView.
//This is when the Back To Gallery button is tapped.
- (IBAction)backToGalAction:(id)sender {
[self.imageView setFrame:CGRectMake(15, 12, 82, 80)];
//TODO: setFrame for all other images.
editButton.hidden = NO;
grabButton.hidden = NO;
tapToDeleteLabel.hidden = YES;
deleteButton1.hidden = YES;
deleteButton2.hidden = YES;
deleteButton3.hidden = YES;
deleteButton4.hidden = YES;
deleteButton5.hidden = YES;
deleteButton6.hidden = YES;
deleteButton7.hidden = YES;
deleteButton8.hidden = YES;
deleteButton9.hidden = YES;
backToGalleryButton.hidden = YES;
image1Button.hidden = NO;
image2Button.hidden = NO;
image3Button.hidden = NO;
image4Button.hidden = NO;
image5Button.hidden = NO;
image6Button.hidden = NO;
image7Button.hidden = NO;
image8Button.hidden = NO;
image9Button.hidden = NO;
}
///// shows the hidden and invisible "delete" button over each photo.
- (IBAction)editButtonPressed:(id)sender {
grabButton.hidden = YES;
editButton.hidden = YES;
backToGalleryButton.hidden = NO;
tapToDeleteLabel.hidden = NO;
deleteButton1.hidden = NO;
deleteButton2.hidden = NO;
deleteButton3.hidden = NO;
deleteButton4.hidden = NO;
deleteButton5.hidden = NO;
deleteButton6.hidden = NO;
deleteButton7.hidden = NO;
deleteButton8.hidden = NO;
deleteButton9.hidden = NO;
}
// This is when the user taps on the image to delete it.
- (IBAction)deleteButtonPressed:(id)sender {
NSLog(@"Sender is %@", sender);
UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete"
message:@"Are you sure you want to delete this photo?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[deleteAlertView show];
int imageIndex = ((UIButton *)sender).tag;
deleteAlertView.tag = imageIndex;
}
- (UIImageView *)viewForTag:(NSInteger)tag {
UIImageView *found = nil;
for (UIImageView *view in self.array) {
if (tag == view.tag) {
found = view;
break;
}
}
return found;
}
- (void)alertView: (UIAlertView *) alertView
clickedButtonAtIndex: (NSInteger) buttonIndex
{
NSLog(@"deleting file %@",[self.fileNamesArray objectAtIndex:alertView.tag]);
if (buttonIndex != [alertView cancelButtonIndex]) {
NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]);
NSLog(@"The tag is %i", alertView.tag);
UIImageView *view = [self viewForTag:alertView.tag];
if (view) {
[self.array removeObject:view]; //or you could do [self.array removeObjectAtIndex:alertView.tag];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:[self.fileNamesArray objectAtIndex:alertView.tag]];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
[fileManager removeItemAtPath:filePath error:&error];
if (error)
NSLog(@"Error: %@",error);
[self.fileNamesArray removeObjectAtIndex: alertView.tag];
}
NSLog(@"After deleting item, array count = %d", [array count]);
NSLog(@"Returned view is :%@, in view: %@", [self.view viewWithTag:alertView.tag], self.view);
((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil;
}
[self.user setObject:self.array forKey:@"images"];
}
/////////// end of delete function
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end