-
Notifications
You must be signed in to change notification settings - Fork 0
/
GPAViewController.m
140 lines (106 loc) · 3.6 KB
/
GPAViewController.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
//
// GPAViewController.m
// GPA
//
// Created by Charlie Melbye on 1/21/10.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "GPAViewController.h"
#define FOBJ(x) [NSNumber numberWithFloat:x]
@implementation GPAViewController
@synthesize gpaLabel;
@synthesize infoLabel;
@synthesize initialAppear;
- (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)loadView {
[super loadView];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Setup Grade Point Values
NSArray *keys = [NSArray arrayWithObjects:@"A+", @"A", @"A-", @"B+", @"B", @"B-", @"C+", @"C", @"C-", @"D+", @"D", @"D-", @"F", nil];
NSArray *values = [NSArray arrayWithObjects:FOBJ(4.33), FOBJ(4.00), FOBJ(3.67), FOBJ(3.33), FOBJ(3.00), FOBJ(2.67), FOBJ(2.33), FOBJ(2.00), FOBJ(1.67), FOBJ(1.33), FOBJ(1.00), FOBJ(0.67), FOBJ(0.00), nil];
gradePointValues = [NSDictionary dictionaryWithObjects:values forKeys:keys];
self.initialAppear = NO;
NSLog(@"Loaded courses and calculated GPA.");
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
GPAAppDelegate *appDelegate = (GPAAppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.currentController = self;
[self calculateGPA];
if (self.initialAppear != YES) {
[UIView beginAnimations:nil context:NULL];
self.postItImageView.alpha = 1.0;
self.gpaLabel.alpha = 1.0;
self.infoLabel.alpha = 1.0;
[UIView commitAnimations];
self.initialAppear = YES;
}
}
- (void)layoutAnimated:(BOOL)animated
{
CGRect bannerFrame = _bannerView.frame;
if (_bannerView.bannerLoaded) {
bannerFrame.origin.y = 0;
}
[UIView animateWithDuration:animated ? 0.25 : 0.0 animations:^{
_bannerView.frame = bannerFrame;
}];
}
- (void)showBannerView:(ADBannerView *)bannerView animated:(BOOL)animated
{
_bannerView = bannerView;
_bannerView.frame = CGRectMake(0, -50, 0, 0);
[self.view addSubview:_bannerView];
[self layoutAnimated:animated];
}
- (void)hideBannerView:(ADBannerView *)bannerView animated:(BOOL)animated
{
_bannerView = nil;
[self layoutAnimated:animated];
}
- (void)calculateGPA {
[self loadCourses];
if([courses count] > 0) {
float gpa = 0.00;
for (id courseName in courses) {
gpa = gpa + [[gradePointValues objectForKey:[courses objectForKey:courseName]] floatValue];
}
gpa = gpa / [courses count];
NSLog(@"%f", gpa);
if(gpa > 3) {
infoLabel.text = @"Keep up the good work!";
} else {
infoLabel.text = @"Keep trying!";
}
gpaLabel.text = [NSString stringWithFormat:@"%0.2f", gpa];
} else {
infoLabel.text = @"Insert your courses to calculate your GPA.";
gpaLabel.text = @"0.00";
}
}
- (void)loadCourses {
NSFileManager *fileManager = [NSFileManager defaultManager];
// Load courses
if([fileManager fileExistsAtPath:[self coursesDatabasePath]]) {
NSLog(@"Course file exists, loading.");
courses = [[NSMutableDictionary alloc] initWithContentsOfFile:[self coursesDatabasePath]];
} else {
NSLog(@"Course file does not exist, using an empty dict.");
courses = [[NSMutableDictionary alloc] init];
}
}
- (NSString *)coursesDatabasePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"courses.plist"];
}
@end