-
Notifications
You must be signed in to change notification settings - Fork 4
/
FiddlerTestController.m
148 lines (114 loc) · 4.78 KB
/
FiddlerTestController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/**
* Project: Fiddler: Calculating sunrise & sunset times in Objective C
* File name: FiddlerTestController.m
* Description: This is the testbed for the Fiddler functions
*
* @author Jack Kustanowitz, MountainPass Technology LLC http://www.MountainPassTech.com, Copyright (C) 2010.
*
* @see The GNU Public License (GPL)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along with Fiddler. If not, see http://www.gnu.org/licenses/.
*/
#import "FiddlerTestController.h"
#import "Fiddler.h"
@implementation FiddlerTestController
@synthesize txtLatitude, txtLongitude, txtTZOffset, lblDate, lblSunrise, lblSunset;
NSString * const DateFormat = @"MM/dd/yy";
/*
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
// Custom initialization
}
return self;
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
// set up the current date
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSString* date = [dateFormatter stringFromDate:[NSDate date]];
lblDate.text = date;
}
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
-(IBAction) btnCalculate_Clicked: (id) sender {
// set up formatter
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:DateFormat];
// set up current time zone
NSTimeZone* tz = [NSTimeZone timeZoneForSecondsFromGMT:([txtTZOffset.text intValue] * 3600)];
// get current date
NSDate* date = [formatter dateFromString:lblDate.text];
// set up Fiddler object
Fiddler* fiddler = [[Fiddler alloc] initWithDate:date timeZone:tz latitude:[txtLatitude.text doubleValue] longitude:[txtLongitude.text doubleValue]];
// setup sunrise/sunset
[fiddler reload];
// display computed values
[formatter setTimeStyle:NSDateFormatterFullStyle];
lblSunrise.text = [formatter stringFromDate:fiddler.sunrise];
lblSunset.text = [formatter stringFromDate:fiddler.sunset];
}
-(IBAction) btnChangeDate_Clicked: (id) sender {
// set up the actionsheet with the date picker
NSString *title = @"\n\n\n\n\n\n\n\n\n\n\n\n";
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:title delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:@"Set", nil];
UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease];
datePicker.datePickerMode = UIDatePickerModeDate;
datePicker.tag = 101;
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:DateFormat];
NSDate* date = [formatter dateFromString:lblDate.text];
datePicker.date = date;
[actionSheet addSubview:datePicker];
[actionSheet showInView:self.view];
}
-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// Recover the picker
UIDatePicker *datePicker = (UIDatePicker*) [actionSheet viewWithTag:101];;
// set up the date label on the form
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"MM/dd/yy"];
NSString *timestamp = [formatter stringFromDate:datePicker.date];
lblDate.text = timestamp;
[actionSheet release];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end