From 0e37ae8d4ee16ce18c3f97bcf9c4fed237316173 Mon Sep 17 00:00:00 2001 From: William Cho Date: Tue, 10 Mar 2015 16:01:59 -0300 Subject: [PATCH 1/4] bronze #1 --- iTunesSearch/Entidades/Filme.h | 2 ++ iTunesSearch/TableViewCell.h | 1 + iTunesSearch/TableViewCell.xib | 20 +++++++++++++++----- iTunesSearch/TableViewController.m | 5 +++-- iTunesSearch/iTunesManager.m | 10 +++++----- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/iTunesSearch/Entidades/Filme.h b/iTunesSearch/Entidades/Filme.h index eb126dc..724dbbc 100644 --- a/iTunesSearch/Entidades/Filme.h +++ b/iTunesSearch/Entidades/Filme.h @@ -16,5 +16,7 @@ @property (nonatomic, strong) NSString *duracao; @property (nonatomic, strong) NSString *genero; @property (nonatomic, strong) NSString *pais; +@property (nonatomic, strong) NSString *artworkUrl; + @end diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index b630349..8fbc832 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -12,6 +12,7 @@ @property (weak, nonatomic) IBOutlet UILabel *nome; @property (weak, nonatomic) IBOutlet UILabel *tipo; +@property (weak, nonatomic) IBOutlet UILabel *genero; @end diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index bf8bd3f..5c0c988 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -1,5 +1,5 @@ - + @@ -14,29 +14,39 @@ - - + + - + + + + diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index f689980..1802b6a 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -54,8 +54,9 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS Filme *filme = [midias objectAtIndex:indexPath.row]; - [celula.nome setText:filme.nome]; - [celula.tipo setText:@"Filme"]; + [celula.nome setText:filme.nome]; + [celula.tipo setText:@"Filme"]; + [celula.genero setText:filme.genero]; return celula; } diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index e2babda..4a19e88 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -51,11 +51,11 @@ - (NSArray *)buscarMidias:(NSString *)termo { for (NSDictionary *item in resultados) { Filme *filme = [[Filme alloc] init]; - [filme setNome:[item objectForKey:@"trackName"]]; - [filme setTrackId:[item objectForKey:@"trackId"]]; - [filme setArtista:[item objectForKey:@"artistName"]]; - [filme setDuracao:[item objectForKey:@"trackTimeMillis"]]; - [filme setGenero:[item objectForKey:@"primaryGenreName"]]; + [filme setNome :[item objectForKey:@"trackName"]]; + [filme setTrackId :[item objectForKey:@"trackId"]]; + [filme setArtista :[item objectForKey:@"artistName"]]; + [filme setDuracao :[item objectForKey:@"trackTimeMillis"]]; + [filme setGenero :[item objectForKey:@"primaryGenreName"]]; [filme setPais:[item objectForKey:@"country"]]; [filmes addObject:filme]; } From cf3c896eaa469904cf8c4fa887c306cc6a5962c2 Mon Sep 17 00:00:00 2001 From: William Cho Date: Tue, 10 Mar 2015 17:42:08 -0300 Subject: [PATCH 2/4] bronze 2, ignorar arquivos Search... --- iTunesSearch.xcodeproj/project.pbxproj | 16 +++++++++ iTunesSearch/AppDelegate.m | 10 ++++++ iTunesSearch/SearchData.h | 16 +++++++++ iTunesSearch/SearchData.m | 14 ++++++++ iTunesSearch/SearchView.xib | 43 +++++++++++++++++++++++ iTunesSearch/SearchViewController.h | 19 +++++++++++ iTunesSearch/SearchViewController.m | 27 +++++++++++++++ iTunesSearch/TableView.xib | 4 +-- iTunesSearch/TableViewController.h | 1 - iTunesSearch/TableViewController.m | 47 +++++++++++++++++++++++--- iTunesSearch/iTunesManager.m | 1 + 11 files changed, 191 insertions(+), 7 deletions(-) create mode 100644 iTunesSearch/SearchData.h create mode 100644 iTunesSearch/SearchData.m create mode 100644 iTunesSearch/SearchView.xib create mode 100644 iTunesSearch/SearchViewController.h create mode 100644 iTunesSearch/SearchViewController.m diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 79e06d7..b45ea6f 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 8FC0F5481AAF7CCE0087D8E5 /* SearchView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8FC0F5471AAF7CCE0087D8E5 /* SearchView.xib */; }; + 8FC0F54B1AAF7CF90087D8E5 /* SearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC0F54A1AAF7CF90087D8E5 /* SearchViewController.m */; }; + 8FC0F54E1AAF82F30087D8E5 /* SearchData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */; }; 92C21CB61AAE757A0052ABE6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CB51AAE757A0052ABE6 /* main.m */; }; 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CB81AAE757A0052ABE6 /* AppDelegate.m */; }; 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CBB1AAE757A0052ABE6 /* TableViewController.m */; }; @@ -30,6 +33,11 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 8FC0F5471AAF7CCE0087D8E5 /* SearchView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchView.xib; sourceTree = ""; }; + 8FC0F5491AAF7CF90087D8E5 /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = ""; }; + 8FC0F54A1AAF7CF90087D8E5 /* SearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchViewController.m; sourceTree = ""; }; + 8FC0F54C1AAF82F30087D8E5 /* SearchData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchData.h; sourceTree = ""; }; + 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchData.m; sourceTree = ""; }; 92C21CB01AAE757A0052ABE6 /* iTunesSearch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iTunesSearch.app; sourceTree = BUILT_PRODUCTS_DIR; }; 92C21CB41AAE757A0052ABE6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 92C21CB51AAE757A0052ABE6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -101,6 +109,9 @@ 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */, 92C21CC01AAE757A0052ABE6 /* Images.xcassets */, 92C21CB31AAE757A0052ABE6 /* Supporting Files */, + 8FC0F5471AAF7CCE0087D8E5 /* SearchView.xib */, + 8FC0F5491AAF7CF90087D8E5 /* SearchViewController.h */, + 8FC0F54A1AAF7CF90087D8E5 /* SearchViewController.m */, ); path = iTunesSearch; sourceTree = ""; @@ -146,6 +157,8 @@ children = ( 92C21CE61AAE858E0052ABE6 /* Filme.h */, 92C21CE71AAE858E0052ABE6 /* Filme.m */, + 8FC0F54C1AAF82F30087D8E5 /* SearchData.h */, + 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */, ); name = Entidades; sourceTree = ""; @@ -230,6 +243,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8FC0F5481AAF7CCE0087D8E5 /* SearchView.xib in Resources */, 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */, 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */, 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */, @@ -256,6 +270,8 @@ 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */, 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */, 92C21CB61AAE757A0052ABE6 /* main.m in Sources */, + 8FC0F54B1AAF7CF90087D8E5 /* SearchViewController.m in Sources */, + 8FC0F54E1AAF82F30087D8E5 /* SearchData.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iTunesSearch/AppDelegate.m b/iTunesSearch/AppDelegate.m index d513fd8..0974c91 100644 --- a/iTunesSearch/AppDelegate.m +++ b/iTunesSearch/AppDelegate.m @@ -10,6 +10,7 @@ #warning Classe importada para uso no metodo de inicilizacao da App #import "TableViewController.h" +#import "SearchViewController.h"; @interface AppDelegate () @@ -27,9 +28,18 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( #warning Adicionado codigo para iniciar com a interface do TableView // TableViewController *tvc = [[TableViewController alloc] initWithNibName:@"TableView" bundle:nil]; + + //* TableViewController *tvc = [[TableViewController alloc] init]; [self.window setRootViewController:tvc]; + /*/ + //Iniciando com SearchView + SearchViewController *svc = [[SearchViewController alloc] init]; + [self.window setRootViewController:svc]; + //*/ + [self.window makeKeyAndVisible]; + return YES; } diff --git a/iTunesSearch/SearchData.h b/iTunesSearch/SearchData.h new file mode 100644 index 0000000..40693d8 --- /dev/null +++ b/iTunesSearch/SearchData.h @@ -0,0 +1,16 @@ +// +// SearchData.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/10/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface SearchData : NSObject + +@property (nonatomic, strong) NSString *value; + + +@end diff --git a/iTunesSearch/SearchData.m b/iTunesSearch/SearchData.m new file mode 100644 index 0000000..f5c202a --- /dev/null +++ b/iTunesSearch/SearchData.m @@ -0,0 +1,14 @@ +// +// SearchData.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/10/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "SearchData.h" + +@implementation SearchData + + +@end diff --git a/iTunesSearch/SearchView.xib b/iTunesSearch/SearchView.xib new file mode 100644 index 0000000..9950172 --- /dev/null +++ b/iTunesSearch/SearchView.xib @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iTunesSearch/SearchViewController.h b/iTunesSearch/SearchViewController.h new file mode 100644 index 0000000..47a61bf --- /dev/null +++ b/iTunesSearch/SearchViewController.h @@ -0,0 +1,19 @@ +// +// SearchViewController.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/10/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import +#import +#import "SearchData.h" +#import "TableViewController.h" + +@interface SearchViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UITextField *txtSearchValue; +- (IBAction)onBtnSearch:(id)sender; + +@end diff --git a/iTunesSearch/SearchViewController.m b/iTunesSearch/SearchViewController.m new file mode 100644 index 0000000..410510d --- /dev/null +++ b/iTunesSearch/SearchViewController.m @@ -0,0 +1,27 @@ +// +// SearchViewController.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/10/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "SearchViewController.h" + +@implementation SearchViewController + +-(void)viewDidLoad { + [super viewDidLoad]; + +} + +- (IBAction)onBtnSearch:(id)sender { + NSString *value = _txtSearchValue.text; + + SearchData *data = [[SearchData alloc] init]; + data.value = value; + + [self.navigationController pushViewController:[[TableViewController alloc]init] animated:YES]; +} + +@end diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib index 55f128c..d92a07a 100644 --- a/iTunesSearch/TableView.xib +++ b/iTunesSearch/TableView.xib @@ -1,5 +1,5 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/iTunesSearch/TableViewController.h b/iTunesSearch/TableViewController.h index 0cbb5c4..25a8133 100644 --- a/iTunesSearch/TableViewController.h +++ b/iTunesSearch/TableViewController.h @@ -10,7 +10,6 @@ @interface TableViewController : UIViewController - @property (strong, nonatomic) IBOutlet UITableView *tableview; @end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 1802b6a..557bcdb 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -13,6 +13,9 @@ @interface TableViewController () { NSArray *midias; + UITextField *txtValue; + UIButton *btnSearch; + iTunesManager *itunes; } @end @@ -20,18 +23,31 @@ @interface TableViewController () { @implementation TableViewController - - (void)viewDidLoad { [super viewDidLoad]; UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; - iTunesManager *itunes = [iTunesManager sharedInstance]; - midias = [itunes buscarMidias:@"Apple"]; + itunes = [iTunesManager sharedInstance]; #warning Necessario para que a table view tenha um espaco em relacao ao topo, pois caso contrario o texto ficara atras da barra superior - self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 15.f)]; + self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 30.f)]; + + txtValue = [[UITextField alloc]initWithFrame:CGRectMake(10, 15, 180, 15)]; + txtValue.backgroundColor = [UIColor redColor]; + [self.tableview.tableHeaderView insertSubview:txtValue atIndex:0]; + + btnSearch = [[UIButton alloc]initWithFrame:CGRectMake( + txtValue.bounds.origin.x + txtValue.bounds.size.width + 5, + 15, + 70, + txtValue.bounds.size.height + )]; + [btnSearch setTitle:@"Search" forState:UIControlStateNormal]; + [btnSearch setBackgroundColor:[UIColor blueColor]]; + [btnSearch addTarget:self action:@selector(onBtnSearch:) forControlEvents:UIControlEventTouchUpInside]; + [self.tableview.tableHeaderView insertSubview:btnSearch atIndex:1]; } - (void)didReceiveMemoryWarning { @@ -58,6 +74,20 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.tipo setText:@"Filme"]; [celula.genero setText:filme.genero]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:filme.artworkUrl]]; + if(data) { + UIImage *img = [UIImage imageWithData:data]; + if(img) { + dispatch_async(dispatch_get_main_queue(), ^{ + celula.imageView.image = img; + }); + } + } + }); + + celula.imageView.image = [UIImage imageNamed:filme.artworkUrl]; + return celula; } @@ -65,5 +95,14 @@ -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat return 70; } +-(IBAction)onBtnSearch:(id)sender { + NSString *value = txtValue.text; + if(value && value.length > 0) { + NSLog(@"SEARCHING"); + midias = [itunes buscarMidias:value]; + [self.tableview reloadData]; + } +} + @end diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index 4a19e88..c8603d6 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -56,6 +56,7 @@ - (NSArray *)buscarMidias:(NSString *)termo { [filme setArtista :[item objectForKey:@"artistName"]]; [filme setDuracao :[item objectForKey:@"trackTimeMillis"]]; [filme setGenero :[item objectForKey:@"primaryGenreName"]]; + [filme setArtworkUrl:[item objectForKey:@"artworkUrl30"]]; [filme setPais:[item objectForKey:@"country"]]; [filmes addObject:filme]; } From 79f5f0972c4bf8d1007f974a8a54bd866003d3fc Mon Sep 17 00:00:00 2001 From: William Cho Date: Sun, 15 Mar 2015 11:47:54 -0300 Subject: [PATCH 3/4] depreciated TableViewController. bronze 3, prata 1,2,3 --- .idea/.name | 1 + .idea/encodings.xml | 4 + .idea/iTunesSearch.iml | 8 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/scopes/scope_settings.xml | 5 + .idea/vcs.xml | 6 + .idea/workspace.xml | 236 ++++++++++++++++++++++ .idea/xcode.xml | 4 + fr.lproj/Localizable.strings | 13 ++ iTunesSearch.xcodeproj/project.pbxproj | 91 ++++++++- iTunesSearch/AppDelegate.m | 8 +- iTunesSearch/EBook.h | 16 ++ iTunesSearch/EBook.m | 13 ++ iTunesSearch/Entidades/Filme.h | 11 +- iTunesSearch/MainTableView.xib | 68 +++++++ iTunesSearch/MainTableViewController.h | 20 ++ iTunesSearch/MainTableViewController.m | 92 +++++++++ iTunesSearch/Midia.h | 24 +++ iTunesSearch/Midia.m | 13 ++ iTunesSearch/Musica.h | 17 ++ iTunesSearch/Musica.m | 13 ++ iTunesSearch/Podcast.h | 16 ++ iTunesSearch/Podcast.m | 13 ++ iTunesSearch/SearchData.h | 10 +- iTunesSearch/SearchData.m | 69 ++++++- iTunesSearch/SearchView.xib | 43 ---- iTunesSearch/SearchViewController.h | 19 -- iTunesSearch/SearchViewController.m | 27 --- iTunesSearch/TableViewCell.h | 4 +- iTunesSearch/TableViewCell.xib | 4 +- iTunesSearch/TableViewCellDetailed.xib | 15 ++ iTunesSearch/TableViewController.m | 46 +++-- iTunesSearch/en.lproj/Localizable.strings | 13 ++ iTunesSearch/iTunesManager.h | 3 +- iTunesSearch/iTunesManager.m | 26 +-- iTunesSearch/pt.lproj/Localizable.strings | 13 ++ 37 files changed, 843 insertions(+), 153 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/encodings.xml create mode 100644 .idea/iTunesSearch.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/scopes/scope_settings.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 .idea/xcode.xml create mode 100644 fr.lproj/Localizable.strings create mode 100644 iTunesSearch/EBook.h create mode 100644 iTunesSearch/EBook.m create mode 100644 iTunesSearch/MainTableView.xib create mode 100644 iTunesSearch/MainTableViewController.h create mode 100644 iTunesSearch/MainTableViewController.m create mode 100644 iTunesSearch/Midia.h create mode 100644 iTunesSearch/Midia.m create mode 100644 iTunesSearch/Musica.h create mode 100644 iTunesSearch/Musica.m create mode 100644 iTunesSearch/Podcast.h create mode 100644 iTunesSearch/Podcast.m delete mode 100644 iTunesSearch/SearchView.xib delete mode 100644 iTunesSearch/SearchViewController.h delete mode 100644 iTunesSearch/SearchViewController.m create mode 100644 iTunesSearch/TableViewCellDetailed.xib create mode 100644 iTunesSearch/en.lproj/Localizable.strings create mode 100644 iTunesSearch/pt.lproj/Localizable.strings diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..cc9f0b8 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +iTunesSearch \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..d821048 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/iTunesSearch.iml b/.idea/iTunesSearch.iml new file mode 100644 index 0000000..cb345e8 --- /dev/null +++ b/.idea/iTunesSearch.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8662aa9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c14551d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000..922003b --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..d071f0c --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1426267314379 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/xcode.xml b/.idea/xcode.xml new file mode 100644 index 0000000..b6aaa74 --- /dev/null +++ b/.idea/xcode.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fr.lproj/Localizable.strings b/fr.lproj/Localizable.strings new file mode 100644 index 0000000..a580d66 --- /dev/null +++ b/fr.lproj/Localizable.strings @@ -0,0 +1,13 @@ +/* + Localizable.strings + iTunesSearch + + Created by William Hong Jun Cho on 3/12/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ +"all" = "Tous"; +"movie" = "Film"; +"ebook" = "EBook"; +"song" = "Musique"; +"podcast" = "Podcast"; +"search" = "Recherche"; \ No newline at end of file diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index b45ea6f..4558840 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -7,9 +7,17 @@ objects = { /* Begin PBXBuildFile section */ - 8FC0F5481AAF7CCE0087D8E5 /* SearchView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8FC0F5471AAF7CCE0087D8E5 /* SearchView.xib */; }; - 8FC0F54B1AAF7CF90087D8E5 /* SearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC0F54A1AAF7CF90087D8E5 /* SearchViewController.m */; }; + 8F6595AA1AB488B4000C445C /* TableViewCellDetailed.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8F6595A91AB488B4000C445C /* TableViewCellDetailed.xib */; }; + 8F6595B71AB48F87000C445C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F6595B61AB48F87000C445C /* MainTableViewController.m */; }; + 8F6595B91AB48FB7000C445C /* MainTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8F6595B81AB48FB7000C445C /* MainTableView.xib */; }; + 8F802E6C1AB1F8D800936645 /* Midia.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F802E6B1AB1F8D800936645 /* Midia.m */; }; + 8F802E6F1AB1F99700936645 /* EBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F802E6E1AB1F99700936645 /* EBook.m */; }; + 8F802E721AB1FA8400936645 /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F802E711AB1FA8400936645 /* Musica.m */; }; + 8F802E751AB22C9600936645 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8F802E771AB22C9600936645 /* Localizable.strings */; }; + 8F802E7E1AB22DEF00936645 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8F802E801AB22DEF00936645 /* Localizable.strings */; }; + 8F802E811AB22DF600936645 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8F802E831AB22DF600936645 /* Localizable.strings */; }; 8FC0F54E1AAF82F30087D8E5 /* SearchData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */; }; + 8FE624401AB351FA0037CEFD /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6243F1AB351FA0037CEFD /* Podcast.m */; }; 92C21CB61AAE757A0052ABE6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CB51AAE757A0052ABE6 /* main.m */; }; 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CB81AAE757A0052ABE6 /* AppDelegate.m */; }; 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CBB1AAE757A0052ABE6 /* TableViewController.m */; }; @@ -33,11 +41,23 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 8FC0F5471AAF7CCE0087D8E5 /* SearchView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchView.xib; sourceTree = ""; }; - 8FC0F5491AAF7CF90087D8E5 /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = ""; }; - 8FC0F54A1AAF7CF90087D8E5 /* SearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchViewController.m; sourceTree = ""; }; + 8F6595A91AB488B4000C445C /* TableViewCellDetailed.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellDetailed.xib; sourceTree = ""; }; + 8F6595B51AB48F87000C445C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = ""; }; + 8F6595B61AB48F87000C445C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = ""; }; + 8F6595B81AB48FB7000C445C /* MainTableView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainTableView.xib; sourceTree = ""; }; + 8F802E6A1AB1F8D800936645 /* Midia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Midia.h; sourceTree = ""; }; + 8F802E6B1AB1F8D800936645 /* Midia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Midia.m; sourceTree = ""; }; + 8F802E6D1AB1F99700936645 /* EBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EBook.h; sourceTree = ""; }; + 8F802E6E1AB1F99700936645 /* EBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EBook.m; sourceTree = ""; }; + 8F802E701AB1FA8400936645 /* Musica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Musica.h; sourceTree = ""; }; + 8F802E711AB1FA8400936645 /* Musica.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Musica.m; sourceTree = ""; }; + 8F802E761AB22C9600936645 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + 8F802E7F1AB22DEF00936645 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; + 8F802E821AB22DF600936645 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Localizable.strings; sourceTree = ""; }; 8FC0F54C1AAF82F30087D8E5 /* SearchData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchData.h; sourceTree = ""; }; 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchData.m; sourceTree = ""; }; + 8FE6243E1AB351FA0037CEFD /* Podcast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Podcast.h; sourceTree = ""; }; + 8FE6243F1AB351FA0037CEFD /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Podcast.m; sourceTree = ""; }; 92C21CB01AAE757A0052ABE6 /* iTunesSearch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iTunesSearch.app; sourceTree = BUILT_PRODUCTS_DIR; }; 92C21CB41AAE757A0052ABE6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 92C21CB51AAE757A0052ABE6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -80,6 +100,9 @@ 92C21CA71AAE757A0052ABE6 = { isa = PBXGroup; children = ( + 8F802E771AB22C9600936645 /* Localizable.strings */, + 8F802E831AB22DF600936645 /* Localizable.strings */, + 8F802E801AB22DEF00936645 /* Localizable.strings */, 92C21CB21AAE757A0052ABE6 /* iTunesSearch */, 92C21CCC1AAE757A0052ABE6 /* iTunesSearchTests */, 92C21CB11AAE757A0052ABE6 /* Products */, @@ -109,9 +132,9 @@ 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */, 92C21CC01AAE757A0052ABE6 /* Images.xcassets */, 92C21CB31AAE757A0052ABE6 /* Supporting Files */, - 8FC0F5471AAF7CCE0087D8E5 /* SearchView.xib */, - 8FC0F5491AAF7CF90087D8E5 /* SearchViewController.h */, - 8FC0F54A1AAF7CF90087D8E5 /* SearchViewController.m */, + 8F6595B51AB48F87000C445C /* MainTableViewController.h */, + 8F6595B61AB48F87000C445C /* MainTableViewController.m */, + 8F6595B81AB48FB7000C445C /* MainTableView.xib */, ); path = iTunesSearch; sourceTree = ""; @@ -148,6 +171,7 @@ 92C21CDE1AAE76930052ABE6 /* TableViewCell.h */, 92C21CDF1AAE76930052ABE6 /* TableViewCell.m */, 92C21CE01AAE76930052ABE6 /* TableViewCell.xib */, + 8F6595A91AB488B4000C445C /* TableViewCellDetailed.xib */, ); name = Celulas; sourceTree = ""; @@ -159,6 +183,14 @@ 92C21CE71AAE858E0052ABE6 /* Filme.m */, 8FC0F54C1AAF82F30087D8E5 /* SearchData.h */, 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */, + 8F802E6A1AB1F8D800936645 /* Midia.h */, + 8F802E6B1AB1F8D800936645 /* Midia.m */, + 8F802E6D1AB1F99700936645 /* EBook.h */, + 8F802E6E1AB1F99700936645 /* EBook.m */, + 8F802E701AB1FA8400936645 /* Musica.h */, + 8F802E711AB1FA8400936645 /* Musica.m */, + 8FE6243E1AB351FA0037CEFD /* Podcast.h */, + 8FE6243F1AB351FA0037CEFD /* Podcast.m */, ); name = Entidades; sourceTree = ""; @@ -226,6 +258,8 @@ knownRegions = ( en, Base, + fr, + pt, ); mainGroup = 92C21CA71AAE757A0052ABE6; productRefGroup = 92C21CB11AAE757A0052ABE6 /* Products */; @@ -243,7 +277,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8FC0F5481AAF7CCE0087D8E5 /* SearchView.xib in Resources */, + 8F802E751AB22C9600936645 /* Localizable.strings in Resources */, + 8F6595AA1AB488B4000C445C /* TableViewCellDetailed.xib in Resources */, + 8F6595B91AB48FB7000C445C /* MainTableView.xib in Resources */, + 8F802E811AB22DF600936645 /* Localizable.strings in Resources */, + 8F802E7E1AB22DEF00936645 /* Localizable.strings in Resources */, 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */, 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */, 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */, @@ -266,11 +304,15 @@ files = ( 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */, 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */, + 8F802E721AB1FA8400936645 /* Musica.m in Sources */, 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */, + 8F802E6C1AB1F8D800936645 /* Midia.m in Sources */, + 8F802E6F1AB1F99700936645 /* EBook.m in Sources */, + 8FE624401AB351FA0037CEFD /* Podcast.m in Sources */, 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */, + 8F6595B71AB48F87000C445C /* MainTableViewController.m in Sources */, 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */, 92C21CB61AAE757A0052ABE6 /* main.m in Sources */, - 8FC0F54B1AAF7CF90087D8E5 /* SearchViewController.m in Sources */, 8FC0F54E1AAF82F30087D8E5 /* SearchData.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -293,6 +335,35 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + 8F802E771AB22C9600936645 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 8F802E761AB22C9600936645 /* en */, + ); + name = Localizable.strings; + path = iTunesSearch; + sourceTree = ""; + }; + 8F802E801AB22DEF00936645 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 8F802E7F1AB22DEF00936645 /* fr */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 8F802E831AB22DF600936645 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 8F802E821AB22DF600936645 /* pt */, + ); + name = Localizable.strings; + path = iTunesSearch; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 92C21CD11AAE757A0052ABE6 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/iTunesSearch/AppDelegate.m b/iTunesSearch/AppDelegate.m index 0974c91..d4e865f 100644 --- a/iTunesSearch/AppDelegate.m +++ b/iTunesSearch/AppDelegate.m @@ -10,7 +10,7 @@ #warning Classe importada para uso no metodo de inicilizacao da App #import "TableViewController.h" -#import "SearchViewController.h"; +#import "MainTableViewController.h" @interface AppDelegate () @@ -29,13 +29,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( #warning Adicionado codigo para iniciar com a interface do TableView // TableViewController *tvc = [[TableViewController alloc] initWithNibName:@"TableView" bundle:nil]; - //* + /* TableViewController *tvc = [[TableViewController alloc] init]; [self.window setRootViewController:tvc]; /*/ //Iniciando com SearchView - SearchViewController *svc = [[SearchViewController alloc] init]; - [self.window setRootViewController:svc]; + MainTableViewController *vc = [[MainTableViewController alloc] init]; + [self.window setRootViewController:vc]; //*/ [self.window makeKeyAndVisible]; diff --git a/iTunesSearch/EBook.h b/iTunesSearch/EBook.h new file mode 100644 index 0000000..cb804c9 --- /dev/null +++ b/iTunesSearch/EBook.h @@ -0,0 +1,16 @@ +// +// EBook.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/12/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import +#import "Midia.h" + +@interface EBook : Midia + +@property (nonatomic, strong) NSString *autor; + +@end diff --git a/iTunesSearch/EBook.m b/iTunesSearch/EBook.m new file mode 100644 index 0000000..5224c76 --- /dev/null +++ b/iTunesSearch/EBook.m @@ -0,0 +1,13 @@ +// +// EBook.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/12/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "EBook.h" + +@implementation EBook + +@end diff --git a/iTunesSearch/Entidades/Filme.h b/iTunesSearch/Entidades/Filme.h index 724dbbc..f609f23 100644 --- a/iTunesSearch/Entidades/Filme.h +++ b/iTunesSearch/Entidades/Filme.h @@ -7,16 +7,11 @@ // #import +#import "Midia.h" -@interface Filme : NSObject +@interface Filme : Midia -@property (nonatomic, strong) NSString *nome; -@property (nonatomic, strong) NSString *trackId; -@property (nonatomic, strong) NSString *artista; -@property (nonatomic, strong) NSString *duracao; -@property (nonatomic, strong) NSString *genero; -@property (nonatomic, strong) NSString *pais; -@property (nonatomic, strong) NSString *artworkUrl; +@property (nonatomic, strong) NSString *duration; @end diff --git a/iTunesSearch/MainTableView.xib b/iTunesSearch/MainTableView.xib new file mode 100644 index 0000000..a8e1f73 --- /dev/null +++ b/iTunesSearch/MainTableView.xib @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iTunesSearch/MainTableViewController.h b/iTunesSearch/MainTableViewController.h new file mode 100644 index 0000000..3154fec --- /dev/null +++ b/iTunesSearch/MainTableViewController.h @@ -0,0 +1,20 @@ +// +// MainTableViewController.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/14/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface MainTableViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UITextField *txtSearch; +@property (weak, nonatomic) IBOutlet UIButton *btnSearch; +- (IBAction)onBtnSearch:(id)sender; +@property (weak, nonatomic) IBOutlet UISegmentedControl *scControl; +@property (weak, nonatomic) IBOutlet UITableView *tableView; + + +@end diff --git a/iTunesSearch/MainTableViewController.m b/iTunesSearch/MainTableViewController.m new file mode 100644 index 0000000..48f4609 --- /dev/null +++ b/iTunesSearch/MainTableViewController.m @@ -0,0 +1,92 @@ +// +// MainTableViewController.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/14/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "MainTableViewController.h" +#import "SearchData.h" +#import "iTunesManager.h" +#import "TableViewCell.h" + + +@interface MainTableViewController () + +@end + +@implementation MainTableViewController { + iTunesManager *itunes; + SearchData *midiaData; + + NSArray *MIDIA_TYPES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + MIDIA_TYPES = [NSArray arrayWithObjects:@"all",@"movie",@"ebook",@"song",@"podcast", nil]; + + UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; + [_tableView registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; + + itunes = [iTunesManager sharedInstance]; + + [_btnSearch setTitle:NSLocalizedString(@"search", nil) forState:UIControlStateNormal]; + [_txtSearch setDelegate:self]; + [_tableView setDelegate:self]; + + [_scControl addTarget:self action:@selector(onSCValueChanged:) forControlEvents:UIControlEventValueChanged]; + [_scControl removeAllSegments]; + for (int i = 0; i < MIDIA_TYPES.count; i++) { + [_scControl insertSegmentWithTitle:NSLocalizedString(MIDIA_TYPES[i], nil) atIndex:i animated:NO]; + } +} + +#pragma mark - UITableViewDataSource +-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return MIDIA_TYPES.count - 1; +} + +-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { + return MIDIA_TYPES[section]; +} + +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + //todo optimize + return [midiaData getArrayByKind:MIDIA_TYPES[section]].count; +} + +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + TableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"celulaPadrao"]; + + [cell.name setText:@"name"]; + [cell.kind setText:@"kind"]; + + return cell; +} + +#pragma mark - UI events +-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9a-zA-Z]" options:NSRegularExpressionCaseInsensitive error:nil]; + NSUInteger matches = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, string.length)]; + return (matches > 0); +} + +- (IBAction)onBtnSearch:(id)sender { + NSString *value = _txtSearch.text; + if(value && value.length > 0) { + midiaData = [itunes buscarMidias:value]; + [_scControl setSelectedSegmentIndex:0]; + //[_tableView reloadData]; + } +} + +-(void)onSCValueChanged:(UISegmentedControl *)segment { + +} + + + +@end diff --git a/iTunesSearch/Midia.h b/iTunesSearch/Midia.h new file mode 100644 index 0000000..a876a0f --- /dev/null +++ b/iTunesSearch/Midia.h @@ -0,0 +1,24 @@ +// +// Midia.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/12/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Midia : NSObject + +@property (nonatomic, strong) NSString *kind; +@property (nonatomic, strong) NSString *trackId; +@property (nonatomic, strong) NSString *trackName; +@property (nonatomic, strong) NSString *trackPrice; +@property (nonatomic, strong) NSString *artistName; +@property (nonatomic, strong) NSString *primaryGenreName; +@property (nonatomic, strong) NSString *country; +@property (nonatomic, strong) NSString *currency; +@property (nonatomic, strong) NSString *artworkUrl; + + +@end diff --git a/iTunesSearch/Midia.m b/iTunesSearch/Midia.m new file mode 100644 index 0000000..968bc4a --- /dev/null +++ b/iTunesSearch/Midia.m @@ -0,0 +1,13 @@ +// +// Midia.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/12/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Midia.h" + +@implementation Midia + +@end diff --git a/iTunesSearch/Musica.h b/iTunesSearch/Musica.h new file mode 100644 index 0000000..8280958 --- /dev/null +++ b/iTunesSearch/Musica.h @@ -0,0 +1,17 @@ +// +// Musica.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/12/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import +#import "Midia.h" + +@interface Musica : Midia + +@property (nonatomic,strong) NSString *artista; + + +@end diff --git a/iTunesSearch/Musica.m b/iTunesSearch/Musica.m new file mode 100644 index 0000000..114c490 --- /dev/null +++ b/iTunesSearch/Musica.m @@ -0,0 +1,13 @@ +// +// Musica.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/12/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Musica.h" + +@implementation Musica + +@end diff --git a/iTunesSearch/Podcast.h b/iTunesSearch/Podcast.h new file mode 100644 index 0000000..69149aa --- /dev/null +++ b/iTunesSearch/Podcast.h @@ -0,0 +1,16 @@ +// +// Podcast.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/13/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import +#import "Midia.h" + +@interface Podcast : Midia + + + +@end diff --git a/iTunesSearch/Podcast.m b/iTunesSearch/Podcast.m new file mode 100644 index 0000000..74593c8 --- /dev/null +++ b/iTunesSearch/Podcast.m @@ -0,0 +1,13 @@ +// +// Podcast.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 3/13/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Podcast.h" + +@implementation Podcast + +@end diff --git a/iTunesSearch/SearchData.h b/iTunesSearch/SearchData.h index 40693d8..884a968 100644 --- a/iTunesSearch/SearchData.h +++ b/iTunesSearch/SearchData.h @@ -7,10 +7,16 @@ // #import +#import "Midia.h" +#import "Filme.h" +#import "EBook.h" +#import "Musica.h" +#import "Podcast.h" @interface SearchData : NSObject -@property (nonatomic, strong) NSString *value; - +-(id)initWithResults:(NSArray *)results; +-(void)addData:(Midia *)midia; +-(NSArray *)getArrayByKind:(NSString *)kind; @end diff --git a/iTunesSearch/SearchData.m b/iTunesSearch/SearchData.m index f5c202a..5486ed3 100644 --- a/iTunesSearch/SearchData.m +++ b/iTunesSearch/SearchData.m @@ -8,7 +8,74 @@ #import "SearchData.h" -@implementation SearchData +@implementation SearchData { + NSMutableArray *data; +} +-(id)init { + self = [super init]; + if(self) { + data = [[NSMutableArray alloc] init]; + } + return self; +} + +-(id)initWithResults:(NSArray *)results { + self = [super init]; + if(self) { + data = [[NSMutableArray alloc] init]; + for (NSDictionary *item in results) { + NSString *itemKind = [item objectForKey:@"kind"]; + + Midia *midia = nil; + + //todo add regex + if([itemKind isEqualToString:@"feature-movie"]) { + Filme *filme = [[Filme alloc] init]; + [filme setDuration :[item objectForKey:@"trackTimeMillis"]]; + midia = filme; + } else if([itemKind isEqualToString:@"song"]) { + Musica *musica = [[Musica alloc] init]; + + midia = musica; + } else if([itemKind isEqualToString:@"podcast"]) { + Podcast *podcast = [[Podcast alloc] init]; + + midia = podcast; + } else if([itemKind isEqualToString:@"ebook"]) { + EBook *ebook = [[EBook alloc]init]; + + midia = ebook; + } + + if(midia) { + [midia setKind :[item objectForKey:@"kind"]]; + [midia setTrackName :[item objectForKey:@"trackName"]]; + [midia setTrackId :[item objectForKey:@"trackId"]]; + [midia setTrackPrice :[item objectForKey:@"trackPrice"]]; + [midia setArtistName :[item objectForKey:@"artistName"]]; + [midia setPrimaryGenreName:[item objectForKey:@"primaryGenreName"]]; + [midia setCountry :[item objectForKey:@"country"]]; + [midia setCurrency :[item objectForKey:@"currency"]]; + [midia setArtworkUrl :[item objectForKey:@"artworkUrl30"]]; + [data addObject:midia]; + } + } + } + return self; +} + +-(void)addData:(Midia *)midia { + +} + +-(NSArray *)getArrayByKind:(NSString *)kind { + NSMutableArray *filtered = [[NSMutableArray alloc]init]; + for (Midia *midia in data) { + if([midia.kind isEqualToString:kind]) + [filtered addObject:midia]; + } + return filtered; +} @end diff --git a/iTunesSearch/SearchView.xib b/iTunesSearch/SearchView.xib deleted file mode 100644 index 9950172..0000000 --- a/iTunesSearch/SearchView.xib +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iTunesSearch/SearchViewController.h b/iTunesSearch/SearchViewController.h deleted file mode 100644 index 47a61bf..0000000 --- a/iTunesSearch/SearchViewController.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// SearchViewController.h -// iTunesSearch -// -// Created by William Hong Jun Cho on 3/10/15. -// Copyright (c) 2015 joaquim. All rights reserved. -// - -#import -#import -#import "SearchData.h" -#import "TableViewController.h" - -@interface SearchViewController : UIViewController - -@property (weak, nonatomic) IBOutlet UITextField *txtSearchValue; -- (IBAction)onBtnSearch:(id)sender; - -@end diff --git a/iTunesSearch/SearchViewController.m b/iTunesSearch/SearchViewController.m deleted file mode 100644 index 410510d..0000000 --- a/iTunesSearch/SearchViewController.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// SearchViewController.m -// iTunesSearch -// -// Created by William Hong Jun Cho on 3/10/15. -// Copyright (c) 2015 joaquim. All rights reserved. -// - -#import "SearchViewController.h" - -@implementation SearchViewController - --(void)viewDidLoad { - [super viewDidLoad]; - -} - -- (IBAction)onBtnSearch:(id)sender { - NSString *value = _txtSearchValue.text; - - SearchData *data = [[SearchData alloc] init]; - data.value = value; - - [self.navigationController pushViewController:[[TableViewController alloc]init] animated:YES]; -} - -@end diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index 8fbc832..cfcbde0 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -10,8 +10,8 @@ @interface TableViewCell : UITableViewCell -@property (weak, nonatomic) IBOutlet UILabel *nome; -@property (weak, nonatomic) IBOutlet UILabel *tipo; +@property (weak, nonatomic) IBOutlet UILabel *name; +@property (weak, nonatomic) IBOutlet UILabel *kind; @property (weak, nonatomic) IBOutlet UILabel *genero; diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index 5c0c988..27b35a0 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -47,8 +47,8 @@ - - + + diff --git a/iTunesSearch/TableViewCellDetailed.xib b/iTunesSearch/TableViewCellDetailed.xib new file mode 100644 index 0000000..94c1f20 --- /dev/null +++ b/iTunesSearch/TableViewCellDetailed.xib @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 557bcdb..d40e1c8 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -10,12 +10,18 @@ #import "TableViewCell.h" #import "iTunesManager.h" #import "Entidades/Filme.h" +#import "SearchData.h" + @interface TableViewController () { + SearchData *midiaData; NSArray *midias; UITextField *txtValue; UIButton *btnSearch; + UISegmentedControl *scType; iTunesManager *itunes; + + NSArray *MIDIA_TYPES; } @end @@ -25,6 +31,7 @@ @implementation TableViewController - (void)viewDidLoad { [super viewDidLoad]; + MIDIA_TYPES = [NSArray arrayWithObjects:@"movie", @"ebook", @"song", @"podcast", nil]; UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; @@ -32,22 +39,31 @@ - (void)viewDidLoad { itunes = [iTunesManager sharedInstance]; #warning Necessario para que a table view tenha um espaco em relacao ao topo, pois caso contrario o texto ficara atras da barra superior - self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 30.f)]; + self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 50.f)]; txtValue = [[UITextField alloc]initWithFrame:CGRectMake(10, 15, 180, 15)]; txtValue.backgroundColor = [UIColor redColor]; [self.tableview.tableHeaderView insertSubview:txtValue atIndex:0]; - btnSearch = [[UIButton alloc]initWithFrame:CGRectMake( - txtValue.bounds.origin.x + txtValue.bounds.size.width + 5, + btnSearch = [[UIButton alloc]initWithFrame:CGRectMake(txtValue.bounds.origin.x + txtValue.bounds.size.width + 5, 15, 70, txtValue.bounds.size.height )]; - [btnSearch setTitle:@"Search" forState:UIControlStateNormal]; + [btnSearch setTitle:NSLocalizedString(@"search", nil) forState:UIControlStateNormal]; [btnSearch setBackgroundColor:[UIColor blueColor]]; [btnSearch addTarget:self action:@selector(onBtnSearch:) forControlEvents:UIControlEventTouchUpInside]; - [self.tableview.tableHeaderView insertSubview:btnSearch atIndex:1]; + [self.tableview.tableHeaderView addSubview:btnSearch]; + + scType = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects: + NSLocalizedString(MIDIA_TYPES[0], nil), + NSLocalizedString(MIDIA_TYPES[1], nil), + NSLocalizedString(MIDIA_TYPES[2], nil), + NSLocalizedString(MIDIA_TYPES[3], nil), + nil]]; + scType.frame = CGRectMake(10, 32, 300, 20); + scType.selectedSegmentIndex = 0; + [self.tableview.tableHeaderView addSubview:scType]; } - (void)didReceiveMemoryWarning { @@ -69,10 +85,10 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; Filme *filme = [midias objectAtIndex:indexPath.row]; - - [celula.nome setText:filme.nome]; - [celula.tipo setText:@"Filme"]; - [celula.genero setText:filme.genero]; + + [celula.name setText:filme.trackName]; + [celula.kind setText:filme.kind]; +// [celula.genero setText:filme.genero]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:filme.artworkUrl]]; @@ -86,7 +102,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS } }); - celula.imageView.image = [UIImage imageNamed:filme.artworkUrl]; + //celula.imageView.image = [UIImage imageNamed:filme.artworkUrl]; return celula; } @@ -95,11 +111,17 @@ -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat return 70; } + +#pragma mark - Metodos UISegmentedControl + + + +#pragma mark - Metodos UIButton -(IBAction)onBtnSearch:(id)sender { NSString *value = txtValue.text; if(value && value.length > 0) { - NSLog(@"SEARCHING"); - midias = [itunes buscarMidias:value]; + midiaData = [itunes buscarMidias:value]; +// midias = [itunes buscarMidias:value midia:MIDIA_TYPES[scType.selectedSegmentIndex]]; [self.tableview reloadData]; } } diff --git a/iTunesSearch/en.lproj/Localizable.strings b/iTunesSearch/en.lproj/Localizable.strings new file mode 100644 index 0000000..ba52730 --- /dev/null +++ b/iTunesSearch/en.lproj/Localizable.strings @@ -0,0 +1,13 @@ +/* + Localizable.strings + iTunesSearch + + Created by William Hong Jun Cho on 3/12/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ +"all" = "All"; +"movie" = "Movie"; +"ebook" = "EBook"; +"song" = "Music"; +"podcast" = "Podcast"; +"search" = "Search"; \ No newline at end of file diff --git a/iTunesSearch/iTunesManager.h b/iTunesSearch/iTunesManager.h index c0e366b..9839754 100644 --- a/iTunesSearch/iTunesManager.h +++ b/iTunesSearch/iTunesManager.h @@ -7,6 +7,7 @@ // #import +#import "SearchData.h" @interface iTunesManager : NSObject @@ -16,6 +17,6 @@ */ + (iTunesManager*)sharedInstance; -- (NSArray *)buscarMidias:(NSString *)termo; +- (SearchData *)buscarMidias:(NSString *)termo; @end diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index c8603d6..c3e64a7 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -7,7 +7,6 @@ // #import "iTunesManager.h" -#import "Entidades/Filme.h" @implementation iTunesManager @@ -29,12 +28,11 @@ + (id)sharedInstance } -- (NSArray *)buscarMidias:(NSString *)termo { - if (!termo) { +- (SearchData *)buscarMidias:(NSString *)termo { + if (!termo) termo = @""; - } - NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=movie", termo]; + NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&", termo]; NSData *jsonData = [NSData dataWithContentsOfURL: [NSURL URLWithString:url]]; NSError *error; @@ -45,23 +43,7 @@ - (NSArray *)buscarMidias:(NSString *)termo { NSLog(@"Não foi possível fazer a busca. ERRO: %@", error); return nil; } - - NSArray *resultados = [resultado objectForKey:@"results"]; - NSMutableArray *filmes = [[NSMutableArray alloc] init]; - - for (NSDictionary *item in resultados) { - Filme *filme = [[Filme alloc] init]; - [filme setNome :[item objectForKey:@"trackName"]]; - [filme setTrackId :[item objectForKey:@"trackId"]]; - [filme setArtista :[item objectForKey:@"artistName"]]; - [filme setDuracao :[item objectForKey:@"trackTimeMillis"]]; - [filme setGenero :[item objectForKey:@"primaryGenreName"]]; - [filme setArtworkUrl:[item objectForKey:@"artworkUrl30"]]; - [filme setPais:[item objectForKey:@"country"]]; - [filmes addObject:filme]; - } - - return filmes; + return [[SearchData alloc] initWithResults:[resultado objectForKey:@"results"]]; } diff --git a/iTunesSearch/pt.lproj/Localizable.strings b/iTunesSearch/pt.lproj/Localizable.strings new file mode 100644 index 0000000..cde9f44 --- /dev/null +++ b/iTunesSearch/pt.lproj/Localizable.strings @@ -0,0 +1,13 @@ +/* + Localizable.strings + iTunesSearch + + Created by William Hong Jun Cho on 3/12/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ +"all" = "Todos"; +"movie" = "Filme"; +"ebook" = "EBook"; +"song" = "Música"; +"podcast" = "Podcast"; +"search" = "Buscar"; \ No newline at end of file From 8bae5192f9f5c98157d2a2941b8e63d2afed7fc4 Mon Sep 17 00:00:00 2001 From: William Cho Date: Sat, 11 Apr 2015 14:46:39 -0300 Subject: [PATCH 4/4] refeito todos os desafios, inclusive o ouro --- fr.lproj/Localizable.strings | 1 + iTunesSearch.xcodeproj/project.pbxproj | 24 ++-- .../contents.xcworkspacedata | 0 iTunesSearch/AppDelegate.m | 5 +- iTunesSearch/MainTableView.xib | 26 ++-- iTunesSearch/MainTableViewController.m | 77 ++++++++--- iTunesSearch/MidiaDetailViewController.h | 20 +++ iTunesSearch/MidiaDetailViewController.m | 47 +++++++ iTunesSearch/MidiaDetailViewController.xib | 58 ++++++++ iTunesSearch/SearchData.h | 3 + iTunesSearch/SearchData.m | 34 +++-- iTunesSearch/TableView.xib | 25 ---- iTunesSearch/TableViewCell.h | 2 + iTunesSearch/TableViewCell.xib | 32 ++++- iTunesSearch/TableViewCellDetailed.xib | 15 -- iTunesSearch/TableViewController.h | 16 --- iTunesSearch/TableViewController.m | 130 ------------------ iTunesSearch/en.lproj/Localizable.strings | 1 + iTunesSearch/pt.lproj/Localizable.strings | 1 + 19 files changed, 267 insertions(+), 250 deletions(-) mode change 100644 => 100755 iTunesSearch.xcodeproj/project.pbxproj mode change 100644 => 100755 iTunesSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iTunesSearch/MidiaDetailViewController.h create mode 100644 iTunesSearch/MidiaDetailViewController.m create mode 100644 iTunesSearch/MidiaDetailViewController.xib delete mode 100644 iTunesSearch/TableView.xib delete mode 100644 iTunesSearch/TableViewCellDetailed.xib delete mode 100644 iTunesSearch/TableViewController.h delete mode 100644 iTunesSearch/TableViewController.m diff --git a/fr.lproj/Localizable.strings b/fr.lproj/Localizable.strings index a580d66..7d4180b 100644 --- a/fr.lproj/Localizable.strings +++ b/fr.lproj/Localizable.strings @@ -7,6 +7,7 @@ */ "all" = "Tous"; "movie" = "Film"; +"feature-movie" = "Film"; "ebook" = "EBook"; "song" = "Musique"; "podcast" = "Podcast"; diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj old mode 100644 new mode 100755 index 4558840..005b13f --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 8F6595AA1AB488B4000C445C /* TableViewCellDetailed.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8F6595A91AB488B4000C445C /* TableViewCellDetailed.xib */; }; 8F6595B71AB48F87000C445C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F6595B61AB48F87000C445C /* MainTableViewController.m */; }; 8F6595B91AB48FB7000C445C /* MainTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8F6595B81AB48FB7000C445C /* MainTableView.xib */; }; 8F802E6C1AB1F8D800936645 /* Midia.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F802E6B1AB1F8D800936645 /* Midia.m */; }; @@ -17,14 +16,14 @@ 8F802E7E1AB22DEF00936645 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8F802E801AB22DEF00936645 /* Localizable.strings */; }; 8F802E811AB22DF600936645 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8F802E831AB22DF600936645 /* Localizable.strings */; }; 8FC0F54E1AAF82F30087D8E5 /* SearchData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */; }; + 8FD534F21AD97E2700274712 /* MidiaDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD534F11AD97E2700274712 /* MidiaDetailViewController.m */; }; + 8FD534F41AD9800500274712 /* MidiaDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8FD534F31AD9800500274712 /* MidiaDetailViewController.xib */; }; 8FE624401AB351FA0037CEFD /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6243F1AB351FA0037CEFD /* Podcast.m */; }; 92C21CB61AAE757A0052ABE6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CB51AAE757A0052ABE6 /* main.m */; }; 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CB81AAE757A0052ABE6 /* AppDelegate.m */; }; - 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CBB1AAE757A0052ABE6 /* TableViewController.m */; }; 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 92C21CC01AAE757A0052ABE6 /* Images.xcassets */; }; 92C21CD01AAE757A0052ABE6 /* iTunesSearchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CCF1AAE757A0052ABE6 /* iTunesSearchTests.m */; }; 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */; }; - 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 92C21CDC1AAE75DC0052ABE6 /* TableView.xib */; }; 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CDF1AAE76930052ABE6 /* TableViewCell.m */; }; 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 92C21CE01AAE76930052ABE6 /* TableViewCell.xib */; }; 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CE71AAE858E0052ABE6 /* Filme.m */; }; @@ -41,7 +40,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 8F6595A91AB488B4000C445C /* TableViewCellDetailed.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellDetailed.xib; sourceTree = ""; }; 8F6595B51AB48F87000C445C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = ""; }; 8F6595B61AB48F87000C445C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = ""; }; 8F6595B81AB48FB7000C445C /* MainTableView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainTableView.xib; sourceTree = ""; }; @@ -56,6 +54,9 @@ 8F802E821AB22DF600936645 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Localizable.strings; sourceTree = ""; }; 8FC0F54C1AAF82F30087D8E5 /* SearchData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchData.h; sourceTree = ""; }; 8FC0F54D1AAF82F30087D8E5 /* SearchData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchData.m; sourceTree = ""; }; + 8FD534F01AD97E2700274712 /* MidiaDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MidiaDetailViewController.h; sourceTree = ""; }; + 8FD534F11AD97E2700274712 /* MidiaDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MidiaDetailViewController.m; sourceTree = ""; }; + 8FD534F31AD9800500274712 /* MidiaDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MidiaDetailViewController.xib; sourceTree = ""; }; 8FE6243E1AB351FA0037CEFD /* Podcast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Podcast.h; sourceTree = ""; }; 8FE6243F1AB351FA0037CEFD /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Podcast.m; sourceTree = ""; }; 92C21CB01AAE757A0052ABE6 /* iTunesSearch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iTunesSearch.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,15 +64,12 @@ 92C21CB51AAE757A0052ABE6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 92C21CB71AAE757A0052ABE6 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 92C21CB81AAE757A0052ABE6 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 92C21CBA1AAE757A0052ABE6 /* TableViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TableViewController.h; sourceTree = ""; }; - 92C21CBB1AAE757A0052ABE6 /* TableViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TableViewController.m; sourceTree = ""; }; 92C21CC01AAE757A0052ABE6 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 92C21CC91AAE757A0052ABE6 /* iTunesSearchTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iTunesSearchTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 92C21CCE1AAE757A0052ABE6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 92C21CCF1AAE757A0052ABE6 /* iTunesSearchTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iTunesSearchTests.m; sourceTree = ""; }; 92C21CD91AAE75B30052ABE6 /* iTunesManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunesManager.h; sourceTree = ""; }; 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTunesManager.m; sourceTree = ""; }; - 92C21CDC1AAE75DC0052ABE6 /* TableView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableView.xib; sourceTree = ""; }; 92C21CDE1AAE76930052ABE6 /* TableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCell.h; sourceTree = ""; }; 92C21CDF1AAE76930052ABE6 /* TableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCell.m; sourceTree = ""; }; 92C21CE01AAE76930052ABE6 /* TableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCell.xib; sourceTree = ""; }; @@ -125,9 +123,6 @@ 92C21CE91AAE859A0052ABE6 /* Entidades */, 92C21CB71AAE757A0052ABE6 /* AppDelegate.h */, 92C21CB81AAE757A0052ABE6 /* AppDelegate.m */, - 92C21CBA1AAE757A0052ABE6 /* TableViewController.h */, - 92C21CBB1AAE757A0052ABE6 /* TableViewController.m */, - 92C21CDC1AAE75DC0052ABE6 /* TableView.xib */, 92C21CD91AAE75B30052ABE6 /* iTunesManager.h */, 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */, 92C21CC01AAE757A0052ABE6 /* Images.xcassets */, @@ -135,6 +130,9 @@ 8F6595B51AB48F87000C445C /* MainTableViewController.h */, 8F6595B61AB48F87000C445C /* MainTableViewController.m */, 8F6595B81AB48FB7000C445C /* MainTableView.xib */, + 8FD534F01AD97E2700274712 /* MidiaDetailViewController.h */, + 8FD534F11AD97E2700274712 /* MidiaDetailViewController.m */, + 8FD534F31AD9800500274712 /* MidiaDetailViewController.xib */, ); path = iTunesSearch; sourceTree = ""; @@ -171,7 +169,6 @@ 92C21CDE1AAE76930052ABE6 /* TableViewCell.h */, 92C21CDF1AAE76930052ABE6 /* TableViewCell.m */, 92C21CE01AAE76930052ABE6 /* TableViewCell.xib */, - 8F6595A91AB488B4000C445C /* TableViewCellDetailed.xib */, ); name = Celulas; sourceTree = ""; @@ -277,14 +274,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8FD534F41AD9800500274712 /* MidiaDetailViewController.xib in Resources */, 8F802E751AB22C9600936645 /* Localizable.strings in Resources */, - 8F6595AA1AB488B4000C445C /* TableViewCellDetailed.xib in Resources */, 8F6595B91AB48FB7000C445C /* MainTableView.xib in Resources */, 8F802E811AB22DF600936645 /* Localizable.strings in Resources */, 8F802E7E1AB22DEF00936645 /* Localizable.strings in Resources */, 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */, 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */, - 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -302,7 +298,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */, 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */, 8F802E721AB1FA8400936645 /* Musica.m in Sources */, 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */, @@ -311,6 +306,7 @@ 8FE624401AB351FA0037CEFD /* Podcast.m in Sources */, 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */, 8F6595B71AB48F87000C445C /* MainTableViewController.m in Sources */, + 8FD534F21AD97E2700274712 /* MidiaDetailViewController.m in Sources */, 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */, 92C21CB61AAE757A0052ABE6 /* main.m in Sources */, 8FC0F54E1AAF82F30087D8E5 /* SearchData.m in Sources */, diff --git a/iTunesSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iTunesSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 diff --git a/iTunesSearch/AppDelegate.m b/iTunesSearch/AppDelegate.m index d4e865f..67d0315 100644 --- a/iTunesSearch/AppDelegate.m +++ b/iTunesSearch/AppDelegate.m @@ -9,7 +9,6 @@ #import "AppDelegate.h" #warning Classe importada para uso no metodo de inicilizacao da App -#import "TableViewController.h" #import "MainTableViewController.h" @interface AppDelegate () @@ -34,8 +33,10 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [self.window setRootViewController:tvc]; /*/ //Iniciando com SearchView + UINavigationController *nav = [[UINavigationController alloc]init]; MainTableViewController *vc = [[MainTableViewController alloc] init]; - [self.window setRootViewController:vc]; + [nav pushViewController:vc animated:YES]; + [self.window setRootViewController:nav]; //*/ [self.window makeKeyAndVisible]; diff --git a/iTunesSearch/MainTableView.xib b/iTunesSearch/MainTableView.xib index a8e1f73..9a3dc32 100644 --- a/iTunesSearch/MainTableView.xib +++ b/iTunesSearch/MainTableView.xib @@ -1,7 +1,7 @@ - + - + @@ -19,7 +19,7 @@ - + + + + + + + + + - + - - - - - + - + diff --git a/iTunesSearch/MainTableViewController.m b/iTunesSearch/MainTableViewController.m index 48f4609..6844dc3 100644 --- a/iTunesSearch/MainTableViewController.m +++ b/iTunesSearch/MainTableViewController.m @@ -10,6 +10,7 @@ #import "SearchData.h" #import "iTunesManager.h" #import "TableViewCell.h" +#import "MidiaDetailViewController.h" @interface MainTableViewController () @@ -19,54 +20,95 @@ @interface MainTableViewController () @implementation MainTableViewController { iTunesManager *itunes; SearchData *midiaData; - - NSArray *MIDIA_TYPES; + NSArray *currentMidiaList; + NSUserDefaults *uData; } - (void)viewDidLoad { [super viewDidLoad]; - MIDIA_TYPES = [NSArray arrayWithObjects:@"all",@"movie",@"ebook",@"song",@"podcast", nil]; + itunes = [iTunesManager sharedInstance]; + uData = [NSUserDefaults standardUserDefaults]; + UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; [_tableView registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; - itunes = [iTunesManager sharedInstance]; - [_btnSearch setTitle:NSLocalizedString(@"search", nil) forState:UIControlStateNormal]; [_txtSearch setDelegate:self]; [_tableView setDelegate:self]; - + + [_scControl removeAllSegments]; [_scControl addTarget:self action:@selector(onSCValueChanged:) forControlEvents:UIControlEventValueChanged]; + + + NSString *lastSearch = [uData stringForKey:@"lastSearch"]; + if(lastSearch && lastSearch.length > 0) { + [_txtSearch setText:lastSearch]; + [self searchFor:lastSearch]; + } +} + +-(void)searchFor:(NSString *)value { + midiaData = [itunes buscarMidias:value]; + [_scControl removeAllSegments]; - for (int i = 0; i < MIDIA_TYPES.count; i++) { - [_scControl insertSegmentWithTitle:NSLocalizedString(MIDIA_TYPES[i], nil) atIndex:i animated:NO]; + for (int i = 0; i < midiaData.midiaTypes.count; i++) { + [_scControl insertSegmentWithTitle:NSLocalizedString(midiaData.midiaTypes[i], nil) atIndex:i animated:YES]; } + [_scControl setSelectedSegmentIndex:0]; + [self onSCValueChanged:_scControl]; + + [uData setValue:value forKey:@"lastSearch"]; } #pragma mark - UITableViewDataSource -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return MIDIA_TYPES.count - 1; + return 1; } -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return MIDIA_TYPES[section]; + return NSLocalizedString(midiaData.midiaTypes[section], nil); } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - //todo optimize - return [midiaData getArrayByKind:MIDIA_TYPES[section]].count; + return currentMidiaList.count; +} + +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 75; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"celulaPadrao"]; + + Midia *midia = currentMidiaList[indexPath.row]; + + [cell.name setText:midia.trackName]; + [cell.kind setText:NSLocalizedString(midia.kind, nil)]; + [cell.genero setText:midia.primaryGenreName]; - [cell.name setText:@"name"]; - [cell.kind setText:@"kind"]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:midia.artworkUrl]]; + if(data) { + UIImage *img = [UIImage imageWithData:data]; + if(img) { + dispatch_async(dispatch_get_main_queue(), ^{ + [cell.imgPreview setImage:img]; + }); + } + } + }); return cell; } +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + MidiaDetailViewController *vc = [[MidiaDetailViewController alloc] init]; + [vc setMidia:currentMidiaList[indexPath.row]]; + [self.navigationController pushViewController:vc animated:YES]; +} + #pragma mark - UI events -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9a-zA-Z]" options:NSRegularExpressionCaseInsensitive error:nil]; @@ -77,14 +119,13 @@ -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange - (IBAction)onBtnSearch:(id)sender { NSString *value = _txtSearch.text; if(value && value.length > 0) { - midiaData = [itunes buscarMidias:value]; - [_scControl setSelectedSegmentIndex:0]; - //[_tableView reloadData]; + [self searchFor:value]; } } -(void)onSCValueChanged:(UISegmentedControl *)segment { - + currentMidiaList = [midiaData getArrayByKind:midiaData.midiaTypes[_scControl.selectedSegmentIndex]]; + [_tableView reloadData]; } diff --git a/iTunesSearch/MidiaDetailViewController.h b/iTunesSearch/MidiaDetailViewController.h new file mode 100644 index 0000000..420caea --- /dev/null +++ b/iTunesSearch/MidiaDetailViewController.h @@ -0,0 +1,20 @@ +// +// MidiaDetailViewController.h +// iTunesSearch +// +// Created by William Hong Jun Cho on 4/11/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import +#import "Midia.h" + +@interface MidiaDetailViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UILabel *textTitle; +@property (weak, nonatomic) IBOutlet UITextView *textWall; +@property (weak, nonatomic) IBOutlet UIImageView *imgPreview; + +-(void)setMidia:(Midia *)m; + +@end diff --git a/iTunesSearch/MidiaDetailViewController.m b/iTunesSearch/MidiaDetailViewController.m new file mode 100644 index 0000000..545ddff --- /dev/null +++ b/iTunesSearch/MidiaDetailViewController.m @@ -0,0 +1,47 @@ +// +// MidiaDetailViewController.m +// iTunesSearch +// +// Created by William Hong Jun Cho on 4/11/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "MidiaDetailViewController.h" +#import "Midia.h" + +@implementation MidiaDetailViewController { + Midia *midia; +} + +-(void)viewDidLoad { + [super viewDidLoad]; + +} + +-(void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + self.textTitle.text = NSLocalizedString(midia.trackName, nil); + self.textWall.text = [NSString stringWithFormat:@"%@\n%@\n%@ %@", + midia.primaryGenreName, + midia.artistName, + midia.currency, midia.trackPrice]; + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:midia.artworkUrl]]; + if(data) { + UIImage *img = [UIImage imageWithData:data]; + if(img) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self.imgPreview setImage:img]; + }); + } + } + }); +} + +-(void) setMidia:(Midia *)m { + midia = m; +} + +@end diff --git a/iTunesSearch/MidiaDetailViewController.xib b/iTunesSearch/MidiaDetailViewController.xib new file mode 100644 index 0000000..15f188e --- /dev/null +++ b/iTunesSearch/MidiaDetailViewController.xib @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iTunesSearch/SearchData.h b/iTunesSearch/SearchData.h index 884a968..0c9efb6 100644 --- a/iTunesSearch/SearchData.h +++ b/iTunesSearch/SearchData.h @@ -19,4 +19,7 @@ -(void)addData:(Midia *)midia; -(NSArray *)getArrayByKind:(NSString *)kind; +@property (nonatomic, strong) NSMutableDictionary *data; +@property (nonatomic, strong) NSMutableArray *midiaTypes; + @end diff --git a/iTunesSearch/SearchData.m b/iTunesSearch/SearchData.m index 5486ed3..6b3c3ac 100644 --- a/iTunesSearch/SearchData.m +++ b/iTunesSearch/SearchData.m @@ -9,13 +9,15 @@ #import "SearchData.h" @implementation SearchData { - NSMutableArray *data; } +@synthesize data, midiaTypes; + -(id)init { self = [super init]; if(self) { - data = [[NSMutableArray alloc] init]; + midiaTypes = [[NSMutableArray alloc]init]; + data = [[NSMutableDictionary alloc] init]; } return self; } @@ -23,7 +25,9 @@ -(id)init { -(id)initWithResults:(NSArray *)results { self = [super init]; if(self) { - data = [[NSMutableArray alloc] init]; + midiaTypes = [[NSMutableArray alloc]init]; + data = [[NSMutableDictionary alloc] init]; + for (NSDictionary *item in results) { NSString *itemKind = [item objectForKey:@"kind"]; @@ -32,7 +36,7 @@ -(id)initWithResults:(NSArray *)results { //todo add regex if([itemKind isEqualToString:@"feature-movie"]) { Filme *filme = [[Filme alloc] init]; - [filme setDuration :[item objectForKey:@"trackTimeMillis"]]; + [filme setDuration:[item objectForKey:@"trackTimeMillis"]]; midia = filme; } else if([itemKind isEqualToString:@"song"]) { Musica *musica = [[Musica alloc] init]; @@ -49,6 +53,8 @@ -(id)initWithResults:(NSArray *)results { } if(midia) { + NSString *kind = [item objectForKey:@"kind"]; + [midia setKind :[item objectForKey:@"kind"]]; [midia setTrackName :[item objectForKey:@"trackName"]]; [midia setTrackId :[item objectForKey:@"trackId"]]; @@ -57,8 +63,17 @@ -(id)initWithResults:(NSArray *)results { [midia setPrimaryGenreName:[item objectForKey:@"primaryGenreName"]]; [midia setCountry :[item objectForKey:@"country"]]; [midia setCurrency :[item objectForKey:@"currency"]]; - [midia setArtworkUrl :[item objectForKey:@"artworkUrl30"]]; - [data addObject:midia]; + [midia setArtworkUrl :[item objectForKey:@"artworkUrl100"]]; + + if(![midiaTypes containsObject:kind]) + [midiaTypes addObject:kind]; + + NSMutableArray *array = [data objectForKey:kind]; + if(!array) { + array = [[NSMutableArray alloc] init]; + [data setObject:array forKey:kind]; + } + [array addObject:midia]; } } } @@ -70,12 +85,7 @@ -(void)addData:(Midia *)midia { } -(NSArray *)getArrayByKind:(NSString *)kind { - NSMutableArray *filtered = [[NSMutableArray alloc]init]; - for (Midia *midia in data) { - if([midia.kind isEqualToString:kind]) - [filtered addObject:midia]; - } - return filtered; + return [data objectForKey:kind]; } @end diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib deleted file mode 100644 index d92a07a..0000000 --- a/iTunesSearch/TableView.xib +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index cfcbde0..eb98c5a 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -10,6 +10,8 @@ @interface TableViewCell : UITableViewCell +@property (weak, nonatomic) IBOutlet UIImageView *imgPreview; + @property (weak, nonatomic) IBOutlet UILabel *name; @property (weak, nonatomic) IBOutlet UILabel *kind; @property (weak, nonatomic) IBOutlet UILabel *genero; diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index 27b35a0..f15908e 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -1,7 +1,7 @@ - + - + @@ -14,39 +14,57 @@ - + + + + + + + + + + + + diff --git a/iTunesSearch/TableViewCellDetailed.xib b/iTunesSearch/TableViewCellDetailed.xib deleted file mode 100644 index 94c1f20..0000000 --- a/iTunesSearch/TableViewCellDetailed.xib +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/iTunesSearch/TableViewController.h b/iTunesSearch/TableViewController.h deleted file mode 100644 index 25a8133..0000000 --- a/iTunesSearch/TableViewController.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// ViewController.h -// iTunesSearch -// -// Created by joaquim on 09/03/15. -// Copyright (c) 2015 joaquim. All rights reserved. -// - -#import - -@interface TableViewController : UIViewController - -@property (strong, nonatomic) IBOutlet UITableView *tableview; - -@end - diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m deleted file mode 100644 index d40e1c8..0000000 --- a/iTunesSearch/TableViewController.m +++ /dev/null @@ -1,130 +0,0 @@ -// -// ViewController.m -// iTunesSearch -// -// Created by joaquim on 09/03/15. -// Copyright (c) 2015 joaquim. All rights reserved. -// - -#import "TableViewController.h" -#import "TableViewCell.h" -#import "iTunesManager.h" -#import "Entidades/Filme.h" -#import "SearchData.h" - - -@interface TableViewController () { - SearchData *midiaData; - NSArray *midias; - UITextField *txtValue; - UIButton *btnSearch; - UISegmentedControl *scType; - iTunesManager *itunes; - - NSArray *MIDIA_TYPES; -} - -@end - -@implementation TableViewController - - -- (void)viewDidLoad { - [super viewDidLoad]; - MIDIA_TYPES = [NSArray arrayWithObjects:@"movie", @"ebook", @"song", @"podcast", nil]; - - UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; - [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; - - itunes = [iTunesManager sharedInstance]; - -#warning Necessario para que a table view tenha um espaco em relacao ao topo, pois caso contrario o texto ficara atras da barra superior - self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 50.f)]; - - txtValue = [[UITextField alloc]initWithFrame:CGRectMake(10, 15, 180, 15)]; - txtValue.backgroundColor = [UIColor redColor]; - [self.tableview.tableHeaderView insertSubview:txtValue atIndex:0]; - - btnSearch = [[UIButton alloc]initWithFrame:CGRectMake(txtValue.bounds.origin.x + txtValue.bounds.size.width + 5, - 15, - 70, - txtValue.bounds.size.height - )]; - [btnSearch setTitle:NSLocalizedString(@"search", nil) forState:UIControlStateNormal]; - [btnSearch setBackgroundColor:[UIColor blueColor]]; - [btnSearch addTarget:self action:@selector(onBtnSearch:) forControlEvents:UIControlEventTouchUpInside]; - [self.tableview.tableHeaderView addSubview:btnSearch]; - - scType = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects: - NSLocalizedString(MIDIA_TYPES[0], nil), - NSLocalizedString(MIDIA_TYPES[1], nil), - NSLocalizedString(MIDIA_TYPES[2], nil), - NSLocalizedString(MIDIA_TYPES[3], nil), - nil]]; - scType.frame = CGRectMake(10, 32, 300, 20); - scType.selectedSegmentIndex = 0; - [self.tableview.tableHeaderView addSubview:scType]; -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - - -#pragma mark - Metodos do UITableViewDataSource --(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - --(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return [midias count]; -} - --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; - - Filme *filme = [midias objectAtIndex:indexPath.row]; - - [celula.name setText:filme.trackName]; - [celula.kind setText:filme.kind]; -// [celula.genero setText:filme.genero]; - - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:filme.artworkUrl]]; - if(data) { - UIImage *img = [UIImage imageWithData:data]; - if(img) { - dispatch_async(dispatch_get_main_queue(), ^{ - celula.imageView.image = img; - }); - } - } - }); - - //celula.imageView.image = [UIImage imageNamed:filme.artworkUrl]; - - return celula; -} - --(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 70; -} - - -#pragma mark - Metodos UISegmentedControl - - - -#pragma mark - Metodos UIButton --(IBAction)onBtnSearch:(id)sender { - NSString *value = txtValue.text; - if(value && value.length > 0) { - midiaData = [itunes buscarMidias:value]; -// midias = [itunes buscarMidias:value midia:MIDIA_TYPES[scType.selectedSegmentIndex]]; - [self.tableview reloadData]; - } -} - - -@end diff --git a/iTunesSearch/en.lproj/Localizable.strings b/iTunesSearch/en.lproj/Localizable.strings index ba52730..55b4b5d 100644 --- a/iTunesSearch/en.lproj/Localizable.strings +++ b/iTunesSearch/en.lproj/Localizable.strings @@ -7,6 +7,7 @@ */ "all" = "All"; "movie" = "Movie"; +"feature-movie" = "Movie"; "ebook" = "EBook"; "song" = "Music"; "podcast" = "Podcast"; diff --git a/iTunesSearch/pt.lproj/Localizable.strings b/iTunesSearch/pt.lproj/Localizable.strings index cde9f44..0ccffbb 100644 --- a/iTunesSearch/pt.lproj/Localizable.strings +++ b/iTunesSearch/pt.lproj/Localizable.strings @@ -7,6 +7,7 @@ */ "all" = "Todos"; "movie" = "Filme"; +"feature-movie" = "Filme"; "ebook" = "EBook"; "song" = "Música"; "podcast" = "Podcast";