Tuesday, 12 February 2013

ID Profile Source Code- MasterViewController


//.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface MasterViewController : UIViewController<UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UIPrintInteractionControllerDelegate>{
    

    
    IBOutlet UITextField *nameField;
    IBOutlet UITextField *districtField,*emailField,*mobileField;
    
   IBOutlet UIImageView * imageView;
    NSMutableArray *imageArray;
    NSMutableArray *nameArray;
    NSMutableArray *distrctArray;
    NSMutableArray *emailArray;
    NSMutableArray *mobileArray;
    
    
    NSUserDefaults *currentDefaults;
    int p;
}



-(IBAction)photoButton:(id)sender;
-(IBAction)SaveButton:(id)sender;
-(IBAction)list:(id)sender;

@end

//.m

CGFloat animatedDistance;
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;
static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;
static const CGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;
static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 162;

#import "MasterViewController.h"

#import "DetailViewController.h"

#import "Base64.h"


@implementation MasterViewController
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    // signup.enabled=NO;
    CGRect textFieldRect =
    [self.view.window convertRect:textField.bounds fromView:textField];
    CGRect viewRect =
    [self.view.window convertRect:self.view.bounds fromView:self.view];
    
    
    CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
    CGFloat numerator =
    midline - viewRect.origin.y
    - MINIMUM_SCROLL_FRACTION * viewRect.size.height;
    CGFloat denominator =
    (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION)
    * viewRect.size.height;
    CGFloat heightFraction = numerator / denominator;
    
    if (heightFraction < 0.0)
    {
        heightFraction = 0.0;
    }
    else if (heightFraction > 1.0)
    {
        heightFraction = 1.0;
    }
    
    UIInterfaceOrientation orientation =
    [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationPortrait ||
        orientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
    }
    else
    {
        animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
    }
    
    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y -= animatedDistance;
    
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
    
    [self.view setFrame:viewFrame];
    
    [UIView commitAnimations];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y += animatedDistance;
    
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
    
    [self.view setFrame:viewFrame];
    
    [UIView commitAnimations];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if(textField == nameField) {
[districtField becomeFirstResponder];
}
else if(textField == districtField) {
[emailField becomeFirstResponder];
}
    else if(textField == emailField) {
[mobileField becomeFirstResponder];
}
    else if(textField == mobileField) {
[mobileField resignFirstResponder];
}
return YES;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    currentDefaults = [NSUserDefaults standardUserDefaults];
       
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSData *dataRepresentingSavedArray0 = [currentDefaults objectForKey:@"savedImage"];
    NSMutableArray *oldSavedArray0 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray0];
    imageArray = [[NSMutableArray alloc] initWithArray:oldSavedArray0];
    NSLog(@"image-- %d",[imageArray count]);
    
    
    NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"savedName"];
    NSMutableArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
    nameArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
    NSLog(@"name-- %d",[nameArray count]);
    
    NSData *dataRepresentingSavedArray1 = [currentDefaults objectForKey:@"savedDt"];
    NSMutableArray *oldSavedArray1 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray1];
    distrctArray = [[NSMutableArray alloc] initWithArray:oldSavedArray1];
    NSLog(@"distrct-- %d",[distrctArray count]);
    
    NSData *dataRepresentingSavedArray2 = [currentDefaults objectForKey:@"savedEmail"];
    NSMutableArray *oldSavedArray2 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray2];
    emailArray = [[NSMutableArray alloc] initWithArray:oldSavedArray2];
    NSLog(@"email-- %d",[emailArray count]);
    
    NSData *dataRepresentingSavedArray3 = [currentDefaults objectForKey:@"savedMobile"];
    NSMutableArray *oldSavedArray3 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray3];
    mobileArray = [[NSMutableArray alloc] initWithArray:oldSavedArray3];
    NSLog(@"mobile-- %d",[mobileArray count]);
    
    if([currentDefaults objectForKey:@"edit"]){
    NSString *index=[currentDefaults valueForKey:@"edit"];
     p=[index intValue];
    NSLog(@"Hi- %d",p);
        NSData *imgData = (NSData*)[imageArray objectAtIndex:p];
        UIImage* imge = [[UIImage alloc] initWithData:imgData];
        imageView.image=imge;
        nameField.text=[nameArray objectAtIndex:p];
        districtField.text=[distrctArray objectAtIndex:p];
        emailField.text=[emailArray objectAtIndex:p];
        mobileField.text=[mobileArray objectAtIndex:p];
    }
    
}
-(IBAction)photoButton:(id)sender{
    
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Use photo from:"
                                                             delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera",@"Library",nil];
    actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
    [actionSheet showInView:self.view ];
    
}

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
if (buttonIndex == 0) {
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
          [self presentViewController:picker animated:YES completion:nil];
        
} else if (buttonIndex == 1) {
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
          [self presentViewController:picker animated:YES completion:nil];
    }
  
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion:nil];
imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    
}

