1ac0a0b2295e992083f4c65507463b9cb536dbd6
[atutor.git] / mods / atsocial_iphone_app / Classes / ActivitiesViewController.m
1 //
2 //  ActivitiesViewController.m
3 //  ATutor
4 //
5 //  Created by Quang Anh Do on 07/06/2010.
6 //  Copyright 2010 Quang Anh Do. All rights reserved.
7 //
8
9 #import "ActivitiesViewController.h"
10 #import "CommonFunctions.h"
11 #import "OSConsumer.h"
12 #import "OAServiceTicket.h"
13 #import "NSDictionary_JSONExtensions.h"
14 #import "ATutorAppDelegate.h"
15
16 @interface LauncherViewController (Private)
17
18 - (void)activitiesCallback:(OAServiceTicket *)ticket didFinishWithResponse:(id)response;
19
20 @end
21
22 @implementation ActivitiesViewController
23
24 - (id)init {
25         if (self = [super init]) {
26                 self.title = TTLocalizedString(@"Activities", @"");
27                 self.autoresizesForKeyboard = YES;
28                 self.variableHeightRows = YES;
29                 
30                 OSConsumer *consumer = [(ATutorAppDelegate *)[[UIApplication sharedApplication] delegate] consumer];
31                 [consumer getDataForUrl:@"/activities/@me/@contacts" 
32                                   andParameters:nil 
33                                            delegate:self 
34                           didFinishSelector:@selector(activitiesCallback:didFinishWithResponse:)];
35         }
36         
37         return self;
38 }
39
40 - (void)loadView {
41         [super loadView];
42
43         self.tableView.allowsSelection = NO;
44 }
45
46 - (void)activitiesCallback:(OAServiceTicket *)ticket didFinishWithResponse:(id)response {
47         if (ticket.didSucceed) {
48                 // Load contact list
49                 NSDictionary *contactList = [NSKeyedUnarchiver unarchiveObjectWithFile:[applicationDocumentsDirectory() stringByAppendingPathComponent:@"contact_mapping.plist"]];
50                 NSLog(@"Contact list: %@", contactList);
51                 
52                 // Build data source
53                 NSError *error = nil;
54                 NSDictionary *data = [NSDictionary dictionaryWithJSONData:[response dataUsingEncoding:NSUTF8StringEncoding] error:&error];
55                 
56                 int numberOfItems = [[data objectForKey:@"totalResults"] intValue] % [[data objectForKey:@"itemsPerPage"] intValue];
57                 
58                 TTListDataSource *dataSource = [[[TTListDataSource alloc] init] autorelease];
59                 for (int i = 0; i < numberOfItems; i++) {
60                         NSDictionary *entry = [[data objectForKey:@"entry"] objectAtIndex:i];
61                         
62                         NSString *contact = [NSString stringWithFormat:@"<a href='%@'>%@</a>", 
63                                                                  linkToContact([[entry objectForKey:@"userId"] integerValue], [contactList objectForKey:[entry objectForKey:@"userId"]]), // link
64                                                                  [contactList objectForKey:[entry objectForKey:@"userId"]]]; // name
65                         NSString *xhtml = [NSString stringWithFormat:@"%@ - %@ %@", 
66                                                            niceTimeString([entry objectForKey:@"postedTime"]), // time
67                                                            contact, // contact
68                                                            rewriteURLStrings([entry objectForKey:@"title"]) // title
69                                                            ];
70                         
71                         TTStyledText *text = [TTStyledText textFromXHTML:xhtml];
72                         
73                         [dataSource.items addObject:[TTTableStyledTextItem itemWithText:text URL:nil]];
74                 }
75                 
76                 self.dataSource = dataSource;
77         } else {
78                 alertMessage(@"Error", @"Unable to process your request");
79         }
80 }
81
82 @end