From a086729c98002e7492c1669bb5c46d4fef9a0f67 Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Tue, 10 Mar 2015 19:22:15 -0300 Subject: [PATCH 1/7] =?UTF-8?q?Feito=20at=C3=A9=20bronze=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iTunesSearch/Entidades/Filme.h | 1 + iTunesSearch/TableView.xib | 4 ++-- iTunesSearch/TableViewCell.h | 3 +++ iTunesSearch/TableViewCell.xib | 25 +++++++++++++++++++++-- iTunesSearch/TableViewController.m | 28 +++++++++++++++++++++----- iTunesSearch/iTunesManager.m | 32 ++++++++++++++++++++++++++++-- 6 files changed, 82 insertions(+), 11 deletions(-) diff --git a/iTunesSearch/Entidades/Filme.h b/iTunesSearch/Entidades/Filme.h index eb126dc..0e76198 100644 --- a/iTunesSearch/Entidades/Filme.h +++ b/iTunesSearch/Entidades/Filme.h @@ -16,5 +16,6 @@ @property (nonatomic, strong) NSString *duracao; @property (nonatomic, strong) NSString *genero; @property (nonatomic, strong) NSString *pais; +@property (nonatomic, strong) NSString *preco; @end diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib index 55f128c..bb26af1 100644 --- a/iTunesSearch/TableView.xib +++ b/iTunesSearch/TableView.xib @@ -1,5 +1,5 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index b630349..748881d 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -12,6 +12,9 @@ @property (weak, nonatomic) IBOutlet UILabel *nome; @property (weak, nonatomic) IBOutlet UILabel *tipo; +@property (weak, nonatomic) IBOutlet UILabel *artista; +@property (weak, nonatomic) IBOutlet UILabel *duracao; +@property (weak, nonatomic) IBOutlet UILabel *preco; @end diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index bf8bd3f..7e36ebd 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -1,5 +1,5 @@ - + @@ -21,11 +21,29 @@ + + + @@ -37,7 +55,10 @@ + + + diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index f689980..0bcaa9a 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -13,6 +13,8 @@ @interface TableViewController () { NSArray *midias; + UITextField *search; + iTunesManager *itunes; } @end @@ -20,18 +22,27 @@ @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"]; - #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, 75.f)]; + + search = [[UITextField alloc] initWithFrame:CGRectMake(0, 25, self.tableview.frame.size.width -100, 35)]; + [search setBackgroundColor:[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1.0]]; + [self.tableview.tableHeaderView addSubview:search]; + + UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + button.frame = CGRectMake(265, 25, 50, 35); + [button setTitle:@"Buscar" forState:UIControlStateNormal]; + [button addTarget:self action:@selector(busca:) forControlEvents:UIControlEventTouchUpInside]; + [self.tableview.tableHeaderView addSubview:button]; + + itunes = [iTunesManager sharedInstance]; + //midias = [itunes buscarMidias:@"Apple"]; } - (void)didReceiveMemoryWarning { @@ -39,6 +50,10 @@ - (void)didReceiveMemoryWarning { // Dispose of any resources that can be recreated. } +- (void)busca:(UIButton *)button { + midias = [itunes buscarMidias:search.text]; + [self.tableview reloadData]; +} #pragma mark - Metodos do UITableViewDataSource -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -56,6 +71,9 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.nome setText:filme.nome]; [celula.tipo setText:@"Filme"]; + [celula.artista setText:filme.artista]; + [celula.duracao setText:filme.duracao]; + [celula.preco setText:filme.preco]; return celula; } diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index e2babda..fcb5e4b 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -54,16 +54,44 @@ - (NSArray *)buscarMidias:(NSString *)termo { [filme setNome:[item objectForKey:@"trackName"]]; [filme setTrackId:[item objectForKey:@"trackId"]]; [filme setArtista:[item objectForKey:@"artistName"]]; - [filme setDuracao:[item objectForKey:@"trackTimeMillis"]]; + [filme setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; [filme setGenero:[item objectForKey:@"primaryGenreName"]]; [filme setPais:[item objectForKey:@"country"]]; + [filme setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; [filmes addObject:filme]; } return filmes; } - +- (NSString *) formatInterval: (NSString *) i{ + NSTimeInterval interval; + if ([i doubleValue]) { + interval = [i doubleValue]; + } else { + interval = 0.0; + } + unsigned long milliseconds = interval; + unsigned long seconds = milliseconds / 1000; + milliseconds %= 1000; + unsigned long minutes = seconds / 60; + seconds %= 60; + unsigned long hours = minutes / 60; + minutes %= 60; + + NSMutableString * result = [NSMutableString new]; + + if(hours) + [result appendFormat: @"%d:", hours]; + else + [result appendFormat: @"0:"]; + + [result appendFormat: @"%2d:", minutes]; + [result appendFormat: @"%2d", seconds]; + //[result appendFormat: @"%2d",milliseconds]; + + return result; +} #pragma mark - Life Cycle From e18e414fc338bd5a6a631f65e463e2e985b436c6 Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Wed, 11 Mar 2015 17:41:51 -0300 Subject: [PATCH 2/7] Busca por diferentes tipos de media MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Falta definir os itens específicos de Ebook e Podcast. --- iTunesSearch.xcodeproj/project.pbxproj | 18 ++++ iTunesSearch/Entidades/EBook.h | 19 +++++ iTunesSearch/Entidades/EBook.m | 13 +++ iTunesSearch/Entidades/Musica.h | 19 +++++ iTunesSearch/Entidades/Musica.m | 13 +++ iTunesSearch/Entidades/Podcast.h | 19 +++++ iTunesSearch/Entidades/Podcast.m | 13 +++ iTunesSearch/TableViewController.m | 56 +++++++++++-- iTunesSearch/iTunesManager.h | 5 +- iTunesSearch/iTunesManager.m | 110 ++++++++++++++++++++++++- 10 files changed, 274 insertions(+), 11 deletions(-) create mode 100644 iTunesSearch/Entidades/EBook.h create mode 100644 iTunesSearch/Entidades/EBook.m create mode 100644 iTunesSearch/Entidades/Musica.h create mode 100644 iTunesSearch/Entidades/Musica.m create mode 100644 iTunesSearch/Entidades/Podcast.h create mode 100644 iTunesSearch/Entidades/Podcast.m diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 79e06d7..1e921b5 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 4E4D1FED1AB0CD760024AADB /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEC1AB0CD760024AADB /* Musica.m */; }; + 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */; }; + 4E4D1FF31AB0D5680024AADB /* EBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FF21AB0D5680024AADB /* EBook.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,12 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 4E4D1FEB1AB0CD760024AADB /* Musica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Musica.h; path = Entidades/Musica.h; sourceTree = ""; }; + 4E4D1FEC1AB0CD760024AADB /* Musica.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Musica.m; path = Entidades/Musica.m; sourceTree = ""; }; + 4E4D1FEE1AB0D52B0024AADB /* Podcast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Podcast.h; path = Entidades/Podcast.h; sourceTree = ""; }; + 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Podcast.m; path = Entidades/Podcast.m; sourceTree = ""; }; + 4E4D1FF11AB0D5680024AADB /* EBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EBook.h; path = Entidades/EBook.h; sourceTree = ""; }; + 4E4D1FF21AB0D5680024AADB /* EBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EBook.m; path = Entidades/EBook.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 = ""; }; @@ -146,6 +155,12 @@ children = ( 92C21CE61AAE858E0052ABE6 /* Filme.h */, 92C21CE71AAE858E0052ABE6 /* Filme.m */, + 4E4D1FEB1AB0CD760024AADB /* Musica.h */, + 4E4D1FEC1AB0CD760024AADB /* Musica.m */, + 4E4D1FEE1AB0D52B0024AADB /* Podcast.h */, + 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */, + 4E4D1FF11AB0D5680024AADB /* EBook.h */, + 4E4D1FF21AB0D5680024AADB /* EBook.m */, ); name = Entidades; sourceTree = ""; @@ -251,9 +266,12 @@ buildActionMask = 2147483647; files = ( 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */, + 4E4D1FED1AB0CD760024AADB /* Musica.m in Sources */, + 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */, 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */, 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */, 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */, + 4E4D1FF31AB0D5680024AADB /* EBook.m in Sources */, 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */, 92C21CB61AAE757A0052ABE6 /* main.m in Sources */, ); diff --git a/iTunesSearch/Entidades/EBook.h b/iTunesSearch/Entidades/EBook.h new file mode 100644 index 0000000..223cc63 --- /dev/null +++ b/iTunesSearch/Entidades/EBook.h @@ -0,0 +1,19 @@ +// +// EBook.h +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface EBook : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *trackId; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSString *duracao; +@property (nonatomic, strong) NSString *preco; + +@end diff --git a/iTunesSearch/Entidades/EBook.m b/iTunesSearch/Entidades/EBook.m new file mode 100644 index 0000000..121d80e --- /dev/null +++ b/iTunesSearch/Entidades/EBook.m @@ -0,0 +1,13 @@ +// +// EBook.m +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "EBook.h" + +@implementation EBook + +@end diff --git a/iTunesSearch/Entidades/Musica.h b/iTunesSearch/Entidades/Musica.h new file mode 100644 index 0000000..545958c --- /dev/null +++ b/iTunesSearch/Entidades/Musica.h @@ -0,0 +1,19 @@ +// +// Musica.h +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Musica : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *trackId; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSString *duracao; +@property (nonatomic, strong) NSString *preco; + +@end diff --git a/iTunesSearch/Entidades/Musica.m b/iTunesSearch/Entidades/Musica.m new file mode 100644 index 0000000..6924e36 --- /dev/null +++ b/iTunesSearch/Entidades/Musica.m @@ -0,0 +1,13 @@ +// +// Musica.m +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Musica.h" + +@implementation Musica + +@end diff --git a/iTunesSearch/Entidades/Podcast.h b/iTunesSearch/Entidades/Podcast.h new file mode 100644 index 0000000..74a6992 --- /dev/null +++ b/iTunesSearch/Entidades/Podcast.h @@ -0,0 +1,19 @@ +// +// Podcast.h +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Podcast : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *trackId; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSString *duracao; +@property (nonatomic, strong) NSString *preco; + +@end diff --git a/iTunesSearch/Entidades/Podcast.m b/iTunesSearch/Entidades/Podcast.m new file mode 100644 index 0000000..719c904 --- /dev/null +++ b/iTunesSearch/Entidades/Podcast.m @@ -0,0 +1,13 @@ +// +// Podcast.m +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Podcast.h" + +@implementation Podcast + +@end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 0bcaa9a..68fbf83 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -10,6 +10,9 @@ #import "TableViewCell.h" #import "iTunesManager.h" #import "Entidades/Filme.h" +#import "Entidades/Musica.h" +#import "Entidades/Podcast.h" +#import "Entidades/EBook.h" @interface TableViewController () { NSArray *midias; @@ -51,7 +54,12 @@ - (void)didReceiveMemoryWarning { } - (void)busca:(UIButton *)button { - midias = [itunes buscarMidias:search.text]; + NSMutableArray *hue = [[NSMutableArray alloc] init]; + [hue addObjectsFromArray:[itunes buscarPodcasts:search.text]]; + [hue addObjectsFromArray:[itunes buscarMusicas:search.text]]; + [hue addObjectsFromArray:[itunes buscarFilmes:search.text]]; + [hue addObjectsFromArray:[itunes buscarEBooks:search.text]]; + midias = hue; [self.tableview reloadData]; } @@ -67,13 +75,45 @@ -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; - Filme *filme = [midias objectAtIndex:indexPath.row]; - - [celula.nome setText:filme.nome]; - [celula.tipo setText:@"Filme"]; - [celula.artista setText:filme.artista]; - [celula.duracao setText:filme.duracao]; - [celula.preco setText:filme.preco]; + if([[midias objectAtIndex:indexPath.row] isKindOfClass:[Filme class]]){ + Filme *filme = [midias objectAtIndex:indexPath.row]; + + [celula.nome setText:filme.nome]; + [celula.tipo setText:@"Filme"]; + [celula.artista setText:filme.artista]; + [celula.duracao setText:filme.duracao]; + [celula.preco setText:filme.preco]; + + } else if([[midias objectAtIndex:indexPath.row] isKindOfClass:[Musica class]]){ + Musica *musica = [midias objectAtIndex:indexPath.row]; + + [celula.nome setText:musica.nome]; + [celula.tipo setText:@"Música"]; + [celula.artista setText:musica.artista]; + [celula.duracao setText:musica.duracao]; + [celula.preco setText:musica.preco]; + + } else if([[midias objectAtIndex:indexPath.row] isKindOfClass:[Podcast class]]){ + Podcast *podcast = [midias objectAtIndex:indexPath.row]; + + [celula.nome setText:podcast.nome]; + [celula.tipo setText:@"Podcast"]; + [celula.artista setText:podcast.artista]; +// [celula.duracao setText:podcast.duracao]; +// [celula.preco setText:podcast.preco]; + [celula.duracao setHidden:YES]; + [celula.preco setHidden:YES]; + } else if([[midias objectAtIndex:indexPath.row] isKindOfClass:[EBook class]]){ + EBook *ebook = [midias objectAtIndex:indexPath.row]; + + [celula.nome setText:ebook.nome]; + [celula.tipo setText:@"EBook"]; + [celula.artista setText:ebook.artista]; +// [celula.duracao setText:ebook.duracao]; +// [celula.preco setText:ebook.preco]; + [celula.duracao setHidden:YES]; + [celula.preco setHidden:YES]; + } return celula; } diff --git a/iTunesSearch/iTunesManager.h b/iTunesSearch/iTunesManager.h index c0e366b..28e815d 100644 --- a/iTunesSearch/iTunesManager.h +++ b/iTunesSearch/iTunesManager.h @@ -16,6 +16,9 @@ */ + (iTunesManager*)sharedInstance; -- (NSArray *)buscarMidias:(NSString *)termo; +- (NSArray *)buscarFilmes:(NSString *)termo; +- (NSArray *)buscarMusicas:(NSString *)termo; +- (NSArray *)buscarPodcasts:(NSString *)termo; +- (NSArray *)buscarEBooks:(NSString *)termo; @end diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index fcb5e4b..06227ed 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -8,6 +8,9 @@ #import "iTunesManager.h" #import "Entidades/Filme.h" +#import "Entidades/Musica.h" +#import "Entidades/Podcast.h" +#import "Entidades/EBook.h" @implementation iTunesManager @@ -28,8 +31,8 @@ + (id)sharedInstance return SINGLETON; } - -- (NSArray *)buscarMidias:(NSString *)termo { +//Filme +- (NSArray *)buscarFilmes:(NSString *)termo{ if (!termo) { termo = @""; } @@ -64,6 +67,109 @@ - (NSArray *)buscarMidias:(NSString *)termo { return filmes; } +//Musica +- (NSArray *)buscarMusicas:(NSString *)termo { + if (!termo) { + termo = @""; + } + + NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=music", termo]; + NSData *jsonData = [NSData dataWithContentsOfURL: [NSURL URLWithString:url]]; + + NSError *error; + NSDictionary *resultado = [NSJSONSerialization JSONObjectWithData:jsonData + options:NSJSONReadingMutableContainers + error:&error]; + if (error) { + NSLog(@"Não foi possível fazer a busca. ERRO: %@", error); + return nil; + } + + NSArray *resultados = [resultado objectForKey:@"results"]; + NSMutableArray *musicas = [[NSMutableArray alloc] init]; + + for (NSDictionary *item in resultados) { + Musica *musica = [[Musica alloc] init]; + [musica setNome:[item objectForKey:@"trackName"]]; + [musica setTrackId:[item objectForKey:@"trackId"]]; + [musica setArtista:[item objectForKey:@"artistName"]]; + [musica setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; + [musica setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [musicas addObject:musica]; + } + + return musicas; +} + +//Podcast +- (NSArray *)buscarPodcasts:(NSString *)termo { + if (!termo) { + termo = @""; + } + + NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=podcast", termo]; + NSData *jsonData = [NSData dataWithContentsOfURL: [NSURL URLWithString:url]]; + + NSError *error; + NSDictionary *resultado = [NSJSONSerialization JSONObjectWithData:jsonData + options:NSJSONReadingMutableContainers + error:&error]; + if (error) { + NSLog(@"Não foi possível fazer a busca. ERRO: %@", error); + return nil; + } + + NSArray *resultados = [resultado objectForKey:@"results"]; + NSMutableArray *podcasts = [[NSMutableArray alloc] init]; + + for (NSDictionary *item in resultados) { + Podcast *podcast = [[Podcast alloc] init]; + [podcast setNome:[item objectForKey:@"trackName"]]; + [podcast setTrackId:[item objectForKey:@"trackId"]]; + [podcast setArtista:[item objectForKey:@"artistName"]]; + [podcast setDuracao:[item objectForKey:@"primaryGenreName"]]; + [podcast setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [podcasts addObject:podcast]; + } + + return podcasts; +} + +//Ebook +- (NSArray *)buscarEBooks:(NSString *)termo { + if (!termo) { + termo = @""; + } + + NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=ebook", termo]; + NSData *jsonData = [NSData dataWithContentsOfURL: [NSURL URLWithString:url]]; + + NSError *error; + NSDictionary *resultado = [NSJSONSerialization JSONObjectWithData:jsonData + options:NSJSONReadingMutableContainers + error:&error]; + if (error) { + NSLog(@"Não foi possível fazer a busca. ERRO: %@", error); + return nil; + } + + NSArray *resultados = [resultado objectForKey:@"results"]; + NSMutableArray *ebooks = [[NSMutableArray alloc] init]; + + for (NSDictionary *item in resultados) { + EBook *ebook = [[EBook alloc] init]; + [ebook setNome:[item objectForKey:@"trackName"]]; + [ebook setTrackId:[item objectForKey:@"trackId"]]; + [ebook setArtista:[item objectForKey:@"artistName"]]; + [ebook setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; + [ebook setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [ebooks addObject:ebook]; + } + + return ebooks; +} + +//Método que converte double de milissegundos em uma NSString hh:mm:ss - (NSString *) formatInterval: (NSString *) i{ NSTimeInterval interval; if ([i doubleValue]) { From 86688fbddeafc572e99b70ff97ccf0201d4f78b0 Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Thu, 12 Mar 2015 21:37:02 -0300 Subject: [PATCH 3/7] Sections adicionadas --- iTunesSearch/TableViewController.m | 60 +++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 68fbf83..4e7a872 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -15,7 +15,10 @@ #import "Entidades/EBook.h" @interface TableViewController () { - NSArray *midias; + NSArray *filmes; + NSArray *musicas; + NSArray *podcasts; + NSArray *ebooks; UITextField *search; iTunesManager *itunes; } @@ -54,29 +57,37 @@ - (void)didReceiveMemoryWarning { } - (void)busca:(UIButton *)button { - NSMutableArray *hue = [[NSMutableArray alloc] init]; - [hue addObjectsFromArray:[itunes buscarPodcasts:search.text]]; - [hue addObjectsFromArray:[itunes buscarMusicas:search.text]]; - [hue addObjectsFromArray:[itunes buscarFilmes:search.text]]; - [hue addObjectsFromArray:[itunes buscarEBooks:search.text]]; - midias = hue; + filmes = [itunes buscarFilmes:search.text]; + musicas = [itunes buscarMusicas:search.text]; + podcasts = [itunes buscarPodcasts:search.text]; + ebooks = [itunes buscarEBooks:search.text]; [self.tableview reloadData]; } #pragma mark - Metodos do UITableViewDataSource -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; + return 4; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return [midias count]; + if (section == 0) { + return [filmes count]; + } else if (section == 1) { + return [musicas count]; + } else if (section == 2) { + return [podcasts count]; + } else if (section == 3) { + return [ebooks count]; + } + return 0; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; - if([[midias objectAtIndex:indexPath.row] isKindOfClass:[Filme class]]){ - Filme *filme = [midias objectAtIndex:indexPath.row]; + if(indexPath.section == 0){ + Filme *filme = [filmes objectAtIndex:indexPath.row]; [celula.nome setText:filme.nome]; [celula.tipo setText:@"Filme"]; @@ -84,8 +95,8 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.duracao setText:filme.duracao]; [celula.preco setText:filme.preco]; - } else if([[midias objectAtIndex:indexPath.row] isKindOfClass:[Musica class]]){ - Musica *musica = [midias objectAtIndex:indexPath.row]; + } else if(indexPath.section == 1){ + Musica *musica = [musicas objectAtIndex:indexPath.row]; [celula.nome setText:musica.nome]; [celula.tipo setText:@"Música"]; @@ -93,8 +104,8 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.duracao setText:musica.duracao]; [celula.preco setText:musica.preco]; - } else if([[midias objectAtIndex:indexPath.row] isKindOfClass:[Podcast class]]){ - Podcast *podcast = [midias objectAtIndex:indexPath.row]; + } else if(indexPath.section == 2){ + Podcast *podcast = [podcasts objectAtIndex:indexPath.row]; [celula.nome setText:podcast.nome]; [celula.tipo setText:@"Podcast"]; @@ -103,8 +114,9 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS // [celula.preco setText:podcast.preco]; [celula.duracao setHidden:YES]; [celula.preco setHidden:YES]; - } else if([[midias objectAtIndex:indexPath.row] isKindOfClass:[EBook class]]){ - EBook *ebook = [midias objectAtIndex:indexPath.row]; + + } else if(indexPath.section == 3){ + EBook *ebook = [podcasts objectAtIndex:indexPath.row]; [celula.nome setText:ebook.nome]; [celula.tipo setText:@"EBook"]; @@ -114,7 +126,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.duracao setHidden:YES]; [celula.preco setHidden:YES]; } - + return celula; } @@ -122,5 +134,17 @@ -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat return 70; } +- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { + if (section == 0) + return @"Filmes"; + if (section == 1) + return @"Músicas"; + if (section == 2) + return @"Podcasts"; + if (section == 3) + return @"EBooks"; + return @"undefined"; +} + @end From a6d3b9611335f0c2c2834a6983cc4b52ff6b6313 Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Fri, 13 Mar 2015 14:58:35 -0300 Subject: [PATCH 4/7] NavigationContoller feito DetailViewController e Midia criados. --- iTunesSearch.xcodeproj/project.pbxproj | 16 ++++++++++ iTunesSearch/AppDelegate.m | 3 +- iTunesSearch/DetailViewController.h | 19 ++++++++++++ iTunesSearch/DetailViewController.m | 38 +++++++++++++++++++++++ iTunesSearch/DetailViewController.xib | 43 ++++++++++++++++++++++++++ iTunesSearch/Entidades/Filme.h | 6 ++-- iTunesSearch/Midia.h | 17 ++++++++++ iTunesSearch/Midia.m | 13 ++++++++ iTunesSearch/TableViewController.m | 23 +++++++++++--- iTunesSearch/iTunesManager.m | 2 +- 10 files changed, 169 insertions(+), 11 deletions(-) create mode 100644 iTunesSearch/DetailViewController.h create mode 100644 iTunesSearch/DetailViewController.m create mode 100644 iTunesSearch/DetailViewController.xib create mode 100644 iTunesSearch/Midia.h create mode 100644 iTunesSearch/Midia.m diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 1e921b5..542b65f 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -10,6 +10,9 @@ 4E4D1FED1AB0CD760024AADB /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEC1AB0CD760024AADB /* Musica.m */; }; 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */; }; 4E4D1FF31AB0D5680024AADB /* EBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FF21AB0D5680024AADB /* EBook.m */; }; + 4E58B0E91AB33DF8006D4291 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58B0E71AB33DF8006D4291 /* DetailViewController.m */; }; + 4E58B0EA1AB33DF8006D4291 /* DetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4E58B0E81AB33DF8006D4291 /* DetailViewController.xib */; }; + 4E58B0ED1AB350A4006D4291 /* Midia.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58B0EC1AB350A4006D4291 /* Midia.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 */; }; @@ -39,6 +42,11 @@ 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Podcast.m; path = Entidades/Podcast.m; sourceTree = ""; }; 4E4D1FF11AB0D5680024AADB /* EBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EBook.h; path = Entidades/EBook.h; sourceTree = ""; }; 4E4D1FF21AB0D5680024AADB /* EBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EBook.m; path = Entidades/EBook.m; sourceTree = ""; }; + 4E58B0E61AB33DF8006D4291 /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; + 4E58B0E71AB33DF8006D4291 /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; + 4E58B0E81AB33DF8006D4291 /* DetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DetailViewController.xib; sourceTree = ""; }; + 4E58B0EB1AB350A4006D4291 /* Midia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Midia.h; sourceTree = ""; }; + 4E58B0EC1AB350A4006D4291 /* Midia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Midia.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 = ""; }; @@ -108,6 +116,9 @@ 92C21CDC1AAE75DC0052ABE6 /* TableView.xib */, 92C21CD91AAE75B30052ABE6 /* iTunesManager.h */, 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */, + 4E58B0E61AB33DF8006D4291 /* DetailViewController.h */, + 4E58B0E71AB33DF8006D4291 /* DetailViewController.m */, + 4E58B0E81AB33DF8006D4291 /* DetailViewController.xib */, 92C21CC01AAE757A0052ABE6 /* Images.xcassets */, 92C21CB31AAE757A0052ABE6 /* Supporting Files */, ); @@ -161,6 +172,8 @@ 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */, 4E4D1FF11AB0D5680024AADB /* EBook.h */, 4E4D1FF21AB0D5680024AADB /* EBook.m */, + 4E58B0EB1AB350A4006D4291 /* Midia.h */, + 4E58B0EC1AB350A4006D4291 /* Midia.m */, ); name = Entidades; sourceTree = ""; @@ -248,6 +261,7 @@ 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */, 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */, 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */, + 4E58B0EA1AB33DF8006D4291 /* DetailViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -270,9 +284,11 @@ 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */, 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */, 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */, + 4E58B0E91AB33DF8006D4291 /* DetailViewController.m in Sources */, 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */, 4E4D1FF31AB0D5680024AADB /* EBook.m in Sources */, 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */, + 4E58B0ED1AB350A4006D4291 /* Midia.m in Sources */, 92C21CB61AAE757A0052ABE6 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/iTunesSearch/AppDelegate.m b/iTunesSearch/AppDelegate.m index d513fd8..d45800e 100644 --- a/iTunesSearch/AppDelegate.m +++ b/iTunesSearch/AppDelegate.m @@ -28,8 +28,9 @@ - (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]; [self.window makeKeyAndVisible]; + UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:tvc]; + [self.window setRootViewController:navigation]; return YES; } diff --git a/iTunesSearch/DetailViewController.h b/iTunesSearch/DetailViewController.h new file mode 100644 index 0000000..305fa37 --- /dev/null +++ b/iTunesSearch/DetailViewController.h @@ -0,0 +1,19 @@ +// +// DetailViewController.h +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 13/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import +#import "Filme.h" +#import "Musica.h" +#import "Podcast.h" +#import "EBook.h" +#import "Midia.h" + +@interface DetailViewController : UIViewController +@property (nonatomic, strong) Midia *midia; + +@end diff --git a/iTunesSearch/DetailViewController.m b/iTunesSearch/DetailViewController.m new file mode 100644 index 0000000..ac46396 --- /dev/null +++ b/iTunesSearch/DetailViewController.m @@ -0,0 +1,38 @@ +// +// DetailViewController.m +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 13/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "DetailViewController.h" + +@interface DetailViewController () +@property (weak, nonatomic) IBOutlet UILabel *nome; +@property (weak, nonatomic) IBOutlet UILabel *artista; +@property (weak, nonatomic) IBOutlet UILabel *preco; + +@end + +@implementation DetailViewController + +- (void) viewWillAppear:(BOOL)animated{ + self.nome.text = [NSString stringWithFormat:@"Nome: %@", _midia.nome]; + self.artista.text = [NSString stringWithFormat:@"Artista: %@", _midia.artista]; + self.preco.text = [NSString stringWithFormat:@"Preço %@", _midia.preco]; + //[NSString stringWithFormat:@" %@",]; + /*if([_midia isMemberOfClass:[Filme class]]){ + Filme *filme = (Filme *) self.midia; + //self.nome.text = [NSString stringWithFormat:@"Nome: %@",filme.nome]; + } else if ([_midia isMemberOfClass:[Musica class]]){ + Musica *musica = (Musica *) self.midia; + } else if ([_midia isMemberOfClass:[Podcast class]]){ + Podcast *podcast = (Podcast *) self.midia; + } else if ([_midia isMemberOfClass:[EBook class]]){ + EBook *ebook = (EBook *) self.midia; + }*/ + +} + +@end diff --git a/iTunesSearch/DetailViewController.xib b/iTunesSearch/DetailViewController.xib new file mode 100644 index 0000000..64abbea --- /dev/null +++ b/iTunesSearch/DetailViewController.xib @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iTunesSearch/Entidades/Filme.h b/iTunesSearch/Entidades/Filme.h index 0e76198..8f57809 100644 --- a/iTunesSearch/Entidades/Filme.h +++ b/iTunesSearch/Entidades/Filme.h @@ -7,15 +7,13 @@ // #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 *preco; @end diff --git a/iTunesSearch/Midia.h b/iTunesSearch/Midia.h new file mode 100644 index 0000000..da6d3a3 --- /dev/null +++ b/iTunesSearch/Midia.h @@ -0,0 +1,17 @@ +// +// Midia.h +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 13/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Midia : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSString *preco; + +@end diff --git a/iTunesSearch/Midia.m b/iTunesSearch/Midia.m new file mode 100644 index 0000000..85fb36e --- /dev/null +++ b/iTunesSearch/Midia.m @@ -0,0 +1,13 @@ +// +// Midia.m +// iTunesSearch +// +// Created by Lucas Leal Mendonça on 13/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Midia.h" + +@implementation Midia + +@end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 4e7a872..8befbe8 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -9,10 +9,12 @@ #import "TableViewController.h" #import "TableViewCell.h" #import "iTunesManager.h" +#import "Midia.h" #import "Entidades/Filme.h" #import "Entidades/Musica.h" #import "Entidades/Podcast.h" #import "Entidades/EBook.h" +#import "DetailViewController.h" @interface TableViewController () { NSArray *filmes; @@ -34,11 +36,13 @@ - (void)viewDidLoad { UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; + #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, 75.f)]; search = [[UITextField alloc] initWithFrame:CGRectMake(0, 25, self.tableview.frame.size.width -100, 35)]; [search setBackgroundColor:[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1.0]]; + [search becomeFirstResponder]; [self.tableview.tableHeaderView addSubview:search]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; @@ -46,7 +50,7 @@ - (void)viewDidLoad { [button setTitle:@"Buscar" forState:UIControlStateNormal]; [button addTarget:self action:@selector(busca:) forControlEvents:UIControlEventTouchUpInside]; [self.tableview.tableHeaderView addSubview:button]; - + //[search ] itunes = [iTunesManager sharedInstance]; //midias = [itunes buscarMidias:@"Apple"]; } @@ -61,6 +65,8 @@ - (void)busca:(UIButton *)button { musicas = [itunes buscarMusicas:search.text]; podcasts = [itunes buscarPodcasts:search.text]; ebooks = [itunes buscarEBooks:search.text]; + [self resignFirstResponder]; + [self.tableview reloadData]; } @@ -69,6 +75,13 @@ -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 4; } +-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + DetailViewController *details = [[DetailViewController alloc] init]; + Midia *midia = filmes[indexPath.row]; + details.midia = midia; + [self.navigationController pushViewController:details animated:YES]; +} + -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) { return [filmes count]; @@ -111,9 +124,9 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.tipo setText:@"Podcast"]; [celula.artista setText:podcast.artista]; // [celula.duracao setText:podcast.duracao]; -// [celula.preco setText:podcast.preco]; + [celula.preco setText:podcast.preco]; [celula.duracao setHidden:YES]; - [celula.preco setHidden:YES]; +// [celula.preco setHidden:YES]; } else if(indexPath.section == 3){ EBook *ebook = [podcasts objectAtIndex:indexPath.row]; @@ -122,9 +135,9 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.tipo setText:@"EBook"]; [celula.artista setText:ebook.artista]; // [celula.duracao setText:ebook.duracao]; -// [celula.preco setText:ebook.preco]; + [celula.preco setText:ebook.preco]; [celula.duracao setHidden:YES]; - [celula.preco setHidden:YES]; +// [celula.preco setHidden:YES]; } return celula; diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index 06227ed..fa92422 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -162,7 +162,7 @@ - (NSArray *)buscarEBooks:(NSString *)termo { [ebook setTrackId:[item objectForKey:@"trackId"]]; [ebook setArtista:[item objectForKey:@"artistName"]]; [ebook setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; - [ebook setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [ebook setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"price"]]]; [ebooks addObject:ebook]; } From 04b5420228f32ac0c9dc2ea4b7cd3f01157bb62d Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Sat, 14 Mar 2015 15:29:40 -0300 Subject: [PATCH 5/7] Tela de detalhes aprimorada e bugs consertados. --- iTunesSearch.xcodeproj/project.pbxproj | 12 +++--- iTunesSearch/DetailViewController.m | 27 ++++++++++-- iTunesSearch/DetailViewController.xib | 58 +++++++++++++++++++++++--- iTunesSearch/Entidades/EBook.h | 11 +++-- iTunesSearch/Entidades/Musica.h | 10 ++--- iTunesSearch/Entidades/Musica.m | 2 +- iTunesSearch/Entidades/Podcast.h | 10 ++--- iTunesSearch/Midia.h | 1 + iTunesSearch/TableViewController.m | 13 +++++- iTunesSearch/iTunesManager.m | 11 ++++- 10 files changed, 120 insertions(+), 35 deletions(-) diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 542b65f..150fd4d 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -7,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 4E4D1FED1AB0CD760024AADB /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEC1AB0CD760024AADB /* Musica.m */; }; + 4E0A0E731AB4986C00E2CB45 /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E0A0E721AB4986C00E2CB45 /* Musica.m */; }; 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */; }; 4E4D1FF31AB0D5680024AADB /* EBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FF21AB0D5680024AADB /* EBook.m */; }; 4E58B0E91AB33DF8006D4291 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58B0E71AB33DF8006D4291 /* DetailViewController.m */; }; @@ -36,8 +36,8 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 4E4D1FEB1AB0CD760024AADB /* Musica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Musica.h; path = Entidades/Musica.h; sourceTree = ""; }; - 4E4D1FEC1AB0CD760024AADB /* Musica.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Musica.m; path = Entidades/Musica.m; sourceTree = ""; }; + 4E0A0E711AB4986C00E2CB45 /* Musica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Musica.h; path = Entidades/Musica.h; sourceTree = ""; }; + 4E0A0E721AB4986C00E2CB45 /* Musica.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Musica.m; path = Entidades/Musica.m; sourceTree = ""; }; 4E4D1FEE1AB0D52B0024AADB /* Podcast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Podcast.h; path = Entidades/Podcast.h; sourceTree = ""; }; 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Podcast.m; path = Entidades/Podcast.m; sourceTree = ""; }; 4E4D1FF11AB0D5680024AADB /* EBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EBook.h; path = Entidades/EBook.h; sourceTree = ""; }; @@ -166,14 +166,14 @@ children = ( 92C21CE61AAE858E0052ABE6 /* Filme.h */, 92C21CE71AAE858E0052ABE6 /* Filme.m */, - 4E4D1FEB1AB0CD760024AADB /* Musica.h */, - 4E4D1FEC1AB0CD760024AADB /* Musica.m */, 4E4D1FEE1AB0D52B0024AADB /* Podcast.h */, 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */, 4E4D1FF11AB0D5680024AADB /* EBook.h */, 4E4D1FF21AB0D5680024AADB /* EBook.m */, 4E58B0EB1AB350A4006D4291 /* Midia.h */, 4E58B0EC1AB350A4006D4291 /* Midia.m */, + 4E0A0E711AB4986C00E2CB45 /* Musica.h */, + 4E0A0E721AB4986C00E2CB45 /* Musica.m */, ); name = Entidades; sourceTree = ""; @@ -280,8 +280,8 @@ buildActionMask = 2147483647; files = ( 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */, - 4E4D1FED1AB0CD760024AADB /* Musica.m in Sources */, 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */, + 4E0A0E731AB4986C00E2CB45 /* Musica.m in Sources */, 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */, 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */, 4E58B0E91AB33DF8006D4291 /* DetailViewController.m in Sources */, diff --git a/iTunesSearch/DetailViewController.m b/iTunesSearch/DetailViewController.m index ac46396..6d16f86 100644 --- a/iTunesSearch/DetailViewController.m +++ b/iTunesSearch/DetailViewController.m @@ -9,9 +9,13 @@ #import "DetailViewController.h" @interface DetailViewController () +@property (weak, nonatomic) IBOutlet UIImageView *imagem; @property (weak, nonatomic) IBOutlet UILabel *nome; @property (weak, nonatomic) IBOutlet UILabel *artista; @property (weak, nonatomic) IBOutlet UILabel *preco; +@property (weak, nonatomic) IBOutlet UILabel *customA; +@property (weak, nonatomic) IBOutlet UILabel *customB; +@property (weak, nonatomic) IBOutlet UILabel *tipo; @end @@ -20,18 +24,33 @@ @implementation DetailViewController - (void) viewWillAppear:(BOOL)animated{ self.nome.text = [NSString stringWithFormat:@"Nome: %@", _midia.nome]; self.artista.text = [NSString stringWithFormat:@"Artista: %@", _midia.artista]; - self.preco.text = [NSString stringWithFormat:@"Preço %@", _midia.preco]; + self.preco.text = [NSString stringWithFormat:@"Preço: %@", _midia.preco]; + NSURL *url = [[NSURL alloc] initWithString:_midia.image]; + _tipo.text = (NSStringFromClass([_midia class])); + + NSData *data = [[NSData alloc] initWithContentsOfURL:url]; + + UIImage *tmpImage = [[UIImage alloc] initWithData:data]; + + self.imagem.image = tmpImage; //[NSString stringWithFormat:@" %@",]; - /*if([_midia isMemberOfClass:[Filme class]]){ + if([_midia isMemberOfClass:[Filme class]]){ Filme *filme = (Filme *) self.midia; - //self.nome.text = [NSString stringWithFormat:@"Nome: %@",filme.nome]; + self.customA.text = [NSString stringWithFormat:@"Duração: %@",filme.duracao]; + self.customB.text = [NSString stringWithFormat:@"Gênero: %@", filme.genero]; } else if ([_midia isMemberOfClass:[Musica class]]){ Musica *musica = (Musica *) self.midia; + self.customA.text = [NSString stringWithFormat:@"Duração: %@",musica.duracao]; + self.customB.text = [NSString stringWithFormat:@"Coleção: %@",musica.colecao]; } else if ([_midia isMemberOfClass:[Podcast class]]){ Podcast *podcast = (Podcast *) self.midia; + self.customA.text = [NSString stringWithFormat:@"Gênero: %@",podcast.genero]; + self.customB.text = [NSString stringWithFormat:@"Coleção: %@",podcast.colecao]; } else if ([_midia isMemberOfClass:[EBook class]]){ EBook *ebook = (EBook *) self.midia; - }*/ + self.customA.text = [NSString stringWithFormat:@"Tamanho: %@",ebook.fileSize]; + self.customB.text = [NSString stringWithFormat:@"Nota media: %@",ebook.media]; + } } diff --git a/iTunesSearch/DetailViewController.xib b/iTunesSearch/DetailViewController.xib index 64abbea..1caa042 100644 --- a/iTunesSearch/DetailViewController.xib +++ b/iTunesSearch/DetailViewController.xib @@ -7,8 +7,12 @@ + + + + @@ -17,23 +21,65 @@ - diff --git a/iTunesSearch/Entidades/EBook.h b/iTunesSearch/Entidades/EBook.h index 223cc63..a109e26 100644 --- a/iTunesSearch/Entidades/EBook.h +++ b/iTunesSearch/Entidades/EBook.h @@ -7,13 +7,16 @@ // #import +#import "Midia.h" -@interface EBook : NSObject -@property (nonatomic, strong) NSString *nome; +@interface EBook : Midia + @property (nonatomic, strong) NSString *trackId; -@property (nonatomic, strong) NSString *artista; @property (nonatomic, strong) NSString *duracao; -@property (nonatomic, strong) NSString *preco; +@property (nonatomic, strong) NSString *fileSize; +@property (nonatomic, strong) NSString *media; + + @end diff --git a/iTunesSearch/Entidades/Musica.h b/iTunesSearch/Entidades/Musica.h index 545958c..42beaee 100644 --- a/iTunesSearch/Entidades/Musica.h +++ b/iTunesSearch/Entidades/Musica.h @@ -2,18 +2,16 @@ // Musica.h // iTunesSearch // -// Created by Lucas Leal Mendonça on 11/03/15. +// Created by Lucas Leal Mendonça on 14/03/15. // Copyright (c) 2015 joaquim. All rights reserved. // -#import +#import "Midia.h" -@interface Musica : NSObject +@interface Musica : 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 *preco; +@property (nonatomic, strong) NSString *colecao; @end diff --git a/iTunesSearch/Entidades/Musica.m b/iTunesSearch/Entidades/Musica.m index 6924e36..28528d1 100644 --- a/iTunesSearch/Entidades/Musica.m +++ b/iTunesSearch/Entidades/Musica.m @@ -2,7 +2,7 @@ // Musica.m // iTunesSearch // -// Created by Lucas Leal Mendonça on 11/03/15. +// Created by Lucas Leal Mendonça on 14/03/15. // Copyright (c) 2015 joaquim. All rights reserved. // diff --git a/iTunesSearch/Entidades/Podcast.h b/iTunesSearch/Entidades/Podcast.h index 74a6992..1de74c6 100644 --- a/iTunesSearch/Entidades/Podcast.h +++ b/iTunesSearch/Entidades/Podcast.h @@ -7,13 +7,13 @@ // #import +#import "Midia.h" -@interface Podcast : NSObject -@property (nonatomic, strong) NSString *nome; +@interface Podcast : Midia + @property (nonatomic, strong) NSString *trackId; -@property (nonatomic, strong) NSString *artista; -@property (nonatomic, strong) NSString *duracao; -@property (nonatomic, strong) NSString *preco; +@property (nonatomic, strong) NSString *genero; +@property (nonatomic, strong) NSString *colecao; @end diff --git a/iTunesSearch/Midia.h b/iTunesSearch/Midia.h index da6d3a3..335ea6a 100644 --- a/iTunesSearch/Midia.h +++ b/iTunesSearch/Midia.h @@ -13,5 +13,6 @@ @property (nonatomic, strong) NSString *nome; @property (nonatomic, strong) NSString *artista; @property (nonatomic, strong) NSString *preco; +@property (nonatomic, strong) NSString *image; @end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 8befbe8..1e59472 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -77,7 +77,18 @@ -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ DetailViewController *details = [[DetailViewController alloc] init]; - Midia *midia = filmes[indexPath.row]; + Midia *midia; + if(indexPath.section == 0){ + midia = filmes[indexPath.row]; + } else if(indexPath.section == 1){ + midia = musicas[indexPath.row]; + + } else if(indexPath.section == 2){ + midia = podcasts[indexPath.row]; + + } else if(indexPath.section == 3){ + midia = ebooks[indexPath.row]; + } details.midia = midia; [self.navigationController pushViewController:details animated:YES]; } diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index fa92422..7b816f7 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -61,6 +61,7 @@ - (NSArray *)buscarFilmes:(NSString *)termo{ [filme setGenero:[item objectForKey:@"primaryGenreName"]]; [filme setPais:[item objectForKey:@"country"]]; [filme setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [filme setImage:[item objectForKey:@"artworkUrl100"]]; [filmes addObject:filme]; } @@ -95,6 +96,8 @@ - (NSArray *)buscarMusicas:(NSString *)termo { [musica setArtista:[item objectForKey:@"artistName"]]; [musica setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; [musica setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [musica setImage:[item objectForKey:@"artworkUrl100"]]; + [musica setColecao:[item objectForKey:@"collectionName"]]; [musicas addObject:musica]; } @@ -127,8 +130,10 @@ - (NSArray *)buscarPodcasts:(NSString *)termo { [podcast setNome:[item objectForKey:@"trackName"]]; [podcast setTrackId:[item objectForKey:@"trackId"]]; [podcast setArtista:[item objectForKey:@"artistName"]]; - [podcast setDuracao:[item objectForKey:@"primaryGenreName"]]; + [podcast setGenero:[item objectForKey:@"primaryGenreName"]]; [podcast setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; + [podcast setImage:[item objectForKey:@"artworkUrl100"]]; + [podcast setColecao:[item objectForKey:@"collectionName"]]; [podcasts addObject:podcast]; } @@ -161,8 +166,10 @@ - (NSArray *)buscarEBooks:(NSString *)termo { [ebook setNome:[item objectForKey:@"trackName"]]; [ebook setTrackId:[item objectForKey:@"trackId"]]; [ebook setArtista:[item objectForKey:@"artistName"]]; - [ebook setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; [ebook setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"price"]]]; + [ebook setImage:[item objectForKey:@"artworkUrl100"]]; + [ebook setFileSize:[NSString stringWithFormat:@"%@ bytes", [item objectForKey:@"fileSizeBytes"]]]; + [ebook setMedia:[NSString stringWithFormat:@"%@", [item objectForKey:@"averageUserRating"]]]; [ebooks addObject:ebook]; } From fecfd368f92ec2cff591bc8d5d977f93945198bf Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Sat, 14 Mar 2015 23:01:37 -0300 Subject: [PATCH 6/7] =?UTF-8?q?Internacionaliza=C3=A7=C3=A3o=20feito.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- en.lproj/Localizable.strings | 7 ++++ fr.lproj/Localizable.strings | 12 ++++++ iTunesSearch.xcodeproj/project.pbxproj | 44 +++++++++++++++++++-- iTunesSearch/{ => Base.lproj}/TableView.xib | 0 iTunesSearch/TableViewController.m | 12 +++--- iTunesSearch/en.lproj/TableView.strings | 0 iTunesSearch/fr.lproj/TableView.strings | 0 iTunesSearch/pt.lproj/TableView.strings | 0 pt.lproj/Localizable.strings | 12 ++++++ 9 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 en.lproj/Localizable.strings create mode 100644 fr.lproj/Localizable.strings rename iTunesSearch/{ => Base.lproj}/TableView.xib (100%) create mode 100644 iTunesSearch/en.lproj/TableView.strings create mode 100644 iTunesSearch/fr.lproj/TableView.strings create mode 100644 iTunesSearch/pt.lproj/TableView.strings create mode 100644 pt.lproj/Localizable.strings diff --git a/en.lproj/Localizable.strings b/en.lproj/Localizable.strings new file mode 100644 index 0000000..16b8ace --- /dev/null +++ b/en.lproj/Localizable.strings @@ -0,0 +1,7 @@ +/* + Localizable.strings + iTunesSearch + + Created by Lucas Leal Mendonça on 14/03/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ diff --git a/fr.lproj/Localizable.strings b/fr.lproj/Localizable.strings new file mode 100644 index 0000000..ad535d5 --- /dev/null +++ b/fr.lproj/Localizable.strings @@ -0,0 +1,12 @@ +/* + Localizable.strings + iTunesSearch + + Created by Lucas Leal Mendonça on 14/03/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ +"Search" = "Recherche"; +"Movie" = "Film"; +"Music"= "Músique"; +"Movies" = "Films"; +"Musics"= "Músiques"; \ No newline at end of file diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 150fd4d..9db378e 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -8,18 +8,19 @@ /* Begin PBXBuildFile section */ 4E0A0E731AB4986C00E2CB45 /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E0A0E721AB4986C00E2CB45 /* Musica.m */; }; + 4E0A0E7B1AB4BE7700E2CB45 /* TableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4E0A0E7D1AB4BE7700E2CB45 /* TableView.xib */; }; 4E4D1FF01AB0D52B0024AADB /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */; }; 4E4D1FF31AB0D5680024AADB /* EBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4D1FF21AB0D5680024AADB /* EBook.m */; }; 4E58B0E91AB33DF8006D4291 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58B0E71AB33DF8006D4291 /* DetailViewController.m */; }; 4E58B0EA1AB33DF8006D4291 /* DetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4E58B0E81AB33DF8006D4291 /* DetailViewController.xib */; }; 4E58B0ED1AB350A4006D4291 /* Midia.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58B0EC1AB350A4006D4291 /* Midia.m */; }; + 4E9CEB301AB51B50005BB08D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4E9CEB321AB51B50005BB08D /* Localizable.strings */; }; 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 */; }; @@ -38,6 +39,8 @@ /* Begin PBXFileReference section */ 4E0A0E711AB4986C00E2CB45 /* Musica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Musica.h; path = Entidades/Musica.h; sourceTree = ""; }; 4E0A0E721AB4986C00E2CB45 /* Musica.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Musica.m; path = Entidades/Musica.m; sourceTree = ""; }; + 4E0A0E7C1AB4BE7700E2CB45 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/TableView.xib; sourceTree = ""; }; + 4E0A0E7F1AB4BE8100E2CB45 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/TableView.strings; sourceTree = ""; }; 4E4D1FEE1AB0D52B0024AADB /* Podcast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Podcast.h; path = Entidades/Podcast.h; sourceTree = ""; }; 4E4D1FEF1AB0D52B0024AADB /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Podcast.m; path = Entidades/Podcast.m; sourceTree = ""; }; 4E4D1FF11AB0D5680024AADB /* EBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EBook.h; path = Entidades/EBook.h; sourceTree = ""; }; @@ -47,6 +50,11 @@ 4E58B0E81AB33DF8006D4291 /* DetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DetailViewController.xib; sourceTree = ""; }; 4E58B0EB1AB350A4006D4291 /* Midia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Midia.h; sourceTree = ""; }; 4E58B0EC1AB350A4006D4291 /* Midia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Midia.m; sourceTree = ""; }; + 4E9CEB2F1AB51AED005BB08D /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/TableView.strings; sourceTree = ""; }; + 4E9CEB311AB51B50005BB08D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + 4E9CEB331AB51B6D005BB08D /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Localizable.strings; sourceTree = ""; }; + 4E9CEB341AB51E5E005BB08D /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/TableView.strings; sourceTree = ""; }; + 4E9CEB351AB51E63005BB08D /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; 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 = ""; }; @@ -60,7 +68,6 @@ 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 = ""; }; @@ -113,7 +120,8 @@ 92C21CB81AAE757A0052ABE6 /* AppDelegate.m */, 92C21CBA1AAE757A0052ABE6 /* TableViewController.h */, 92C21CBB1AAE757A0052ABE6 /* TableViewController.m */, - 92C21CDC1AAE75DC0052ABE6 /* TableView.xib */, + 4E0A0E7D1AB4BE7700E2CB45 /* TableView.xib */, + 4E9CEB321AB51B50005BB08D /* Localizable.strings */, 92C21CD91AAE75B30052ABE6 /* iTunesManager.h */, 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */, 4E58B0E61AB33DF8006D4291 /* DetailViewController.h */, @@ -241,6 +249,8 @@ knownRegions = ( en, Base, + pt, + fr, ); mainGroup = 92C21CA71AAE757A0052ABE6; productRefGroup = 92C21CB11AAE757A0052ABE6 /* Products */; @@ -258,9 +268,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4E9CEB301AB51B50005BB08D /* Localizable.strings in Resources */, 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */, 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */, - 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */, + 4E0A0E7B1AB4BE7700E2CB45 /* TableView.xib in Resources */, 4E58B0EA1AB33DF8006D4291 /* DetailViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -311,6 +322,31 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + 4E0A0E7D1AB4BE7700E2CB45 /* TableView.xib */ = { + isa = PBXVariantGroup; + children = ( + 4E0A0E7C1AB4BE7700E2CB45 /* Base */, + 4E0A0E7F1AB4BE8100E2CB45 /* en */, + 4E9CEB2F1AB51AED005BB08D /* pt */, + 4E9CEB341AB51E5E005BB08D /* fr */, + ); + name = TableView.xib; + sourceTree = ""; + }; + 4E9CEB321AB51B50005BB08D /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 4E9CEB311AB51B50005BB08D /* en */, + 4E9CEB331AB51B6D005BB08D /* pt */, + 4E9CEB351AB51E63005BB08D /* fr */, + ); + name = Localizable.strings; + path = ..; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 92C21CD11AAE757A0052ABE6 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/Base.lproj/TableView.xib similarity index 100% rename from iTunesSearch/TableView.xib rename to iTunesSearch/Base.lproj/TableView.xib diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 1e59472..3cdf019 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -47,12 +47,10 @@ - (void)viewDidLoad { UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(265, 25, 50, 35); - [button setTitle:@"Buscar" forState:UIControlStateNormal]; + [button setTitle:NSLocalizedString(@"Search", nil) forState:UIControlStateNormal]; [button addTarget:self action:@selector(busca:) forControlEvents:UIControlEventTouchUpInside]; [self.tableview.tableHeaderView addSubview:button]; - //[search ] itunes = [iTunesManager sharedInstance]; - //midias = [itunes buscarMidias:@"Apple"]; } - (void)didReceiveMemoryWarning { @@ -114,7 +112,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS Filme *filme = [filmes objectAtIndex:indexPath.row]; [celula.nome setText:filme.nome]; - [celula.tipo setText:@"Filme"]; + [celula.tipo setText:NSLocalizedString(@"Movie", nil)]; [celula.artista setText:filme.artista]; [celula.duracao setText:filme.duracao]; [celula.preco setText:filme.preco]; @@ -123,7 +121,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS Musica *musica = [musicas objectAtIndex:indexPath.row]; [celula.nome setText:musica.nome]; - [celula.tipo setText:@"Música"]; + [celula.tipo setText:NSLocalizedString(@"Music", nil)]; [celula.artista setText:musica.artista]; [celula.duracao setText:musica.duracao]; [celula.preco setText:musica.preco]; @@ -160,9 +158,9 @@ -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if (section == 0) - return @"Filmes"; + return NSLocalizedString(@"Movies", nil); if (section == 1) - return @"Músicas"; + return NSLocalizedString(@"Musics", nil); if (section == 2) return @"Podcasts"; if (section == 3) diff --git a/iTunesSearch/en.lproj/TableView.strings b/iTunesSearch/en.lproj/TableView.strings new file mode 100644 index 0000000..e69de29 diff --git a/iTunesSearch/fr.lproj/TableView.strings b/iTunesSearch/fr.lproj/TableView.strings new file mode 100644 index 0000000..e69de29 diff --git a/iTunesSearch/pt.lproj/TableView.strings b/iTunesSearch/pt.lproj/TableView.strings new file mode 100644 index 0000000..e69de29 diff --git a/pt.lproj/Localizable.strings b/pt.lproj/Localizable.strings new file mode 100644 index 0000000..39caa61 --- /dev/null +++ b/pt.lproj/Localizable.strings @@ -0,0 +1,12 @@ +/* + Localizable.strings + iTunesSearch + + Created by Lucas Leal Mendonça on 14/03/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ +"Search" = "Buscar"; +"Movie" = "Filme"; +"Music"= "Música"; +"Movie" = "Filmes"; +"Music"= "Músicas"; From cded394e2368f64162d6dd55f828fb54d0808bbc Mon Sep 17 00:00:00 2001 From: LukeLeal Date: Sun, 15 Mar 2015 01:17:08 -0300 Subject: [PATCH 7/7] =?UTF-8?q?C=C3=A9lula=20com=20imagem.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A busca demora as vezes. --- iTunesSearch/DetailViewController.m | 5 +---- iTunesSearch/Midia.h | 6 +++++- iTunesSearch/Midia.m | 12 ++++++++++++ iTunesSearch/TableViewCell.h | 1 + iTunesSearch/TableViewCell.xib | 16 ++++++++++------ iTunesSearch/TableViewController.m | 7 ++++--- iTunesSearch/iTunesManager.m | 12 ++++++++---- 7 files changed, 41 insertions(+), 18 deletions(-) diff --git a/iTunesSearch/DetailViewController.m b/iTunesSearch/DetailViewController.m index 6d16f86..7c6e96d 100644 --- a/iTunesSearch/DetailViewController.m +++ b/iTunesSearch/DetailViewController.m @@ -25,12 +25,9 @@ - (void) viewWillAppear:(BOOL)animated{ self.nome.text = [NSString stringWithFormat:@"Nome: %@", _midia.nome]; self.artista.text = [NSString stringWithFormat:@"Artista: %@", _midia.artista]; self.preco.text = [NSString stringWithFormat:@"Preço: %@", _midia.preco]; - NSURL *url = [[NSURL alloc] initWithString:_midia.image]; _tipo.text = (NSStringFromClass([_midia class])); - NSData *data = [[NSData alloc] initWithContentsOfURL:url]; - - UIImage *tmpImage = [[UIImage alloc] initWithData:data]; + UIImage *tmpImage = _midia.image; self.imagem.image = tmpImage; //[NSString stringWithFormat:@" %@",]; diff --git a/iTunesSearch/Midia.h b/iTunesSearch/Midia.h index 335ea6a..34251c9 100644 --- a/iTunesSearch/Midia.h +++ b/iTunesSearch/Midia.h @@ -7,12 +7,16 @@ // #import +#import @interface Midia : NSObject @property (nonatomic, strong) NSString *nome; @property (nonatomic, strong) NSString *artista; @property (nonatomic, strong) NSString *preco; -@property (nonatomic, strong) NSString *image; +@property (nonatomic, strong) UIImage *image; +@property (nonatomic, strong) UIImage *image60; + +- (void) converteImagem: (NSString *)s full:(bool)f; @end diff --git a/iTunesSearch/Midia.m b/iTunesSearch/Midia.m index 85fb36e..fbead3f 100644 --- a/iTunesSearch/Midia.m +++ b/iTunesSearch/Midia.m @@ -10,4 +10,16 @@ @implementation Midia +- (void) converteImagem: (NSString *)s full:(bool)f{ + NSURL *url = [[NSURL alloc] initWithString:s]; + + NSData *data = [[NSData alloc] initWithContentsOfURL:url]; + + if (f) { + _image = [[UIImage alloc] initWithData:data]; + } else { + _image60 = [[UIImage alloc] initWithData:data]; + } +} + @end diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index 748881d..a8eb24a 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -15,6 +15,7 @@ @property (weak, nonatomic) IBOutlet UILabel *artista; @property (weak, nonatomic) IBOutlet UILabel *duracao; @property (weak, nonatomic) IBOutlet UILabel *preco; +@property (weak, nonatomic) IBOutlet UIImageView *imagem; @end diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index 7e36ebd..a85a2ba 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -14,9 +14,9 @@ - + + + @@ -57,11 +60,12 @@ + - + diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 3cdf019..773b8f3 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -116,6 +116,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.artista setText:filme.artista]; [celula.duracao setText:filme.duracao]; [celula.preco setText:filme.preco]; + [celula.imagem setImage:filme.image60]; } else if(indexPath.section == 1){ Musica *musica = [musicas objectAtIndex:indexPath.row]; @@ -125,6 +126,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.artista setText:musica.artista]; [celula.duracao setText:musica.duracao]; [celula.preco setText:musica.preco]; + [celula.imagem setImage:musica.image60]; } else if(indexPath.section == 2){ Podcast *podcast = [podcasts objectAtIndex:indexPath.row]; @@ -135,7 +137,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS // [celula.duracao setText:podcast.duracao]; [celula.preco setText:podcast.preco]; [celula.duracao setHidden:YES]; -// [celula.preco setHidden:YES]; + [celula.imagem setImage:podcast.image60]; } else if(indexPath.section == 3){ EBook *ebook = [podcasts objectAtIndex:indexPath.row]; @@ -143,10 +145,9 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.nome setText:ebook.nome]; [celula.tipo setText:@"EBook"]; [celula.artista setText:ebook.artista]; -// [celula.duracao setText:ebook.duracao]; [celula.preco setText:ebook.preco]; [celula.duracao setHidden:YES]; -// [celula.preco setHidden:YES]; + [celula.imagem setImage:ebook.image60]; } return celula; diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index 7b816f7..8ce9b34 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -61,7 +61,8 @@ - (NSArray *)buscarFilmes:(NSString *)termo{ [filme setGenero:[item objectForKey:@"primaryGenreName"]]; [filme setPais:[item objectForKey:@"country"]]; [filme setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; - [filme setImage:[item objectForKey:@"artworkUrl100"]]; + [filme converteImagem:[item objectForKey:@"artworkUrl100"] full: true]; + [filme converteImagem:[item objectForKey:@"artworkUrl60"] full: false]; [filmes addObject:filme]; } @@ -96,8 +97,9 @@ - (NSArray *)buscarMusicas:(NSString *)termo { [musica setArtista:[item objectForKey:@"artistName"]]; [musica setDuracao:[self formatInterval:[NSString stringWithFormat:@"%@", [item objectForKey:@"trackTimeMillis"]]]]; [musica setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; - [musica setImage:[item objectForKey:@"artworkUrl100"]]; + [musica converteImagem:[item objectForKey:@"artworkUrl100"] full: true]; [musica setColecao:[item objectForKey:@"collectionName"]]; + [musica converteImagem:[item objectForKey:@"artworkUrl60"] full: false]; [musicas addObject:musica]; } @@ -132,8 +134,9 @@ - (NSArray *)buscarPodcasts:(NSString *)termo { [podcast setArtista:[item objectForKey:@"artistName"]]; [podcast setGenero:[item objectForKey:@"primaryGenreName"]]; [podcast setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"trackPrice"]]]; - [podcast setImage:[item objectForKey:@"artworkUrl100"]]; + [podcast converteImagem:[item objectForKey:@"artworkUrl100"] full: true]; [podcast setColecao:[item objectForKey:@"collectionName"]]; + [podcast converteImagem:[item objectForKey:@"artworkUrl60"] full: false]; [podcasts addObject:podcast]; } @@ -167,9 +170,10 @@ - (NSArray *)buscarEBooks:(NSString *)termo { [ebook setTrackId:[item objectForKey:@"trackId"]]; [ebook setArtista:[item objectForKey:@"artistName"]]; [ebook setPreco:[NSString stringWithFormat:@"U$ %@", [item objectForKey:@"price"]]]; - [ebook setImage:[item objectForKey:@"artworkUrl100"]]; + [ebook converteImagem:[item objectForKey:@"artworkUrl100"] full: true]; [ebook setFileSize:[NSString stringWithFormat:@"%@ bytes", [item objectForKey:@"fileSizeBytes"]]]; [ebook setMedia:[NSString stringWithFormat:@"%@", [item objectForKey:@"averageUserRating"]]]; + [ebook converteImagem:[item objectForKey:@"artworkUrl60"] full: false]; [ebooks addObject:ebook]; }