-(IBAction)SaveButton:(id)sender{
    [mobileField resignFirstResponder];
    
    NSString *msgStr = @"";
BOOL bErr = NO;
    NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
    
    if(imageView.image==[UIImage imageNamed:@"noimage.jpeg"]) {
msgStr = @"Choose an Image";
bErr = YES;
    }
    else if(nameField.text.length == 0) {
msgStr = @"Please provide your name";
bErr = YES;
[nameField becomeFirstResponder];
}
else if(districtField.text.length == 0) {
msgStr = @"Please provide your District";
bErr = YES;
[districtField becomeFirstResponder];
}else if(emailField.text.length == 0) {
msgStr = @"Please provide your email";
bErr = YES;
[emailField becomeFirstResponder];
}
    
    
    else if ([emailTest evaluateWithObject:emailField.text] == NO)
    {
        
        msgStr = @"Invalid Email Id! Please try again";
bErr = YES;
[emailField becomeFirstResponder];
    }
    
    
if(bErr) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:msgStr delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
//[alert release];
return;
}
    
    NSData *ImageData1 = UIImageJPEGRepresentation(imageView.image, 0.9);
    
     if([currentDefaults objectForKey:@"edit"]){
        NSLog(@"Hiqqq- %d",p);
         [imageArray replaceObjectAtIndex:p withObject:ImageData1];
         [nameArray replaceObjectAtIndex:p withObject:nameField.text];
         [distrctArray replaceObjectAtIndex:p withObject:districtField.text];
         [emailArray replaceObjectAtIndex:p withObject:emailField.text];
         [mobileArray replaceObjectAtIndex:p withObject:mobileField.text];
    }else{
    
    [imageArray addObject:ImageData1];
    [nameArray addObject:nameField.text];
    [distrctArray addObject:districtField.text];
    [emailArray addObject:emailField.text];
    [mobileArray addObject:mobileField.text];
    }
    
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:imageArray] forKey:@"savedImage"];
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:nameArray] forKey:@"savedName"];
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:distrctArray] forKey:@"savedDt"];
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:emailArray] forKey:@"savedEmail"];
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:mobileArray] forKey:@"savedMobile"];
     //[[NSUserDefaults standardUserDefaults] synchronize];
    [self print];
    
    imageView.image=[UIImage imageNamed:@"noimage.jpeg"];
    nameField.text=@"";
    districtField.text=@"";
    emailField.text=@"";
    mobileField.text=@"";
  
}

-(void)print{
    
        
   
    if (![UIPrintInteractionController isPrintingAvailable]) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Printer Availability Error Title", @"")
                                                             message:NSLocalizedString(@"Printer Availability Error Message", @"")
                                                            delegate:nil
                                                   cancelButtonTitle:NSLocalizedString(@"OK", @"OK")
                                                   otherButtonTitles:nil];
        [alertView show];
        return;
    }
    
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    
    if(!pic) {
        NSLog(@"Couldn't get shared UIPrintInteractionController!");
        return;
    }
    
    pic.delegate = self;
    
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"Sample";
    pic.printInfo = printInfo;
    
    NSString *htmlString = [self prepareHTMLText];
    UIMarkupTextPrintFormatter *htmlFormatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:htmlString];
    htmlFormatter.startPage = 0;
    htmlFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1-inch margins on all sides
    htmlFormatter.maximumContentWidth = 6 * 72.0;   // printed content should be 6-inches wide within those margins
    pic.printFormatter = htmlFormatter;
    
    pic.showsPageRange = YES;
    
    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        
        if (!completed && error) {
            NSLog(@"Printing could not complete because of error: %@", error);
        }
    };
    
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        // [pic presentFromBarButtonItem:self.myPrintBarButton animated:YES completionHandler:completionHandler];
        
    } else {
        [pic presentAnimated:YES completionHandler:completionHandler];
    }

    
}
    
    
- (NSString *)prepareHTMLText {
   
    NSMutableString *body = [NSMutableString stringWithString:@"<!DOCTYPE html><html><body>"];
    NSString *str1 = [Base64 encode:UIImagePNGRepresentation(imageView.image)];
    
    [body appendString:@"<h2>ID Card</h2>"];
    [body appendFormat:@"<img src=\"data:image/png;base64,%@\" alt=\"\" height=\"100\" width=\"100\"/>",str1];
    
    [body appendFormat:@"<p>%@ %@</p>", nameField.text, districtField.text];
   
    [body appendString:@"</body></html>"];
    return body;
}


-(IBAction)list:(id)sender{
    DetailViewController *anotherViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"anotherViewController22"];
    
   // [UIView beginAnimations:nil context:NULL];
    
   // [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:YES];
    //[UIView setAnimationDuration:.8];
    [self.navigationController pushViewController:anotherViewController animated:YES];
    //[anotherViewController release];
    //[UIView commitAnimations];
    [[NSUserDefaults standardUserDefaults]removeObjectForKey:@"edit"];
    imageView.image=[UIImage imageNamed:@"noimage.jpeg"];
    nameField.text=@"";
    districtField.text=@"";
    emailField.text=@"";
    mobileField.text=@"";
}


@end



No comments:

Post a Comment