// // 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) { } 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) parentViewControllerDidRotateWithOrientation: (UIDeviceOrientation) orientation { NSLog(@"[DateRangePickerViewController.m]: Screen did rotate"); [self resizeViewHeight:self.scrollView :self.currentHeight :FALSE :FALSE]; if([self.fromToggler isOn]) { NSUInteger height = [self fromDate].frame.size.height; self.currentHeight -= (height + 20); [self toggleFromDate:self]; } if([self.toToggler isOn]) { NSUInteger height = [self toDate].frame.size.height; self.currentHeight -= (height + 20); [self toggleToDate:self]; } } - (void) parentViewControllerWillRotateToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration: (NSTimeInterval)duration { NSLog(@"[DateRangePickerViewController.m]: Screen will rotate"); } - (void) expandScrollView { } - (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 : (Boolean) realResize { NSLog(@"[DateRangePickerViewController.m]: currentHeight is %lu", (unsigned long)self.currentHeight); CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenHeight; if(UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation])) { screenHeight = screenRect.size.width; } else { screenHeight = screenRect.size.height; } if((height > (screenHeight-40)) && !ignoreHeight) { NSLog(@"[DateRangePickerViewController.m]: Screen height limit reached"); height = screenHeight-40; } [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(realResize) { 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])]; [self.scrollView flashScrollIndicators]; } - (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 : TRUE]; } 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 : TRUE]; } } - (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 : TRUE]; } 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 : TRUE]; } } - (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.childDelegate removeChildFromParentController:self]; [self removeAnimate]; } - (void)showInView:(UIView *)aView animated:(BOOL)animated { [aView addSubview:self.view]; if (animated) { [self showAnimate]; } } @end