Guest User

Untitled

a guest
May 17th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. //  ModuleSummaryViewController.m
  3. //  StudentRecordApp
  4. //
  5. //  Created by Reece Squires on 14/05/2013.
  6. //  Copyright (c) 2013 __MyCompanyName__. All rights reserved.
  7. //
  8.  
  9. #import "ModuleSummaryViewController.h"
  10.  
  11. @implementation ModuleSummaryViewController
  12. @synthesize viewControllerArray;
  13. @synthesize masterViewController;
  14. //@synthesize moduleSummaryView = _moduleSummaryView;
  15. @synthesize split;
  16. //@synthesize modules;
  17. @synthesize moduleAssessments;
  18. @synthesize saveIndex;
  19. @synthesize currentModule;
  20. @synthesize moduleTitle;
  21. @synthesize moduleCode;
  22.  
  23. @synthesize assessmentWeighting1;
  24. @synthesize assessmentWeighting2;
  25. @synthesize assessmentWeighting3;
  26. @synthesize assessmentGrade1;
  27. @synthesize assessmentGrade2;
  28. @synthesize assessmentGrade3;
  29.  
  30. @synthesize creditValue;
  31. @synthesize overallGrade;
  32. @synthesize assessmentName1;
  33. @synthesize assessmentName2;
  34. @synthesize assessmentName3;
  35. @synthesize Asskey;
  36.  
  37. @synthesize key;
  38.  
  39.  
  40. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  41. {
  42.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  43.     if (self) {
  44.         // Custom initialization
  45.     }
  46.     return self;
  47. }
  48.  
  49. - (void)didReceiveMemoryWarning
  50. {
  51.     // Releases the view if it doesn't have a superview.
  52.     [super didReceiveMemoryWarning];
  53.    
  54.     // Release any cached data, images, etc that aren't in use.
  55. }
  56.  
  57. #pragma mark - View lifecycle
  58.  
  59. - (void)saveModule:(Module *)module {
  60.    
  61.     NSData *encodedModule = [NSKeyedArchiver archivedDataWithRootObject:module];
  62.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  63.     //NSString *TempString = @"encodedModule";
  64.     //TempString = [TempString stringByAppendingFormat:@"%.0f",saveIndex];
  65.     [defaults setObject:encodedModule forKey:key];
  66.     //saveIndex = saveIndex + 1;
  67.     //NSString *temp = [NSString stringWithFormat:@"%.0f",saveIndex];
  68.     //[defaults setObject: temp forKey:@"saveIndex"];    
  69.     [defaults synchronize];
  70. }
  71.  
  72. - (Module *)loadModuleWithKey:(NSString *)mkey {
  73.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  74.     NSData *encodedModule = [defaults objectForKey:mkey];
  75.     Module *module = (Module *)[NSKeyedUnarchiver unarchiveObjectWithData: encodedModule];
  76.     [defaults synchronize];
  77.     return module;
  78. }
  79. - (Assessment *) loadAssessmentWithKey: (NSString *)akey{
  80.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  81.     NSData *encodedAssessment = [defaults objectForKey:akey];
  82.     Assessment *assessment = (Assessment *)[NSKeyedUnarchiver unarchiveObjectWithData:encodedAssessment];
  83.     [defaults synchronize];
  84.     return assessment;
  85. }
  86.  
  87. - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
  88.     NSString *TargetLevel;
  89.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  90.    
  91.     switch (item.tag ) {
  92.            
  93.         case 0:
  94.             TargetLevel = @"4";
  95.             [defaults setObject:TargetLevel forKey:@"CurrentLevel"];
  96.             [defaults synchronize];
  97.             [[NSNotificationCenter defaultCenter] postNotificationName:@"TableContentUpdate" object:nil];
  98.             [[NSNotificationCenter defaultCenter] postNotificationName:@"viewChange" object:nil];
  99.             break;
  100.            
  101.         case 1:
  102.             [defaults setObject:@"5" forKey:@"CurrentLevel"];
  103.             [defaults synchronize];
  104.             [[NSNotificationCenter defaultCenter] postNotificationName:@"TableContentUpdate" object:nil];
  105.             [[NSNotificationCenter defaultCenter] postNotificationName:@"viewChange" object:nil];
  106.             break;
  107.            
  108.         case 2:
  109.             [defaults setObject:@"6" forKey:@"CurrentLevel"];
  110.             [defaults synchronize];
  111.             [[NSNotificationCenter defaultCenter] postNotificationName:@"TableContentUpdate" object:nil];
  112.             [[NSNotificationCenter defaultCenter] postNotificationName:@"viewChange" object:nil];
  113.             break;
  114.            
  115.         case 3:
  116.            
  117.             break;
  118.            
  119.         case 4:
  120.            
  121.                [[NSNotificationCenter defaultCenter] postNotificationName:@"courseView" object:nil];
  122.            
  123.             break;
  124.         default:
  125.             break;
  126.            
  127.     }
  128. }
  129.  
  130. - (void)keyboardDidDismiss:(NSNotification *)note
  131. {
  132.     /*
  133.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  134.     //[defaults setObject:TargetLevel forKey:@"CurrentLevel"];
  135.     Module *tempModule = [self loadModuleWithKey:key];
  136.    
  137.     [defaults synchronize];
  138.    
  139.     Assessment *tempAssessment = [[Assessment alloc]init];
  140.     tempAssessment = [moduleAssessments objectAtIndex:0];
  141.     tempAssessment.grade = assessmentGrade1.text;
  142.     [moduleAssessments replaceObjectAtIndex:0 withObject:tempAssessment];
  143.     [tempAssessment release];
  144.    
  145.     tempAssessment = [[Assessment alloc]init];
  146.     tempAssessment = [moduleAssessments objectAtIndex:1];
  147.     tempAssessment.grade = assessmentGrade2.text;
  148.     [moduleAssessments replaceObjectAtIndex:1 withObject:tempAssessment];
  149.     [tempAssessment release];
  150.    
  151.     tempAssessment = [[Assessment alloc]init];
  152.     tempAssessment = [moduleAssessments objectAtIndex:2];
  153.     tempAssessment.grade = assessmentGrade3.text;
  154.     [moduleAssessments replaceObjectAtIndex:2 withObject:tempAssessment];
  155.     [tempAssessment release];
  156.    
  157.     for(int i = 0; i < [moduleAssessments count]; i++)
  158.     {
  159.         if(i == 0)
  160.         {
  161.             Asskey = [key stringByAppendingString:@"A"];
  162.             tempAssessment = [moduleAssessments objectAtIndex:0];
  163.             NSData *encodedAssessment = [NSKeyedArchiver archivedDataWithRootObject:tempAssessment];
  164.             [defaults setObject:encodedAssessment forKey:Asskey];
  165.            
  166.         }
  167.         else
  168.         {
  169.             Asskey = [key stringByAppendingFormat:@"A%i",i];
  170.             tempAssessment = [moduleAssessments objectAtIndex:i];
  171.             NSData *encodedAssessment = [NSKeyedArchiver archivedDataWithRootObject:tempAssessment];
  172.             [defaults setObject:encodedAssessment forKey:Asskey];
  173.         }
  174.     }
  175.    
  176.     //double ass1, ass2, ass3;
  177.     //if(currentModule.grade)
  178.     //{
  179.     tempModule.grade = (([assessmentWeighting1.text doubleValue] * [assessmentGrade1.text doubleValue]) + ([assessmentWeighting2.text doubleValue] * [assessmentGrade2.text doubleValue]) + ([assessmentWeighting3.text doubleValue] * [assessmentGrade3.text doubleValue])) / 100;
  180.    
  181.     //ass1 = ([assessmentWeighting1.text doubleValue] * [assessmentGrade1.text doubleValue]);
  182.    
  183.     //ass2 = ([assessmentWeighting2.text doubleValue] * [assessmentGrade2.text doubleValue]);
  184.    
  185.     //ass3 = ([assessmentWeighting3.text doubleValue] * [assessmentGrade3.text doubleValue]);
  186.    
  187.     //tempModule.grade = (ass1 + ass2 + ass3) / 100;
  188.    
  189.     overallGrade.text = @"";
  190.     overallGrade.text = [overallGrade.text stringByAppendingFormat:@"%.2f", tempModule.grade];
  191.     //}
  192.     [self saveModule:tempModule];
  193.     //[tempAssessment release];
  194.     //[tempModule release];
  195.      */
  196. }
  197.  
  198. /*
  199.  // Implement loadView to create a view hierarchy programmatically, without using a nib.
  200.  - (void)loadView
  201.  {
  202.  }
  203.  */
  204.  
  205.  
  206. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
  207. - (void)viewDidLoad
  208. {
  209.     [super viewDidLoad];
  210.    
  211.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidDismiss:) name:UIKeyboardDidHideNotification object:nil];
  212.     NSString *targetTitle;
  213.     NSString *saveIndexString;
  214.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  215.     @try {
  216.         //currentModule = [[Module alloc] init];
  217.         split = [self splitViewController];
  218.         masterViewController = [[split viewControllers] objectAtIndex:0];
  219.         moduleAssessments = [[NSMutableArray alloc]init];
  220.        
  221.         saveIndexString = [defaults objectForKey:@"saveIndex"];
  222.         saveIndex = [saveIndexString doubleValue];
  223.         targetTitle = [defaults objectForKey:@"cellTitle"];
  224.         [defaults synchronize];
  225.     }
  226.     @catch (NSException *e) {
  227.         NSLog(@"NULL DATA");
  228.     }
  229.     @finally {
  230.     }
  231.    
  232.    
  233.     for (int i=0; i < saveIndex; i++)
  234.     {
  235.         Module *tempModule;
  236.        
  237.         if(i == 0)
  238.         {
  239.             key = @"encodedModule";
  240.             tempModule = [self loadModuleWithKey:key];
  241.         }
  242.         else
  243.         {
  244.             key = [@"encodedModule" stringByAppendingFormat:@"%i",i];
  245.             tempModule = [self loadModuleWithKey:key];
  246.         }
  247.        
  248.         if([tempModule.name isEqualToString:targetTitle])
  249.         {
  250.             currentModule = tempModule;
  251.             break;
  252.         }
  253.     }
  254.     [defaults synchronize];
  255.    
  256.     for(int i = 0; i < [currentModule.assessments count]; i++)
  257.     {
  258.         NSString *AssessmentKey = key;
  259.         if (i == 0)
  260.         {
  261.             AssessmentKey = [key stringByAppendingString:@"A"];
  262.         }
  263.         else
  264.         {
  265.             AssessmentKey = [key stringByAppendingFormat:@"A%i", i];
  266.         }
  267.        
  268.         Assessment *newAssessment = [self loadAssessmentWithKey: AssessmentKey];
  269.         [moduleAssessments addObject:newAssessment];
  270.     }
  271.    
  272.     moduleTitle.text = currentModule.name;
  273.     moduleCode.text = currentModule.code;
  274.     creditValue.text = currentModule.creditValue;
  275.    
  276.     Assessment *currentAssessment = [[Assessment alloc] init];
  277.     @try {
  278.         if([moduleAssessments objectAtIndex:0])
  279.         {
  280.             currentAssessment = [moduleAssessments objectAtIndex:0];
  281.             assessmentName1.text = currentAssessment.Name;
  282.             assessmentWeighting1.text = currentAssessment.weighting;
  283.             assessmentGrade1.text = currentAssessment.grade;
  284.         }
  285.        
  286.         if([moduleAssessments objectAtIndex:1])
  287.         {
  288.             currentAssessment = [moduleAssessments objectAtIndex:1];
  289.             assessmentName2.text = currentAssessment.Name;
  290.             assessmentWeighting2.text = currentAssessment.weighting;
  291.             assessmentGrade2.text = currentAssessment.grade;
  292.         }
  293.         if([moduleAssessments objectAtIndex:2])
  294.         {
  295.             currentAssessment = [moduleAssessments objectAtIndex:2];
  296.             assessmentName3.text = currentAssessment.Name;
  297.             assessmentWeighting3.text = currentAssessment.weighting;
  298.             assessmentGrade3.text = currentAssessment.grade;
  299.         }
  300.        
  301.     }
  302.     @catch (NSException *exception) {
  303.         NSLog(@"First Run");
  304.     }
  305.     @finally {
  306.        
  307.     }
  308.     //double Temp = currentModule.grade;
  309.    
  310.     //if(currentModule.grade)
  311.     //{
  312.     currentModule.grade = (([assessmentWeighting1.text doubleValue] * [assessmentGrade1.text doubleValue]) + ([assessmentWeighting2.text doubleValue] * [assessmentGrade2.text doubleValue]) + ([assessmentWeighting3.text doubleValue] * [assessmentGrade3.text doubleValue])) / 100;
  313.    
  314.     overallGrade.text = [overallGrade.text stringByAppendingFormat:@"%.2f", currentModule.grade];
  315.     //}
  316.    
  317.     CGRect myTab =CGRectMake(0,699,703,49);
  318.     UITabBar *tabBar = [[[UITabBar alloc] initWithFrame:myTab] autorelease];
  319.     NSMutableArray *items = [[[NSMutableArray alloc] init] autorelease];
  320.    
  321.     // Add a 'contacts' item
  322.     [items addObject:[[[UITabBarItem alloc] initWithTitle:@"Level 4" image:nil tag:0] autorelease] ];
  323.    
  324.     // Add a 'More' item
  325.     [items addObject:[[[UITabBarItem alloc] initWithTitle:@"Level 5" image:nil tag:1] autorelease] ];
  326.    
  327.     // Add a 'contacts' item
  328.     [items addObject:[[[UITabBarItem alloc] initWithTitle:@"Level 6" image:nil tag:2] autorelease] ];
  329.    
  330.     // Add a 'More' item
  331.     [items addObject:[[[UITabBarItem alloc] initWithTitle:@"Dates" image:nil tag:3] autorelease] ];
  332.    
  333.     // Add a 'contacts' item
  334.     [items addObject:[[[UITabBarItem alloc] initWithTitle:@"Summary" image:nil tag:4] autorelease] ];
  335.    
  336.     // Put the items in the tab bar
  337.     tabBar.items = items;
  338.    
  339.     // Setup this object to respond to tab changes
  340.     tabBar.delegate = self;
  341.     [self.view addSubview:tabBar];
  342.     [currentAssessment release];
  343. }
  344.  
  345.  
  346. - (void)viewDidUnload
  347. {
  348.     [self setModuleTitle:nil];
  349.     [self setModuleCode:nil];
  350.     [self setAssessmentWeighting1:nil];
  351.     [self setAssessmentWeighting2:nil];
  352.     [self setAssessmentWeighting3:nil];
  353.     [self setAssessmentGrade1:nil];
  354.     [self setAssessmentGrade2:nil];
  355.     [self setAssessmentGrade3:nil];
  356.     [self setCreditValue:nil];
  357.     [self setOverallGrade:nil];
  358.     [self setAssessmentName1:nil];
  359.     [self setAssessmentName2:nil];
  360.     [self setAssessmentName3:nil];
  361.     [self setAssessmentGrade1:nil];
  362.     [self setAssessmentGrade2:nil];
  363.     [self setAssessmentGrade3:nil];
  364.     //[self setModuleAssessments:nil];
  365.     [super viewDidUnload];
  366.     // Release any retained subviews of the main view.
  367.     // e.g. self.myOutlet = nil;
  368. }
  369.  
  370. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  371. {
  372.     // Return YES for supported orientations
  373.     return YES;
  374. }
  375.  
  376. - (void)dealloc {
  377.     [moduleTitle release];
  378.     [moduleCode release];
  379.     [assessmentWeighting1 release];
  380.     [assessmentWeighting2 release];
  381.     [assessmentWeighting3 release];
  382.     [assessmentGrade1 release];
  383.     [assessmentGrade2 release];
  384.     [assessmentGrade3 release];
  385.     [creditValue release];
  386.     [overallGrade release];
  387.     [assessmentName1 release];
  388.     [assessmentName2 release];
  389.     [assessmentName3 release];
  390.     //[moduleAssessments release];
  391.    
  392.     [super dealloc];
  393. }
  394. @end
Advertisement
Add Comment
Please, Sign In to add comment