// // DateRangePickerViewController.m // DUREX Vendor Control // // Created by Imanol Barba on 9/13/14. // Copyright (c) 2014 Emmoco. All rights reserved. // #import "DateRangePickerViewController.h" @interface DateRangePickerViewController () @property uint8_t isExtended; @property NSUInteger currentHeight; @end @implementation DateRangePickerViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { self.view.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:.7]; self.dateRangePickerView.layer.cornerRadius = 5; self.dateRangePickerView.layer.shadowOpacity = 0.8; self.dateRangePickerView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); //Fix transparency glitch on iPad [self.fromDate setDate:[NSDate dateWithTimeIntervalSince1970:NSTimeIntervalSince1970]]; [self.fromDate setDate:[NSDate date]]; [self.toDate setDate:[NSDate dateWithTimeIntervalSince1970:NSTimeIntervalSince1970]]; [self.toDate setDate:[NSDate date]]; [self setIsExtended:0]; [self setCurrentHeight:[self scrollView].frame.size.height]; [super viewDidLoad]; // Do any additional setup after loading the view from its nib. } - (void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)showAnimate { self.view.transform = CGAffineTransformMakeScale(1.3, 1.3); self.view.alpha = 0; [UIView animateWithDuration:.25 animations:^{ self.view.alpha = 1; self.view.transform = CGAffineTransformMakeScale(1, 1); }]; } - (void)removeAnimate { [UIView animateWithDuration:.25 animations:^{ self.view.transform = CGAffineTransformMakeScale(1.3, 1.3); self.view.alpha = 0.0; } completion:^(BOOL finished) { if (finished) { [self.view removeFromSuperview]; } }]; } - (void) moveUp: (UIView*) view : (NSUInteger) height { CGPoint position = view.center; position.y -= height; [UIView beginAnimations:@"MoveUp" context:NULL]; [UIView setAnimationDuration:0.5]; view.center = position; [UIView commitAnimations]; } - (void) moveDown: (UIView*) view : (NSUInteger) height { CGPoint position = view.center; position.y += height; [UIView beginAnimations:@"MoveDown" context:NULL]; [UIView setAnimationDuration:0.5]; view.center = position; [UIView commitAnimations]; } - (void) resizeViewHeight : (UIView*) view : (NSInteger) height : (Boolean) ignoreHeight { CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenHeight = screenRect.size.height; if((height > screenHeight) && !ignoreHeight) { NSLog(@"[DateRangePickerViewController.m]: Screen height limit reached"); } else { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width,height); [UIView commitAnimations]; } if(height < 0) { [self setIsExtended: [self isExtended] - 1]; } else { [self setIsExtended: [self isExtended] + 1]; } [self.scrollView setContentSize:CGSizeMake([self scrolledView].frame.size.width,[self currentHeight])]; } - (IBAction)toggleFromDate:(id)sender { NSUInteger height = [self fromDate].frame.size.height; if([[self fromToggler] isOn]) { [[self fromDate] setEnabled:TRUE]; [[self fromDate] setHidden:FALSE]; [self moveDown:[self toToggler] :height]; [self moveDown:[self toDate] :height]; [self moveDown:[self doneButton] :height]; [self moveDown:[self toLabel] :height]; [self setCurrentHeight:[self currentHeight] + height + 20]; [self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE]; } else { [[self fromDate] setEnabled:FALSE]; [[self fromDate] setHidden:TRUE]; [self moveUp:[self toToggler] :height]; [self moveUp:[self toDate] :height]; [self moveUp:[self doneButton] :height]; [self moveUp:[self toLabel] :height]; [self setCurrentHeight:[self currentHeight] - height - 20]; [self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE]; } } - (IBAction)toggleToDate:(id)sender { NSUInteger height = [self toDate].frame.size.height; if([[self toToggler] isOn]) { [[self toDate] setEnabled:TRUE]; [[self toDate] setHidden:FALSE]; [self moveDown:[self doneButton] :height]; [self setCurrentHeight:[self currentHeight] + height + 20]; [self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE]; } else { [[self toDate] setEnabled:FALSE]; [[self toDate] setHidden:TRUE]; [self moveUp:[self doneButton] :height]; [self setCurrentHeight:[self currentHeight] - height - 20]; [self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE]; } } - (IBAction)closePopup:(id)sender { NSDate *from = nil; NSDate *to = nil; if([[self fromToggler] isOn]) { from = [[self fromDate] date]; } if([[self toToggler] isOn]) { to = [[self toDate] date]; } [self.delegate passDateRangeViewController:self didFinishEnteringItem:from : to]; [self removeAnimate]; } - (void)showInView:(UIView *)aView animated:(BOOL)animated { [aView addSubview:self.view]; if (animated) { [self showAnimate]; } } @end