From 00dc506e0b333bc73c5361969f336f262c411527 Mon Sep 17 00:00:00 2001 From: Diana Date: Wed, 7 Oct 2015 15:42:51 -0400 Subject: [PATCH 1/6] Added tasks vc --- .DS_Store | Bin 0 -> 6148 bytes MarsWater/.DS_Store | Bin 0 -> 6148 bytes MarsWater/MarsWater.xcodeproj/project.pbxproj | 6 + .../MarsWater/Assets.xcassets/Contents.json | 6 + .../check.imageset/Contents.json | 21 ++++ .../Assets.xcassets/check.imageset/check.png | Bin 0 -> 5215 bytes .../MarsWater/Base.lproj/Main.storyboard | 66 ++++++++-- .../ListCreationTableViewController.m | 103 +++++++++++++++- .../MarsWater/TasksTableViewController.h | 14 +++ .../MarsWater/TasksTableViewController.m | 114 ++++++++++++++++++ 10 files changed, 320 insertions(+), 10 deletions(-) create mode 100644 .DS_Store create mode 100644 MarsWater/.DS_Store create mode 100644 MarsWater/MarsWater/Assets.xcassets/Contents.json create mode 100644 MarsWater/MarsWater/Assets.xcassets/check.imageset/Contents.json create mode 100644 MarsWater/MarsWater/Assets.xcassets/check.imageset/check.png create mode 100644 MarsWater/MarsWater/TasksTableViewController.h create mode 100644 MarsWater/MarsWater/TasksTableViewController.m diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 - + @@ -41,6 +41,9 @@ + + + @@ -75,7 +78,52 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138,7 +186,7 @@ - + @@ -208,12 +256,16 @@ + + + + - + diff --git a/MarsWater/MarsWater/ListCreationTableViewController.m b/MarsWater/MarsWater/ListCreationTableViewController.m index 0ecf6e9..7fc4c54 100644 --- a/MarsWater/MarsWater/ListCreationTableViewController.m +++ b/MarsWater/MarsWater/ListCreationTableViewController.m @@ -11,9 +11,15 @@ #import "List.h" #import "AppDelegate.h" -@interface ListCreationTableViewController () +@interface ListCreationTableViewController () @property (weak, nonatomic) IBOutlet UITextField *titleTextField; +@property (weak, nonatomic) IBOutlet UIButton *orangeButton; +@property (weak, nonatomic) IBOutlet UIButton *pinkButton; +@property (weak, nonatomic) IBOutlet UIButton *purpleButton; +@property (weak, nonatomic) IBOutlet UIButton *blueButton; +@property (nonatomic) UIImage *checkBackgroundImage; + @property (nonatomic) List *list; @@ -24,6 +30,9 @@ @implementation ListCreationTableViewController - (void)viewDidLoad { [super viewDidLoad]; + self.checkBackgroundImage = [UIImage imageNamed:@"check"]; + self.titleTextField.delegate = self; + [self setupNavigationBar]; AppDelegate *delegate = [UIApplication sharedApplication].delegate; @@ -39,14 +48,36 @@ - (void)setupNavigationBar { self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)]; - // set the right button to save } - (void)cancel { [self dismissViewControllerAnimated:YES completion:nil]; } + + +// set the right button to save + - (void)save { + + if ([self.titleTextField.text isEqualToString:@""]) { + + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Ooops!" message:@"Please fill out the textfields" preferredStyle: UIAlertControllerStyleAlert]; + + UIAlertAction *okAction = [UIAlertAction + actionWithTitle:NSLocalizedString(@"OK", @"OK action") + style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action) + { + NSLog(@"OK action"); + }]; + + [alert addAction:okAction]; + [self presentViewController:alert animated:YES completion:nil]; + + } + else { + self.list.title = self.titleTextField.text; self.list.createdAt = [NSDate date]; @@ -54,10 +85,76 @@ - (void)save { [delegate.managedObjectContext save:nil]; [self dismissViewControllerAnimated:YES completion:nil]; + } +} + +//# pragma mark - text field delegate methods +//-(BOOL) textFieldShouldReturn { +// +// [self.view endEditing:YES]; +// NSLog(@"enter"); +// [self save]; +// [self.tableView reloadData]; +// +// // NSString * query = self.searchTextField.text; +// +// // [self makeNewAPIRequestWithSearchTerm:query andLocation:textField.text callBackBlock:^{ +// // [self.tableView reloadData]; +// // }]; +// +// +// return YES; +//} + + + +- (IBAction)orangeButtonTapped:(UIButton *)sender { + + self.list.color = sender.backgroundColor; + + [self.orangeButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + + [self.pinkButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.purpleButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueButton setBackgroundImage:nil forState:UIControlStateNormal]; + } -- (IBAction)colorButtonTapped:(UIButton *)sender { +- (IBAction)pinkButtonTapped:(UIButton *)sender { + + self.list.color = sender.backgroundColor; + + [self.pinkButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + + [self.orangeButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.purpleButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueButton setBackgroundImage:nil forState:UIControlStateNormal]; + } +- (IBAction)purpleButtonTapped:(UIButton *)sender { + + + self.list.color = sender.backgroundColor; + [self.purpleButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + + [self.pinkButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.orangeButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueButton setBackgroundImage:nil forState:UIControlStateNormal]; + +} +- (IBAction)blueButtonTapped:(UIButton *)sender { + + self.list.color = sender.backgroundColor; + [self.blueButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + + [self.pinkButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.purpleButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.orangeButton setBackgroundImage:nil forState:UIControlStateNormal]; + } + + + + @end diff --git a/MarsWater/MarsWater/TasksTableViewController.h b/MarsWater/MarsWater/TasksTableViewController.h new file mode 100644 index 0000000..0ea62f8 --- /dev/null +++ b/MarsWater/MarsWater/TasksTableViewController.h @@ -0,0 +1,14 @@ +// +// TasksTableViewController.h +// MarsWater +// +// Created by Diana Elezaj on 10/7/15. +// Copyright © 2015 Michael Kavouras. All rights reserved. +// + +#import +#import "Task.h" + +@interface TasksTableViewController : UITableViewController +@property (nonatomic) NSMutableArray *tasks; +@end diff --git a/MarsWater/MarsWater/TasksTableViewController.m b/MarsWater/MarsWater/TasksTableViewController.m new file mode 100644 index 0000000..6a73490 --- /dev/null +++ b/MarsWater/MarsWater/TasksTableViewController.m @@ -0,0 +1,114 @@ +// +// TasksTableViewController.m +// MarsWater +// +// Created by Diana Elezaj on 10/7/15. +// Copyright © 2015 Michael Kavouras. All rights reserved. +// + +#import "TasksTableViewController.h" + +@interface TasksTableViewController () + +@end + +@implementation TasksTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self setupNavigationBar]; + + // Uncomment the following line to preserve selection between presentations. + // self.clearsSelectionOnViewWillAppear = NO; + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem; +} + + + +- (void)setupNavigationBar { + + self.navigationItem.title = @"Your List"; + + self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)]; + +// self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)]; + +} +- (void)cancel { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { +#warning Incomplete implementation, return the number of sections + return 0; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +#warning Incomplete implementation, return the number of rows + return 0; +} + +/* +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath]; + + // Configure the cell... + + return cell; +} +*/ + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; + } else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +} +*/ + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end From 0c953309f17f7ffbd95fedd7668096612c2b8084 Mon Sep 17 00:00:00 2001 From: Diana Date: Sat, 10 Oct 2015 00:45:03 -0400 Subject: [PATCH 2/6] Added priority stars --- MarsWater/.DS_Store | Bin 6148 -> 6148 bytes MarsWater/MarsWater.xcodeproj/project.pbxproj | 55 ++- .../WhiteStar.imageset/Contents.json | 21 + .../WhiteStar.imageset/WhiteStar.png | Bin 0 -> 98360 bytes .../YellowStar.imageset/Contents.json | 21 + .../YellowStar.imageset/YellowStar.png | Bin 0 -> 5936 bytes .../Assets.xcassets/check.imageset/check.png | Bin 5215 -> 5750 bytes .../MarsWater/Base.lproj/Main.storyboard | 420 +++++++++++++++--- MarsWater/MarsWater/CustomTableViewCell.h | 16 + MarsWater/MarsWater/CustomTableViewCell.m | 23 + MarsWater/MarsWater/List+CoreDataProperties.h | 2 +- .../ListCreationTableViewController.m | 104 ++--- .../MarsWater/ListsTableViewController.m | 15 +- .../TaskCreationTableViewController.h | 16 + .../TaskCreationTableViewController.m | 168 +++++++ .../MarsWater/TasksTableViewController.h | 7 +- .../MarsWater/TasksTableViewController.m | 106 ++--- 17 files changed, 756 insertions(+), 218 deletions(-) create mode 100644 MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/Contents.json create mode 100644 MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/WhiteStar.png create mode 100644 MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/Contents.json create mode 100644 MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/YellowStar.png create mode 100644 MarsWater/MarsWater/CustomTableViewCell.h create mode 100644 MarsWater/MarsWater/CustomTableViewCell.m create mode 100644 MarsWater/MarsWater/TaskCreationTableViewController.h create mode 100644 MarsWater/MarsWater/TaskCreationTableViewController.m diff --git a/MarsWater/.DS_Store b/MarsWater/.DS_Store index bdd40fa4bccef1be615f9e903d1198d553ae20b1..9ace2f0a149aa7c4c0cf1e897e860842dbd24c49 100644 GIT binary patch delta 187 zcmZoMXfc=|#>B)qu~2NHo}wrl0|Nsi1A_nqLpVbsLkUAFLs41qW=5vvjLIM>P6l6~ za1lc>vUE{iPJUiGNaN%NMy<(ajC@S*PXL)ZJT5LNr6tJ>443R&j3(DHnlnRa9sYt0 z!{Frn+ybB`pf-ca^^Dp)Wx)u8fHv-C+04$t&jEBAkn^2+GQWr=2he3e#K5pQKx7Lu E0Bfx(WB>pF delta 136 zcmZoMXfc=|#>B`mu~2NHo}wrV0|Nsi1A_nqLpVbsLkUAFLlJ}C#KPr_ER*$^ESP3L z15#Rix%n_BRG7N*0^K%P;<^aKi&4J9@ST;7qF>Yq( c;O79^0~GkqJegm_k^>|Uw2EnSfXEhR0P}(&mH+?% diff --git a/MarsWater/MarsWater.xcodeproj/project.pbxproj b/MarsWater/MarsWater.xcodeproj/project.pbxproj index 23869eb..67feab1 100644 --- a/MarsWater/MarsWater.xcodeproj/project.pbxproj +++ b/MarsWater/MarsWater.xcodeproj/project.pbxproj @@ -7,7 +7,9 @@ objects = { /* Begin PBXBuildFile section */ - 84EE9DFF1BC5A9CB00464904 /* TasksTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 84EE9DFE1BC5A9CB00464904 /* TasksTableViewController.m */; settings = {ASSET_TAGS = (); }; }; + 5054F1241BC83BFE0047FE54 /* TaskCreationTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5054F1231BC83BFE0047FE54 /* TaskCreationTableViewController.m */; settings = {ASSET_TAGS = (); }; }; + 5054F1271BC83C0B0047FE54 /* TasksTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5054F1261BC83C0B0047FE54 /* TasksTableViewController.m */; settings = {ASSET_TAGS = (); }; }; + 84EE9E541BC8CB3000464904 /* CustomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 84EE9E531BC8CB3000464904 /* CustomTableViewCell.m */; settings = {ASSET_TAGS = (); }; }; 8DA86CA91BC1AE57006C50BC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA86CA81BC1AE57006C50BC /* main.m */; }; 8DA86CAC1BC1AE57006C50BC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA86CAB1BC1AE57006C50BC /* AppDelegate.m */; }; 8DA86CB21BC1AE57006C50BC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8DA86CB01BC1AE57006C50BC /* Main.storyboard */; }; @@ -23,8 +25,12 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 84EE9DFD1BC5A9CB00464904 /* TasksTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TasksTableViewController.h; sourceTree = ""; }; - 84EE9DFE1BC5A9CB00464904 /* TasksTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TasksTableViewController.m; sourceTree = ""; }; + 5054F1221BC83BFE0047FE54 /* TaskCreationTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TaskCreationTableViewController.h; sourceTree = ""; }; + 5054F1231BC83BFE0047FE54 /* TaskCreationTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TaskCreationTableViewController.m; sourceTree = ""; }; + 5054F1251BC83C0B0047FE54 /* TasksTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TasksTableViewController.h; sourceTree = ""; }; + 5054F1261BC83C0B0047FE54 /* TasksTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TasksTableViewController.m; sourceTree = ""; }; + 84EE9E521BC8CB3000464904 /* CustomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTableViewCell.h; sourceTree = ""; }; + 84EE9E531BC8CB3000464904 /* CustomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTableViewCell.m; sourceTree = ""; }; 8DA86CA41BC1AE57006C50BC /* MarsWater.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MarsWater.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8DA86CA81BC1AE57006C50BC /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 8DA86CAA1BC1AE57006C50BC /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -59,6 +65,30 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 84EE9E501BC8A77300464904 /* List */ = { + isa = PBXGroup; + children = ( + 8DA86CD21BC1B8E4006C50BC /* ListsTableViewController.h */, + 8DA86CD31BC1B8E4006C50BC /* ListsTableViewController.m */, + 8DA86CD51BC1B904006C50BC /* ListCreationTableViewController.h */, + 8DA86CD61BC1B904006C50BC /* ListCreationTableViewController.m */, + ); + name = List; + sourceTree = ""; + }; + 84EE9E511BC8A78200464904 /* Task */ = { + isa = PBXGroup; + children = ( + 5054F1251BC83C0B0047FE54 /* TasksTableViewController.h */, + 5054F1261BC83C0B0047FE54 /* TasksTableViewController.m */, + 84EE9E521BC8CB3000464904 /* CustomTableViewCell.h */, + 84EE9E531BC8CB3000464904 /* CustomTableViewCell.m */, + 5054F1221BC83BFE0047FE54 /* TaskCreationTableViewController.h */, + 5054F1231BC83BFE0047FE54 /* TaskCreationTableViewController.m */, + ); + name = Task; + sourceTree = ""; + }; 8DA86C9B1BC1AE57006C50BC = { isa = PBXGroup; children = ( @@ -81,12 +111,8 @@ 8DA86CD11BC1B329006C50BC /* Model */, 8DA86CAA1BC1AE57006C50BC /* AppDelegate.h */, 8DA86CAB1BC1AE57006C50BC /* AppDelegate.m */, - 8DA86CD21BC1B8E4006C50BC /* ListsTableViewController.h */, - 8DA86CD31BC1B8E4006C50BC /* ListsTableViewController.m */, - 84EE9DFD1BC5A9CB00464904 /* TasksTableViewController.h */, - 84EE9DFE1BC5A9CB00464904 /* TasksTableViewController.m */, - 8DA86CD51BC1B904006C50BC /* ListCreationTableViewController.h */, - 8DA86CD61BC1B904006C50BC /* ListCreationTableViewController.m */, + 84EE9E501BC8A77300464904 /* List */, + 84EE9E511BC8A78200464904 /* Task */, 8DA86CB01BC1AE57006C50BC /* Main.storyboard */, 8DA86CB61BC1AE57006C50BC /* Assets.xcassets */, 8DA86CB81BC1AE57006C50BC /* LaunchScreen.storyboard */, @@ -151,6 +177,7 @@ TargetAttributes = { 8DA86CA31BC1AE57006C50BC = { CreatedOnToolsVersion = 7.0.1; + DevelopmentTeam = B4G65K7YME; }; }; }; @@ -192,11 +219,13 @@ files = ( 8DA86CB51BC1AE57006C50BC /* MarsWater.xcdatamodeld in Sources */, 8DA86CAC1BC1AE57006C50BC /* AppDelegate.m in Sources */, + 84EE9E541BC8CB3000464904 /* CustomTableViewCell.m in Sources */, 8DB2F6EA1BC1E75500E58E65 /* Task+CoreDataProperties.m in Sources */, + 5054F1271BC83C0B0047FE54 /* TasksTableViewController.m in Sources */, + 5054F1241BC83BFE0047FE54 /* TaskCreationTableViewController.m in Sources */, 8DA86CD41BC1B8E4006C50BC /* ListsTableViewController.m in Sources */, 8DB2F6E71BC1E75500E58E65 /* List.m in Sources */, 8DB2F6E91BC1E75500E58E65 /* Task.m in Sources */, - 84EE9DFF1BC5A9CB00464904 /* TasksTableViewController.m in Sources */, 8DA86CD71BC1B904006C50BC /* ListCreationTableViewController.m in Sources */, 8DA86CA91BC1AE57006C50BC /* main.m in Sources */, 8DB2F6E81BC1E75500E58E65 /* List+CoreDataProperties.m in Sources */, @@ -309,9 +338,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; INFOPLIST_FILE = MarsWater/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.mikekavouras.MarsWater; + PRODUCT_BUNDLE_IDENTIFIER = espinaljovanny; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,9 +350,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; INFOPLIST_FILE = MarsWater/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.mikekavouras.MarsWater; + PRODUCT_BUNDLE_IDENTIFIER = espinaljovanny; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/Contents.json b/MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/Contents.json new file mode 100644 index 0000000..08c75c0 --- /dev/null +++ b/MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "WhiteStar.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/WhiteStar.png b/MarsWater/MarsWater/Assets.xcassets/WhiteStar.imageset/WhiteStar.png new file mode 100644 index 0000000000000000000000000000000000000000..98e0cd6a5321562ae5bdd782464ba2918c4f0319 GIT binary patch literal 98360 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 literal 0 HcmV?d00001 diff --git a/MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/Contents.json b/MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/Contents.json new file mode 100644 index 0000000..506052f --- /dev/null +++ b/MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "YellowStar.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/YellowStar.png b/MarsWater/MarsWater/Assets.xcassets/YellowStar.imageset/YellowStar.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1bc8f22dd205b74733d3d2ff2963eaadbfe991 GIT binary patch literal 5936 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 literal 0 HcmV?d00001 diff --git a/MarsWater/MarsWater/Assets.xcassets/check.imageset/check.png b/MarsWater/MarsWater/Assets.xcassets/check.imageset/check.png index 62b424d48f3a340304382ad14c3e3f580715d360..3a2d3b0ce8f1a185079460a2d88f7270c81320dd 100644 GIT binary patch literal 5750 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 Kz5M!}(EkG0%_j5! delta 4890 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 + @@ -42,7 +43,7 @@ - + @@ -63,69 +64,339 @@ - - - - - - - - - - - - - - - - - - - + + - - + + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + + - + - + - + - + + + + + + + + + + + + + + + + + + @@ -133,7 +404,7 @@ - + @@ -170,76 +441,102 @@ - - + + - + + + + + + + @@ -254,18 +551,18 @@ - + - - - - + + + + - + @@ -285,4 +582,7 @@ + + + diff --git a/MarsWater/MarsWater/CustomTableViewCell.h b/MarsWater/MarsWater/CustomTableViewCell.h new file mode 100644 index 0000000..aff1e0c --- /dev/null +++ b/MarsWater/MarsWater/CustomTableViewCell.h @@ -0,0 +1,16 @@ +// +// CustomTableViewCell.h +// MarsWater +// +// Created by Diana Elezaj on 10/10/15. +// Copyright © 2015 Michael Kavouras. All rights reserved. +// + +#import + +@interface CustomTableViewCell : UITableViewCell + + + + +@end diff --git a/MarsWater/MarsWater/CustomTableViewCell.m b/MarsWater/MarsWater/CustomTableViewCell.m new file mode 100644 index 0000000..c5c999a --- /dev/null +++ b/MarsWater/MarsWater/CustomTableViewCell.m @@ -0,0 +1,23 @@ +// +// CustomTableViewCell.m +// MarsWater +// +// Created by Diana Elezaj on 10/10/15. +// Copyright © 2015 Michael Kavouras. All rights reserved. +// + +#import "CustomTableViewCell.h" + +@implementation CustomTableViewCell + +- (void)awakeFromNib { + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/MarsWater/MarsWater/List+CoreDataProperties.h b/MarsWater/MarsWater/List+CoreDataProperties.h index 9ce8d06..ccbccbd 100644 --- a/MarsWater/MarsWater/List+CoreDataProperties.h +++ b/MarsWater/MarsWater/List+CoreDataProperties.h @@ -18,7 +18,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nullable, nonatomic, retain) NSString *title; @property (nullable, nonatomic, retain) NSDate *createdAt; @property (nullable, nonatomic, retain) id color; -@property (nullable, nonatomic, retain) NSArray *task; +@property (nullable, nonatomic, retain) NSOrderedSet *task; @end diff --git a/MarsWater/MarsWater/ListCreationTableViewController.m b/MarsWater/MarsWater/ListCreationTableViewController.m index 7fc4c54..b442203 100644 --- a/MarsWater/MarsWater/ListCreationTableViewController.m +++ b/MarsWater/MarsWater/ListCreationTableViewController.m @@ -11,13 +11,13 @@ #import "List.h" #import "AppDelegate.h" -@interface ListCreationTableViewController () +@interface ListCreationTableViewController () @property (weak, nonatomic) IBOutlet UITextField *titleTextField; -@property (weak, nonatomic) IBOutlet UIButton *orangeButton; -@property (weak, nonatomic) IBOutlet UIButton *pinkButton; -@property (weak, nonatomic) IBOutlet UIButton *purpleButton; -@property (weak, nonatomic) IBOutlet UIButton *blueButton; +@property (weak, nonatomic) IBOutlet UIButton *redColor; +@property (weak, nonatomic) IBOutlet UIButton *orangeColor; +@property (weak, nonatomic) IBOutlet UIButton *blueColor; +@property (weak, nonatomic) IBOutlet UIButton *lightBlueColor; @property (nonatomic) UIImage *checkBackgroundImage; @@ -29,10 +29,9 @@ @implementation ListCreationTableViewController - (void)viewDidLoad { [super viewDidLoad]; - self.checkBackgroundImage = [UIImage imageNamed:@"check"]; - self.titleTextField.delegate = self; + [self setupNavigationBar]; AppDelegate *delegate = [UIApplication sharedApplication].delegate; @@ -48,21 +47,21 @@ - (void)setupNavigationBar { self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)]; + // set the right button to save } - (void)cancel { + + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + [delegate.managedObjectContext deleteObject:self.list]; [self dismissViewControllerAnimated:YES completion:nil]; } - - -// set the right button to save - - (void)save { if ([self.titleTextField.text isEqualToString:@""]) { - - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Ooops!" message:@"Please fill out the textfields" preferredStyle: UIAlertControllerStyleAlert]; + + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Ooops!" message:@"Please fill out the title field" preferredStyle: UIAlertControllerStyleAlert]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK action") @@ -74,10 +73,9 @@ - (void)save { [alert addAction:okAction]; [self presentViewController:alert animated:YES completion:nil]; - + } else { - self.list.title = self.titleTextField.text; self.list.createdAt = [NSDate date]; @@ -85,76 +83,52 @@ - (void)save { [delegate.managedObjectContext save:nil]; [self dismissViewControllerAnimated:YES completion:nil]; - } +} } -//# pragma mark - text field delegate methods -//-(BOOL) textFieldShouldReturn { -// -// [self.view endEditing:YES]; -// NSLog(@"enter"); -// [self save]; -// [self.tableView reloadData]; -// -// // NSString * query = self.searchTextField.text; -// -// // [self makeNewAPIRequestWithSearchTerm:query andLocation:textField.text callBackBlock:^{ -// // [self.tableView reloadData]; -// // }]; -// -// -// return YES; -//} - - - -- (IBAction)orangeButtonTapped:(UIButton *)sender { +- (IBAction)redColorSelected:(UIButton *)sender { self.list.color = sender.backgroundColor; - [self.orangeButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + [self.redColor setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; - [self.pinkButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.purpleButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.blueButton setBackgroundImage:nil forState:UIControlStateNormal]; - + [self.orangeColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.lightBlueColor setBackgroundImage:nil forState:UIControlStateNormal]; } - -- (IBAction)pinkButtonTapped:(UIButton *)sender { + +- (IBAction)orangeColorSelected:(UIButton *)sender { self.list.color = sender.backgroundColor; - [self.pinkButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; - - [self.orangeButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.purpleButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.blueButton setBackgroundImage:nil forState:UIControlStateNormal]; - } -- (IBAction)purpleButtonTapped:(UIButton *)sender { - + [self.orangeColor setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + [self.redColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.lightBlueColor setBackgroundImage:nil forState:UIControlStateNormal]; +} +- (IBAction)blueColorSelected:(UIButton *)sender { self.list.color = sender.backgroundColor; - [self.purpleButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; - [self.pinkButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.orangeButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.blueButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueColor setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + [self.orangeColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.redColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.lightBlueColor setBackgroundImage:nil forState:UIControlStateNormal]; } -- (IBAction)blueButtonTapped:(UIButton *)sender { - - +- (IBAction)lightBlueColorSelected:(UIButton *)sender { self.list.color = sender.backgroundColor; - [self.blueButton setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; - [self.pinkButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.purpleButton setBackgroundImage:nil forState:UIControlStateNormal]; - [self.orangeButton setBackgroundImage:nil forState:UIControlStateNormal]; + [self.lightBlueColor setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; + [self.orangeColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.blueColor setBackgroundImage:nil forState:UIControlStateNormal]; + [self.redColor setBackgroundImage:nil forState:UIControlStateNormal]; } - - +- (IBAction)colorButtonTapped:(UIButton *)sender { + self.list.color = sender.backgroundColor; +} @end diff --git a/MarsWater/MarsWater/ListsTableViewController.m b/MarsWater/MarsWater/ListsTableViewController.m index 8a2659c..f558480 100644 --- a/MarsWater/MarsWater/ListsTableViewController.m +++ b/MarsWater/MarsWater/ListsTableViewController.m @@ -8,6 +8,7 @@ #import #import "ListsTableViewController.h" +#import "TasksTableViewController.h" #import "AppDelegate.h" #import "List.h" @@ -63,7 +64,8 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N cell.backgroundColor = (UIColor *)list.color; cell.textLabel.text = list.title; cell.detailTextLabel.text = [list.createdAt description]; - + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + return cell; } @@ -72,5 +74,16 @@ - (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id) [self.tableView reloadData]; } +-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ + + if ([segue.identifier isEqualToString:@"taskSegue"]) { + + NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; + + TasksTableViewController *vc = segue.destinationViewController; + + vc.list = self.fetchedResultsController.fetchedObjects[indexPath.row]; + } +} @end diff --git a/MarsWater/MarsWater/TaskCreationTableViewController.h b/MarsWater/MarsWater/TaskCreationTableViewController.h new file mode 100644 index 0000000..32d0116 --- /dev/null +++ b/MarsWater/MarsWater/TaskCreationTableViewController.h @@ -0,0 +1,16 @@ +// +// TaskCreationTableViewController.h +// MarsWater +// +// Created by Diana Elezaj on 10/9/15. +// Copyright © 2015 Michael Kavouras. All rights reserved. +// + +#import +#import "List.h" + +@interface TaskCreationTableViewController : UITableViewController + +@property (nonatomic) List *list; + +@end diff --git a/MarsWater/MarsWater/TaskCreationTableViewController.m b/MarsWater/MarsWater/TaskCreationTableViewController.m new file mode 100644 index 0000000..8174167 --- /dev/null +++ b/MarsWater/MarsWater/TaskCreationTableViewController.m @@ -0,0 +1,168 @@ +// +// TaskCreationTableViewController.m +// MarsWater +// +// Created by Diana Elezaj on 10/9/15. +// Copyright © 2015 Michael Kavouras. All rights reserved. +// + +#import "TaskCreationTableViewController.h" +#import "Task.h" +#import "AppDelegate.h" + +@interface TaskCreationTableViewController () +@property (weak, nonatomic) IBOutlet UITextField *textField; +@property (nonatomic) Task *task; +@property (nonatomic) NSMutableOrderedSet *set; +@property (weak, nonatomic) IBOutlet UIButton *priority1; +@property (weak, nonatomic) IBOutlet UIButton *priority2; +@property (weak, nonatomic) IBOutlet UIButton *priority3; +@property (weak, nonatomic) IBOutlet UIButton *priority4; +@property (weak, nonatomic) IBOutlet UIButton *priority5; +@property (nonatomic) NSNumber *priorityNumber; +@property (weak, nonatomic) IBOutlet UIDatePicker *datePicker; +@property (nonatomic) UIImage *whiteStarBackground; +@property (nonatomic) UIImage *yellowStarBackground; + + + + + + +@end + +@implementation TaskCreationTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.whiteStarBackground = [UIImage imageNamed:@"WhiteStar"]; + self.yellowStarBackground = [UIImage imageNamed:@"YellowStar"]; + + self.priorityNumber = @1; + [self.priority1 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + + [self.datePicker setMinimumDate: [NSDate date]]; + + self.set = [self.list.task mutableCopy]; + + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + + self.task = [NSEntityDescription insertNewObjectForEntityForName:@"Task" inManagedObjectContext:delegate.managedObjectContext]; + + self.navigationItem.title = [NSString stringWithFormat:@"Add task to %@", self.list.title]; + +} + +- (IBAction)cancelTask:(UIBarButtonItem *)sender { +// AppDelegate *delegate = [UIApplication sharedApplication].delegate; +// [delegate.managedObjectContext deleteObject:self.list]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (IBAction)saveTask:(UIBarButtonItem *)sender { + + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + + if ([self.textField.text isEqualToString:@""]) { + + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Ooops!" message:@"Please fill out the title field" preferredStyle: UIAlertControllerStyleAlert]; + + UIAlertAction *okAction = [UIAlertAction + actionWithTitle:NSLocalizedString(@"OK", @"OK action") + style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action) + { + NSLog(@"OK action"); + }]; + + [alert addAction:okAction]; + [self presentViewController:alert animated:YES completion:nil]; + + } + else { + + + + + self.task.taskDescription = self.textField.text; + self.task.createdAt = [NSDate date]; + self.task.priority = self.priorityNumber; + self.task.dueAt = self.datePicker.date; + + + [self.set addObject:self.task]; + + self.list.task = self.set; + + [delegate.managedObjectContext save:nil]; +// NSLog(@"**** list%@", self.list); + NSLog(@"**** self.task.priority %@", self.task.priority); + NSLog(@"**** due %@", self.task.dueAt); + + + [self dismissViewControllerAnimated:YES completion:nil]; +} +} + + + +- (IBAction)priority1Selected:(UIButton *)sender { + self.priorityNumber = @1; + [self.priority1 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority2 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + [self.priority3 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + [self.priority4 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + [self.priority5 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + + +} +- (IBAction)priority2Selected:(UIButton *)sender { + self.priorityNumber = @2; + [self.priority1 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority2 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority3 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + [self.priority4 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + [self.priority5 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; +} +- (IBAction)priority3Selected:(UIButton *)sender { + self.priorityNumber = @3; + [self.priority1 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority2 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority3 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority4 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; + [self.priority5 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; +} +- (IBAction)priority4Selected:(UIButton *)sender { + self.priorityNumber = @4; + [self.priority1 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority2 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority3 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority4 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority5 setBackgroundImage:self.whiteStarBackground forState:UIControlStateNormal]; +} +- (IBAction)priority5Selected:(UIButton *)sender { + self.priorityNumber = @5; + [self.priority1 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority2 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority3 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority4 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; + [self.priority5 setBackgroundImage:self.yellowStarBackground forState:UIControlStateNormal]; +} + + + + + + + + + + + + + + + + +@end diff --git a/MarsWater/MarsWater/TasksTableViewController.h b/MarsWater/MarsWater/TasksTableViewController.h index 0ea62f8..8c201b5 100644 --- a/MarsWater/MarsWater/TasksTableViewController.h +++ b/MarsWater/MarsWater/TasksTableViewController.h @@ -2,13 +2,14 @@ // TasksTableViewController.h // MarsWater // -// Created by Diana Elezaj on 10/7/15. +// Created by Diana Elezaj on 10/9/15. // Copyright © 2015 Michael Kavouras. All rights reserved. // #import -#import "Task.h" +#import "List.h" @interface TasksTableViewController : UITableViewController -@property (nonatomic) NSMutableArray *tasks; + +@property (nonatomic) List *list; @end diff --git a/MarsWater/MarsWater/TasksTableViewController.m b/MarsWater/MarsWater/TasksTableViewController.m index 6a73490..5ac80e5 100644 --- a/MarsWater/MarsWater/TasksTableViewController.m +++ b/MarsWater/MarsWater/TasksTableViewController.m @@ -2,11 +2,14 @@ // TasksTableViewController.m // MarsWater // -// Created by Diana Elezaj on 10/7/15. +// Created by Diana Elezaj on 10/9/15. // Copyright © 2015 Michael Kavouras. All rights reserved. // #import "TasksTableViewController.h" +#import "Task.h" +#import "TaskCreationTableViewController.h" +#import "CustomTableViewCell.h" @interface TasksTableViewController () @@ -16,99 +19,50 @@ @implementation TasksTableViewController - (void)viewDidLoad { [super viewDidLoad]; - [self setupNavigationBar]; + self.navigationItem.title = self.list.title; + [self.tableView reloadData]; - // Uncomment the following line to preserve selection between presentations. - // self.clearsSelectionOnViewWillAppear = NO; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} - - - -- (void)setupNavigationBar { - - self.navigationItem.title = @"Your List"; - - self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)]; - -// self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)]; - -} -- (void)cancel { - [self dismissViewControllerAnimated:YES completion:nil]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. +-(void)viewWillAppear:(BOOL)animated{ + [self.tableView reloadData]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { -#warning Incomplete implementation, return the number of sections - return 0; + return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { -#warning Incomplete implementation, return the number of rows - return 0; + return self.list.task.count; } -/* + - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath]; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TaskCellIdentifier" forIndexPath:indexPath]; - // Configure the cell... + Task *task = self.list.task[indexPath.row]; + cell.textLabel.text = task.taskDescription; +// cell.detailTextLabel.text = [task.createdAt description]; + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"MM/dd/yyyy"]; + cell.detailTextLabel.text = [NSString stringWithFormat:@"Due at: %@",[dateFormatter stringFromDate:task.dueAt] ]; + + + NSLog(@"task %@", task); return cell; } -*/ -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; - } else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { -} -*/ - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the item to be re-orderable. - return YES; -} -*/ - -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ +-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ + + UINavigationController *navController = segue.destinationViewController; + + TaskCreationTableViewController *taskCTVC = (TaskCreationTableViewController *)([navController viewControllers][0]); + + + taskCTVC.list = self.list; + } @end From d19dbfb2bd5ab1d5277af2836e5be11efeb7b8a4 Mon Sep 17 00:00:00 2001 From: Diana Date: Sat, 10 Oct 2015 01:31:41 -0400 Subject: [PATCH 3/6] Added Custom cells --- MarsWater/.DS_Store | Bin 6148 -> 6148 bytes .../MarsWater/Base.lproj/Main.storyboard | 69 +++++++++++++----- MarsWater/MarsWater/CustomTableViewCell.h | 4 + .../MarsWater/ListsTableViewController.m | 10 ++- .../MarsWater/TasksTableViewController.m | 36 +++++++-- 5 files changed, 90 insertions(+), 29 deletions(-) diff --git a/MarsWater/.DS_Store b/MarsWater/.DS_Store index 9ace2f0a149aa7c4c0cf1e897e860842dbd24c49..b9b716d7e7caaec6427bf1c563d06e562170bc54 100644 GIT binary patch delta 29 lcmZoMXffE3#>DhWVzM5S*5pY{O^gbY7cyyYc3?gt0sxV%32OiV delta 29 lcmZoMXffE3#>Djg#AH1tt;v&^nivfxFJ#i*?7)0P1OT9R3NQcw diff --git a/MarsWater/MarsWater/Base.lproj/Main.storyboard b/MarsWater/MarsWater/Base.lproj/Main.storyboard index 93aad57..7ea013b 100644 --- a/MarsWater/MarsWater/Base.lproj/Main.storyboard +++ b/MarsWater/MarsWater/Base.lproj/Main.storyboard @@ -27,7 +27,7 @@ - + @@ -73,50 +73,72 @@ + + + + + + + + + + + - + @@ -127,6 +149,7 @@ + @@ -135,6 +158,12 @@ + + + + + + @@ -162,7 +191,7 @@ - + @@ -181,7 +210,7 @@ - + @@ -261,7 +290,7 @@ - + @@ -419,7 +448,7 @@ - + diff --git a/MarsWater/MarsWater/CustomTableViewCell.h b/MarsWater/MarsWater/CustomTableViewCell.h index aff1e0c..ecf9239 100644 --- a/MarsWater/MarsWater/CustomTableViewCell.h +++ b/MarsWater/MarsWater/CustomTableViewCell.h @@ -10,6 +10,10 @@ @interface CustomTableViewCell : UITableViewCell +@property (weak, nonatomic) IBOutlet UILabel *titleLabel; +@property (weak, nonatomic) IBOutlet UILabel *dueAtLabel; +@property (weak, nonatomic) IBOutlet UILabel *priorityLabel; +@property (weak, nonatomic) IBOutlet UILabel *createdAtLabel; diff --git a/MarsWater/MarsWater/ListsTableViewController.m b/MarsWater/MarsWater/ListsTableViewController.m index f558480..9645ff6 100644 --- a/MarsWater/MarsWater/ListsTableViewController.m +++ b/MarsWater/MarsWater/ListsTableViewController.m @@ -63,9 +63,17 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N List *list = self.fetchedResultsController.fetchedObjects[indexPath.row]; cell.backgroundColor = (UIColor *)list.color; cell.textLabel.text = list.title; - cell.detailTextLabel.text = [list.createdAt description]; +// cell.detailTextLabel.text = [list.createdAt description]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + NSDateFormatter *createdDateFormatter = [[NSDateFormatter alloc] init]; + [createdDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; + + cell.detailTextLabel.text = [NSString stringWithFormat:@"Created at: %@",[createdDateFormatter stringFromDate:list.createdAt ]]; + + + + return cell; } diff --git a/MarsWater/MarsWater/TasksTableViewController.m b/MarsWater/MarsWater/TasksTableViewController.m index 5ac80e5..d7f95f8 100644 --- a/MarsWater/MarsWater/TasksTableViewController.m +++ b/MarsWater/MarsWater/TasksTableViewController.m @@ -11,7 +11,9 @@ #import "TaskCreationTableViewController.h" #import "CustomTableViewCell.h" -@interface TasksTableViewController () +@interface TasksTableViewController () + +@property (nonatomic) NSFetchedResultsController *fetchedResultsController; @end @@ -22,6 +24,12 @@ - (void)viewDidLoad { self.navigationItem.title = self.list.title; [self.tableView reloadData]; + + + + + + } -(void)viewWillAppear:(BOOL)animated{ @@ -40,20 +48,32 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TaskCellIdentifier" forIndexPath:indexPath]; + CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TaskCellIdentifier" forIndexPath:indexPath]; Task *task = self.list.task[indexPath.row]; - cell.textLabel.text = task.taskDescription; -// cell.detailTextLabel.text = [task.createdAt description]; - NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setDateFormat:@"MM/dd/yyyy"]; - cell.detailTextLabel.text = [NSString stringWithFormat:@"Due at: %@",[dateFormatter stringFromDate:task.dueAt] ]; + cell.titleLabel.text = task.taskDescription ; + + + NSDateFormatter *createdDateFormatter = [[NSDateFormatter alloc] init]; + [createdDateFormatter setDateFormat:@"MM/dd/yyyy"]; + + cell.createdAtLabel.text = [NSString stringWithFormat:@"Created at: %@",[createdDateFormatter stringFromDate:task.createdAt] ]; + + NSDateFormatter *dueAtDateFormatter = [[NSDateFormatter alloc] init]; + [dueAtDateFormatter setDateFormat:@"MM/dd/yyyy"]; + + cell.dueAtLabel.text = [NSString stringWithFormat:@"Due at: %@",[dueAtDateFormatter stringFromDate:task.dueAt] ]; + + cell.priorityLabel.text = [NSString stringWithFormat:@"Priority: %@",task.priority];; - NSLog(@"task %@", task); return cell; } +- (IBAction)segmentSelected:(UISegmentedControl *)sender { + [self.tableView reloadData]; + +} -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ From 76a291c00240910ae3d4e272c3771208995e96c9 Mon Sep 17 00:00:00 2001 From: Diana Date: Sat, 10 Oct 2015 14:18:25 -0400 Subject: [PATCH 4/6] Added segmented control --- MarsWater/.DS_Store | Bin 6148 -> 6148 bytes .../MarsWater/Base.lproj/Main.storyboard | 8 +- .../ListCreationTableViewController.m | 2 + .../TaskCreationTableViewController.m | 11 ++- .../MarsWater/TasksTableViewController.m | 85 +++++++++++++++--- 5 files changed, 88 insertions(+), 18 deletions(-) diff --git a/MarsWater/.DS_Store b/MarsWater/.DS_Store index b9b716d7e7caaec6427bf1c563d06e562170bc54..a8162249341e6e566ab7857f3be3d0d6457bba53 100644 GIT binary patch delta 30 mcmZoMXffE3%EZiQxpcA~lh))(OihdplNT~+Z+2ilA_4%Eg9)er delta 30 mcmZoMXffE3%EZj@N@B7elh))(OihdmlNT~+Z+2ilA_4%EE(vP@ diff --git a/MarsWater/MarsWater/Base.lproj/Main.storyboard b/MarsWater/MarsWater/Base.lproj/Main.storyboard index 7ea013b..c9ba275 100644 --- a/MarsWater/MarsWater/Base.lproj/Main.storyboard +++ b/MarsWater/MarsWater/Base.lproj/Main.storyboard @@ -74,9 +74,10 @@ - + + @@ -86,7 +87,7 @@ - + @@ -178,6 +179,9 @@ + + + diff --git a/MarsWater/MarsWater/ListCreationTableViewController.m b/MarsWater/MarsWater/ListCreationTableViewController.m index b442203..ec79579 100644 --- a/MarsWater/MarsWater/ListCreationTableViewController.m +++ b/MarsWater/MarsWater/ListCreationTableViewController.m @@ -54,6 +54,8 @@ - (void)cancel { AppDelegate *delegate = [UIApplication sharedApplication].delegate; [delegate.managedObjectContext deleteObject:self.list]; + + [self dismissViewControllerAnimated:YES completion:nil]; } diff --git a/MarsWater/MarsWater/TaskCreationTableViewController.m b/MarsWater/MarsWater/TaskCreationTableViewController.m index 8174167..ecfe116 100644 --- a/MarsWater/MarsWater/TaskCreationTableViewController.m +++ b/MarsWater/MarsWater/TaskCreationTableViewController.m @@ -55,8 +55,11 @@ - (void)viewDidLoad { } - (IBAction)cancelTask:(UIBarButtonItem *)sender { -// AppDelegate *delegate = [UIApplication sharedApplication].delegate; -// [delegate.managedObjectContext deleteObject:self.list]; + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + [delegate.managedObjectContext deleteObject:self.task]; + + [self.tableView reloadData]; + [self dismissViewControllerAnimated:YES completion:nil]; } @@ -99,9 +102,11 @@ - (IBAction)saveTask:(UIBarButtonItem *)sender { // NSLog(@"**** list%@", self.list); NSLog(@"**** self.task.priority %@", self.task.priority); NSLog(@"**** due %@", self.task.dueAt); - + + [self.tableView reloadData]; [self dismissViewControllerAnimated:YES completion:nil]; + } } diff --git a/MarsWater/MarsWater/TasksTableViewController.m b/MarsWater/MarsWater/TasksTableViewController.m index d7f95f8..55bee8d 100644 --- a/MarsWater/MarsWater/TasksTableViewController.m +++ b/MarsWater/MarsWater/TasksTableViewController.m @@ -5,16 +5,21 @@ // Created by Diana Elezaj on 10/9/15. // Copyright © 2015 Michael Kavouras. All rights reserved. // +#import #import "TasksTableViewController.h" #import "Task.h" #import "TaskCreationTableViewController.h" #import "CustomTableViewCell.h" +#import "AppDelegate.h" + @interface TasksTableViewController () @property (nonatomic) NSFetchedResultsController *fetchedResultsController; - +@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl; +@property (nonatomic) NSSortDescriptor *sort; +@property (nonatomic) Task *task; @end @implementation TasksTableViewController @@ -22,17 +27,16 @@ @implementation TasksTableViewController - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = self.list.title; - [self.tableView reloadData]; + [self sorting]; - - - - - + [self.tableView reloadData]; } -(void)viewWillAppear:(BOOL)animated{ + [super viewWillAppear:animated]; + NSLog(@"will appear"); + [self.tableView reloadData]; } @@ -43,38 +47,93 @@ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.list.task.count; + return self.fetchedResultsController.fetchedObjects.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TaskCellIdentifier" forIndexPath:indexPath]; - Task *task = self.list.task[indexPath.row]; + self.task = self.fetchedResultsController.fetchedObjects[indexPath.row]; - cell.titleLabel.text = task.taskDescription ; + cell.titleLabel.text = _task.taskDescription ; NSDateFormatter *createdDateFormatter = [[NSDateFormatter alloc] init]; [createdDateFormatter setDateFormat:@"MM/dd/yyyy"]; - cell.createdAtLabel.text = [NSString stringWithFormat:@"Created at: %@",[createdDateFormatter stringFromDate:task.createdAt] ]; + cell.createdAtLabel.text = [NSString stringWithFormat:@"Created at: %@",[createdDateFormatter stringFromDate:_task.createdAt] ]; NSDateFormatter *dueAtDateFormatter = [[NSDateFormatter alloc] init]; [dueAtDateFormatter setDateFormat:@"MM/dd/yyyy"]; - cell.dueAtLabel.text = [NSString stringWithFormat:@"Due at: %@",[dueAtDateFormatter stringFromDate:task.dueAt] ]; + cell.dueAtLabel.text = [NSString stringWithFormat:@"Due at: %@",[dueAtDateFormatter stringFromDate:_task.dueAt] ]; - cell.priorityLabel.text = [NSString stringWithFormat:@"Priority: %@",task.priority];; + cell.priorityLabel.text = [NSString stringWithFormat:@"Priority: %@",_task.priority];; + + NSLog(@"priority %@", _task.priority); return cell; } + + - (IBAction)segmentSelected:(UISegmentedControl *)sender { + NSLog(@"phuuu"); + + [self sorting]; + [self.tableView reloadData]; +} + +-(void) sorting { + + + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + + // 1) create an instance of NSFetchRequest with an entity name + NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Task"]; + + + // 2) create a sort descriptor + + if (self.segmentedControl.selectedSegmentIndex == 0) { + self.sort = [NSSortDescriptor sortDescriptorWithKey:@"taskDescription" ascending:YES]; + + } + else if (self.segmentedControl.selectedSegmentIndex == 1) { + + self.sort = [NSSortDescriptor sortDescriptorWithKey:@"priority" ascending:NO]; + + } + else + self.sort = [NSSortDescriptor sortDescriptorWithKey:@"dueAt" ascending:YES]; + + + + + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list.title = %@", self.list.title]; + + // 3) set the sortDescriptors on the fetchRequest + fetchRequest.sortDescriptors = @[self.sort]; + fetchRequest.predicate = predicate; + + // 4) create a fetchedResultsController with a fetchRequest and a managedObjectContext, + self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:delegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; + + self.fetchedResultsController.delegate = self; + + [self.fetchedResultsController performFetch:nil]; + + [self.tableView reloadData]; } + + + + + -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ UINavigationController *navController = segue.destinationViewController; From 2666c35302ed405220df4e77aa012e66f483aa0d Mon Sep 17 00:00:00 2001 From: Diana Date: Sun, 11 Oct 2015 11:28:59 -0400 Subject: [PATCH 5/6] Changed UI Color --- MarsWater/.DS_Store | Bin 6148 -> 6148 bytes .../MarsWater/Base.lproj/Main.storyboard | 21 +++++- MarsWater/MarsWater/CustomTableViewCell.h | 2 - MarsWater/MarsWater/CustomTableViewCell.m | 2 - .../ListCreationTableViewController.m | 36 +++++------ .../MarsWater/ListsTableViewController.m | 56 +++++++++------- .../TaskCreationTableViewController.m | 61 +++++------------- .../MarsWater/TasksTableViewController.m | 30 +-------- 8 files changed, 88 insertions(+), 120 deletions(-) diff --git a/MarsWater/.DS_Store b/MarsWater/.DS_Store index a8162249341e6e566ab7857f3be3d0d6457bba53..905bca93642bcafb083232c3cb20390e9d324513 100644 GIT binary patch delta 30 mcmZoMXffE3%EZj@N`A5)lh))(OihdilNT~+Z+2ilA_4%FS_y&x delta 30 mcmZoMXffE3%EZiQxpcA~lh))(OihdplNT~+Z+2ilA_4%Eg9)er diff --git a/MarsWater/MarsWater/Base.lproj/Main.storyboard b/MarsWater/MarsWater/Base.lproj/Main.storyboard index c9ba275..65697e6 100644 --- a/MarsWater/MarsWater/Base.lproj/Main.storyboard +++ b/MarsWater/MarsWater/Base.lproj/Main.storyboard @@ -14,9 +14,22 @@ + + + + + + + + + + + + + - + @@ -54,11 +67,15 @@ + + + + @@ -81,6 +98,7 @@ + @@ -174,6 +192,7 @@ + diff --git a/MarsWater/MarsWater/CustomTableViewCell.h b/MarsWater/MarsWater/CustomTableViewCell.h index ecf9239..d8021d5 100644 --- a/MarsWater/MarsWater/CustomTableViewCell.h +++ b/MarsWater/MarsWater/CustomTableViewCell.h @@ -15,6 +15,4 @@ @property (weak, nonatomic) IBOutlet UILabel *priorityLabel; @property (weak, nonatomic) IBOutlet UILabel *createdAtLabel; - - @end diff --git a/MarsWater/MarsWater/CustomTableViewCell.m b/MarsWater/MarsWater/CustomTableViewCell.m index c5c999a..9efe412 100644 --- a/MarsWater/MarsWater/CustomTableViewCell.m +++ b/MarsWater/MarsWater/CustomTableViewCell.m @@ -16,8 +16,6 @@ - (void)awakeFromNib { - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; - - // Configure the view for the selected state } @end diff --git a/MarsWater/MarsWater/ListCreationTableViewController.m b/MarsWater/MarsWater/ListCreationTableViewController.m index ec79579..2b78ef3 100644 --- a/MarsWater/MarsWater/ListCreationTableViewController.m +++ b/MarsWater/MarsWater/ListCreationTableViewController.m @@ -30,8 +30,9 @@ @implementation ListCreationTableViewController - (void)viewDidLoad { [super viewDidLoad]; self.checkBackgroundImage = [UIImage imageNamed:@"check"]; - + self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.752 green:0.098 blue:0 alpha:1]; + [self setupNavigationBar]; AppDelegate *delegate = [UIApplication sharedApplication].delegate; @@ -44,18 +45,14 @@ - (void)setupNavigationBar { self.navigationItem.title = @"Create new list"; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)]; - + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)]; - - // set the right button to save } - (void)cancel { AppDelegate *delegate = [UIApplication sharedApplication].delegate; [delegate.managedObjectContext deleteObject:self.list]; - - [self dismissViewControllerAnimated:YES completion:nil]; } @@ -75,21 +72,20 @@ - (void)save { [alert addAction:okAction]; [self presentViewController:alert animated:YES completion:nil]; - } else { - self.list.title = self.titleTextField.text; - self.list.createdAt = [NSDate date]; - - AppDelegate *delegate = [UIApplication sharedApplication].delegate; - [delegate.managedObjectContext save:nil]; - - [self dismissViewControllerAnimated:YES completion:nil]; -} + self.list.title = self.titleTextField.text; + self.list.createdAt = [NSDate date]; + + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + [delegate.managedObjectContext save:nil]; + + [self dismissViewControllerAnimated:YES completion:nil]; + } } - (IBAction)redColorSelected:(UIButton *)sender { - + NSLog(@"red"); self.list.color = sender.backgroundColor; [self.redColor setBackgroundImage:self.checkBackgroundImage forState:UIControlStateNormal]; @@ -109,6 +105,7 @@ - (IBAction)orangeColorSelected:(UIButton *)sender { [self.blueColor setBackgroundImage:nil forState:UIControlStateNormal]; [self.lightBlueColor setBackgroundImage:nil forState:UIControlStateNormal]; } + - (IBAction)blueColorSelected:(UIButton *)sender { self.list.color = sender.backgroundColor; @@ -118,6 +115,7 @@ - (IBAction)blueColorSelected:(UIButton *)sender { [self.redColor setBackgroundImage:nil forState:UIControlStateNormal]; [self.lightBlueColor setBackgroundImage:nil forState:UIControlStateNormal]; } + - (IBAction)lightBlueColorSelected:(UIButton *)sender { self.list.color = sender.backgroundColor; @@ -127,10 +125,6 @@ - (IBAction)lightBlueColorSelected:(UIButton *)sender { [self.blueColor setBackgroundImage:nil forState:UIControlStateNormal]; [self.redColor setBackgroundImage:nil forState:UIControlStateNormal]; } - - -- (IBAction)colorButtonTapped:(UIButton *)sender { - self.list.color = sender.backgroundColor; -} + @end diff --git a/MarsWater/MarsWater/ListsTableViewController.m b/MarsWater/MarsWater/ListsTableViewController.m index 9645ff6..747d710 100644 --- a/MarsWater/MarsWater/ListsTableViewController.m +++ b/MarsWater/MarsWater/ListsTableViewController.m @@ -15,6 +15,8 @@ @interface ListsTableViewController () @property (nonatomic) NSFetchedResultsController *fetchedResultsController; +@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl; +@property (nonatomic) NSSortDescriptor *sort; @end @@ -22,30 +24,15 @@ @implementation ListsTableViewController - (void)viewDidLoad { [super viewDidLoad]; - - - AppDelegate *delegate = [UIApplication sharedApplication].delegate; - - // 1) create an instance of NSFetchRequest with an entity name - NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"List"]; - - - // 2) create a sort descriptor - NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"createdAt" ascending:NO]; - - // 3) set the sortDescriptors on the fetchRequest - fetchRequest.sortDescriptors = @[sort]; - - // 4) create a fetchedResultsController with a fetchRequest and a managedObjectContext, - self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:delegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; - - self.fetchedResultsController.delegate = self; - - [self.fetchedResultsController performFetch:nil]; - + [self sorting]; [self.tableView reloadData]; } +-(void) viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self sorting]; + [self.tableView reloadData]; +} #pragma mark - Table view data source @@ -63,18 +50,41 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N List *list = self.fetchedResultsController.fetchedObjects[indexPath.row]; cell.backgroundColor = (UIColor *)list.color; cell.textLabel.text = list.title; -// cell.detailTextLabel.text = [list.createdAt description]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; NSDateFormatter *createdDateFormatter = [[NSDateFormatter alloc] init]; [createdDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; cell.detailTextLabel.text = [NSString stringWithFormat:@"Created at: %@",[createdDateFormatter stringFromDate:list.createdAt ]]; + + return cell; +} + + +- (IBAction)segmentedControlChanged:(UISegmentedControl *)sender { + [self sorting]; + [self.tableView reloadData]; +} + +-(void) sorting { + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"List"]; + if (self.segmentedControl.selectedSegmentIndex == 0) { + self.sort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES]; + } + else + self.sort = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:NO]; - return cell; + fetchRequest.sortDescriptors = @[self.sort]; + + self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:delegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; + + self.fetchedResultsController.delegate = self; + + [self.fetchedResultsController performFetch:nil]; } - (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { diff --git a/MarsWater/MarsWater/TaskCreationTableViewController.m b/MarsWater/MarsWater/TaskCreationTableViewController.m index ecfe116..6bbe27c 100644 --- a/MarsWater/MarsWater/TaskCreationTableViewController.m +++ b/MarsWater/MarsWater/TaskCreationTableViewController.m @@ -19,14 +19,10 @@ @interface TaskCreationTableViewController () Date: Sun, 11 Oct 2015 11:48:28 -0400 Subject: [PATCH 6/6] Added Edit/Delete button to Lists --- MarsWater/.DS_Store | Bin 6148 -> 6148 bytes .../MarsWater/ListsTableViewController.m | 32 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/MarsWater/.DS_Store b/MarsWater/.DS_Store index 905bca93642bcafb083232c3cb20390e9d324513..62008666feaa96bd881cdc1c33a89a7fbc3892c7 100644 GIT binary patch delta 18 ZcmZoMXffE3&ct|PvL2Jx=1ELNq5wS81_l5C delta 18 ZcmZoMXffE3&crA`S&vC;^CYGsQ2;hM1zi9D diff --git a/MarsWater/MarsWater/ListsTableViewController.m b/MarsWater/MarsWater/ListsTableViewController.m index 747d710..ea4a646 100644 --- a/MarsWater/MarsWater/ListsTableViewController.m +++ b/MarsWater/MarsWater/ListsTableViewController.m @@ -17,6 +17,7 @@ @interface ListsTableViewController () @property (nonatomic) NSFetchedResultsController *fetchedResultsController; @property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl; @property (nonatomic) NSSortDescriptor *sort; +@property (nonatomic) List *list; @end @@ -26,6 +27,10 @@ - (void)viewDidLoad { [super viewDidLoad]; [self sorting]; [self.tableView reloadData]; + self.navigationItem.leftBarButtonItem = self.editButtonItem; + + self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.752 green:0.098 blue:0 alpha:1]; + } -(void) viewWillAppear:(BOOL)animated { @@ -103,5 +108,32 @@ -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ vc.list = self.fetchedResultsController.fetchedObjects[indexPath.row]; } } + + +//delegate method that allows for editing when the edit button is clicked + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + + if (editingStyle == UITableViewCellEditingStyleDelete) + { +// AppDelegate *delegate = [UIApplication sharedApplication].delegate; + +// delegate.managedObjectContext = [self.fetchedResultsController managedObjectContext]; + +// [delegate.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; + + AppDelegate *delegate = [UIApplication sharedApplication].delegate; + [delegate.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; + + + [self.tableView reloadData]; + } + + + +} + + + @end