|
1
2
3
4
5
6
7
8
9
10
11
12
|
//
// 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 ()
|
|
13
|
@property uint8_t isExtended;
|
|
14
|
@property NSUInteger currentHeight;
|
|
15
|
|
|
16
17
18
19
20
21
22
23
|
@end
@implementation DateRangePickerViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
|
|
24
|
|
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
}
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]];
|
|
42
|
[self setIsExtended:0];
|
|
43
44
|
[self setCurrentHeight:[self scrollView].frame.size.height];
|
|
45
46
47
48
|
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
|
|
49
50
51
52
53
|
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
|
|
54
55
56
57
58
59
|
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
|
|
60
61
62
|
- (void) parentViewControllerDidRotateWithOrientation: (UIDeviceOrientation) orientation
{
NSLog(@"[DateRangePickerViewController.m]: Screen did rotate");
|
|
63
64
65
66
67
68
69
70
71
72
73
74
75
|
[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];
}
|
|
76
77
78
79
80
81
82
83
84
85
86
87
|
}
- (void) parentViewControllerWillRotateToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration: (NSTimeInterval)duration
{
NSLog(@"[DateRangePickerViewController.m]: Screen will rotate");
}
- (void) expandScrollView
{
}
|
|
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
- (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];
}
}];
}
|
|
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
- (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];
}
|
|
130
|
- (void) resizeViewHeight : (UIView*) view : (NSInteger) height : (Boolean) ignoreHeight : (Boolean) realResize
|
|
131
|
{
|
|
132
|
NSLog(@"[DateRangePickerViewController.m]: currentHeight is %lu", (unsigned long)self.currentHeight);
|
|
133
|
CGRect screenRect = [[UIScreen mainScreen] bounds];
|
|
134
135
|
CGFloat screenHeight;
if(UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]))
|
|
136
|
{
|
|
137
|
screenHeight = screenRect.size.width;
|
|
138
|
}
|
|
139
|
else
|
|
140
|
{
|
|
141
|
screenHeight = screenRect.size.height;
|
|
142
|
}
|
|
143
|
if((height > (screenHeight-40)) && !ignoreHeight)
|
|
144
|
{
|
|
145
146
|
NSLog(@"[DateRangePickerViewController.m]: Screen height limit reached");
height = screenHeight-40;
|
|
147
|
}
|
|
148
149
150
151
152
|
[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)
|
|
153
|
{
|
|
154
155
156
157
158
159
160
161
|
if(height < 0)
{
[self setIsExtended: [self isExtended] - 1];
}
else
{
[self setIsExtended: [self isExtended] + 1];
}
|
|
162
|
}
|
|
163
|
[self.scrollView setContentSize:CGSizeMake([self scrolledView].frame.size.width,[self currentHeight])];
|
|
164
|
[self.scrollView flashScrollIndicators];
|
|
165
166
|
}
|
|
167
168
|
- (IBAction)toggleFromDate:(id)sender
{
|
|
169
|
NSUInteger height = [self fromDate].frame.size.height;
|
|
170
171
172
173
|
if([[self fromToggler] isOn])
{
[[self fromDate] setEnabled:TRUE];
[[self fromDate] setHidden:FALSE];
|
|
174
175
176
177
|
[self moveDown:[self toToggler] :height];
[self moveDown:[self toDate] :height];
[self moveDown:[self doneButton] :height];
[self moveDown:[self toLabel] :height];
|
|
178
|
[self setCurrentHeight:[self currentHeight] + height + 20];
|
|
179
|
[self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE : TRUE];
|
|
180
181
182
183
184
|
}
else
{
[[self fromDate] setEnabled:FALSE];
[[self fromDate] setHidden:TRUE];
|
|
185
186
187
188
|
[self moveUp:[self toToggler] :height];
[self moveUp:[self toDate] :height];
[self moveUp:[self doneButton] :height];
[self moveUp:[self toLabel] :height];
|
|
189
|
[self setCurrentHeight:[self currentHeight] - height - 20];
|
|
190
|
[self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE : TRUE];
|
|
191
192
193
194
|
}
}
- (IBAction)toggleToDate:(id)sender
{
|
|
195
|
NSUInteger height = [self toDate].frame.size.height;
|
|
196
197
198
199
|
if([[self toToggler] isOn])
{
[[self toDate] setEnabled:TRUE];
[[self toDate] setHidden:FALSE];
|
|
200
|
[self moveDown:[self doneButton] :height];
|
|
201
|
[self setCurrentHeight:[self currentHeight] + height + 20];
|
|
202
|
[self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE : TRUE];
|
|
203
204
205
206
207
|
}
else
{
[[self toDate] setEnabled:FALSE];
[[self toDate] setHidden:TRUE];
|
|
208
|
[self moveUp:[self doneButton] :height];
|
|
209
|
[self setCurrentHeight:[self currentHeight] - height - 20];
|
|
210
|
[self resizeViewHeight : [self scrollView] : [self currentHeight] : FALSE : TRUE];
|
|
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
}
}
- (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];
|
|
227
|
[self.childDelegate removeChildFromParentController:self];
|
|
228
229
230
231
232
233
|
[self removeAnimate];
}
- (void)showInView:(UIView *)aView animated:(BOOL)animated
{
[aView addSubview:self.view];
|
|
234
235
|
if (animated)
{
|
|
236
237
238
239
240
|
[self showAnimate];
}
}
@end
|