.m Class File - Joey502/Test-Thing GitHub Wiki


//  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
                                                                                
⚠️ **GitHub.com Fallback** ⚠️