-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCM.m
285 lines (203 loc) · 8.65 KB
/
CM.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
//
// CM.m
// Esqueleto DCU
//
// Created by julio.guzman on 18/11/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
//Vista Tipo Grid Desplazable
/*
Descripción/Datos que utiliza
Entrada:
Se alimenta de los datos obtenidos por un servicio web
Acción:
Construye la vista con las caterogias y genera una elemento para simular el recuadro de la imagen conteniendo el texto de la subcategoria.
Salida:
Al dar click en un elemento nos lleva a la vista de la subcategoria
Al dar click en los botones inferiores nos lleva a la vista correcpondiente.
Subcategorias dispuestas por categorias e iconos generados a partir del texto
Literatura
Letras mexicanas en voz de sus autores
Ensayo
Cuento contemporáneo
Narrativa mexicana
Poesía
Letras de Iberoamérica en voz de sus autores
Voces de Punto de Partida
Voces de la literatura universal
Clásicos de la literatura francesa
Lenguas de México
Voz Viva
Clásicos de la literatura en inglés
En los Siglos de Oro
Teatro
Teatro en atril
Radioteatros
Regaladores de palabras
Música
OFUNAM
OSM
En voz de la Academia
Grandes Maestros.UNAM
Conferencias
¿Cómo ves?... Ciencia para llevar
Cultura prehispánica
Charlas con...
Debates en la ciencia
Voces para el bachillerato
Biología
Química
Letras
Formación artística
Sistema político mexicano
Filosofía
Especiales
Premio Príncipe de Asturias
100 años UNAM
Bicentenario de la Independencia
*/
#import "CM.h"
#import "StandardInputTableViewItem.h"
#import "SBJSON.h"
#import "UIImageString.h"
#import "LC.h"
#define IMAGEURL @"http://www.descargacultura.unam.mx/images/mp3Icons/"
@implementation CM
@synthesize _tableView, _activityIndicator, _searchBar;
-(void)viewDidLoad
{
[super viewDidLoad];
_tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"fondo.png"]];
[_activityIndicator startAnimating];
[NSThread detachNewThreadSelector:@selector(parse) toTarget:self withObject:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHidden:) name:UIKeyboardWillHideNotification object:nil];
}
-(void)parse
{
//CODIGO DE PRUEBA YES
//if( [self reachability])
@try {
SBJSON *parser = [[SBJSON alloc] init];
NSString *string = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.unam360.com/dcu/service/filtro?tipo=categorias"] encoding:NSISOLatin1StringEncoding error:nil];
itemArray = [[NSMutableArray alloc] init];
parseddictionary = [parser objectWithString:string error:nil];
[parseddictionary retain];
datos = [parseddictionary objectForKey:@"datos"];
//Pasar cada uno de los items a un arreglo
for (int i= 0; i<datos.count; i++) {
NSArray *array = [[datos objectAtIndex:i] objectForKey:@"datos"];
for (int j=0; j<array.count; j++) {
[itemArray addObject:[array objectAtIndex:j]];
}
}
}
@catch (NSException *exception) {
[self reachability];
}
@finally {
if (![self internetreachability]) {
[self reachability];
}
[self copyDictionary];
[_tableView setDelegate:self];
[_tableView setDataSource:self];
[_tableView reloadData];
[_activityIndicator setHidesWhenStopped:YES];
[_activityIndicator stopAnimating];
}
}
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
return ((NSMutableArray *)[dictionary objectForKey:@"datos"]).count;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return ((NSString *)[[[dictionary objectForKey:@"datos"] objectAtIndex:section] objectForKey:@"nombre"]);
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *array = (NSArray *)([[((NSMutableArray *)[dictionary objectForKey:@"datos"]) objectAtIndex:section] objectForKey:@"datos"]);
return array.count;
}
-(IBAction)reload:(id)sender
{
[_tableView reloadData];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];
@try {
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [[[[[dictionary objectForKey:@"datos"] objectAtIndex:indexPath.section] objectForKey:@"datos"] objectAtIndex:indexPath.row] objectForKey:@"titulo"] ;
}
@catch (NSException *exception) {}
cell.selectionStyle = UITableViewCellSelectionStyleGray;
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
LC *nextPage = [[LC alloc] initWithNibName:@"LC" bundle:nil idNumber:[NSString stringWithFormat:@"%@", [[[[[dictionary objectForKey:@"datos"] objectAtIndex:indexPath.section] objectForKey:@"datos"] objectAtIndex:indexPath.row] objectForKey:@"id"]] categoryName: [[[[[dictionary objectForKey:@"datos"] objectAtIndex:indexPath.section] objectForKey:@"datos"] objectAtIndex:indexPath.row] objectForKey:@"titulo"]];
nextPage.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.view addSubview:nextPage.view];
[self presentModalViewController:nextPage animated:YES];
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self copyDictionary];
//NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>searchText: %@", searchText);
cosa:
[_tableView reloadData];
for (int i=0; i<((NSArray *)[dictionary objectForKey:@"datos"]).count; i++) {
for (int j=0; j<((NSArray *)[[[dictionary objectForKey:@"datos"] objectAtIndex:i] objectForKey:@"datos"]).count; j++) {
@try {
NSRange r = [[[[[[dictionary objectForKey:@"datos"] objectAtIndex:i] objectForKey:@"datos"] objectAtIndex:j] objectForKey:@"titulo"] rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (r.location == NSNotFound) {
[[[[dictionary objectForKey:@"datos"] objectAtIndex:i] objectForKey:@"datos"] removeObjectAtIndex:j];
goto cosa;
}
}
@catch (NSException *exception) {}
}
}
[_tableView reloadData];
[_tableView setContentOffset:CGPointMake(0, 0)];
}
-(void)copyDictionary
{
dictionary = [[NSMutableDictionary alloc] init];
NSMutableArray *datos_ = [[NSMutableArray alloc] init];
for (NSMutableDictionary *dictionary_ in [parseddictionary objectForKey:@"datos"]) {
//Toma info de datos 2
NSMutableArray *datos2 = [dictionary_ objectForKey:@"datos"];
NSMutableArray *seconddatos = [[NSMutableArray alloc] init];
for (NSMutableDictionary *dictionary_2 in datos2) {
NSMutableDictionary *seconddictionary = [dictionary_2 mutableCopy];
[seconddatos addObject:seconddictionary];
}
NSMutableDictionary *adict =[[NSMutableDictionary alloc] init];
[adict setValue:seconddatos forKey:@"datos"];
[adict setValue:[dictionary_ objectForKey:@"id"] forKey:@"id"];
[adict setValue:[dictionary_ objectForKey:@"nombre"] forKey:@"nombre"];
[datos_ addObject:adict];
}
[dictionary setValue:datos_ forKey:@"datos"];
}
-(void)searchBarSearchButtonClicked:(UISearchBar *)aSearchBar{
[_searchBar resignFirstResponder];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)aSearchBar{
[self copyDictionary];
[_tableView reloadData];
[_searchBar resignFirstResponder];
}
- (void)keyboardShown:(NSNotification *)note {
[_tableView setFrame:CGRectMake(_tableView.frame.origin.x, _tableView.frame.origin.y, _tableView.frame.size.width, _tableView.frame.size.height-170 )];
}
- (void)keyboardHidden:(NSNotification *)note {
[_tableView setFrame:CGRectMake(_tableView.frame.origin.x, _tableView.frame.origin.y, _tableView.frame.size.width, 328 )];
}
@end