forked from dennisreimann/ioctocat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
IssueController.m
81 lines (69 loc) · 2.81 KB
/
IssueController.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
#import "IssueController.h"
#import "WebController.h"
#import "NSDate+Nibware.h"
#import "TextCell.h"
#import "LabeledCell.h"
@implementation IssueController
- (id)initWithIssue:(GHIssue *)theIssue {
[super initWithNibName:@"Issue" bundle:nil];
issue = [theIssue retain];
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = [NSString stringWithFormat:@"Issue #%d", issue.num];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showActions:)];
self.tableView.tableHeaderView = tableHeaderView;
NSString *icon = [NSString stringWithFormat:@"issues_%@.png", issue.state];
iconView.image = [UIImage imageNamed:icon];
titleLabel.text = issue.title;
voteLabel.text = [NSString stringWithFormat:@"%d votes", issue.votes];
issueNumber.text = [NSString stringWithFormat:@"#%d", issue.num];
[createdCell setContentText:[issue.created prettyDate]];
[updatedCell setContentText:[issue.updated prettyDate]];
[descriptionCell setContentText:issue.body];
}
- (IBAction)showActions:(id)sender {
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Actions" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"View Issue on GitHub",nil];
[actionSheet showInView:self.view.window];
[actionSheet release];
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
NSString *issueURLString = [NSString stringWithFormat:kIssueGithubFormat, issue.repository.owner, issue.repository.name, issue.num];
NSURL *issueURL = [NSURL URLWithString:issueURLString];
WebController *webController = [[WebController alloc] initWithURL:issueURL];
[self.navigationController pushViewController:webController animated:YES];
[webController release];
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) return createdCell;
if (indexPath.row == 1) return updatedCell;
return descriptionCell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 2) return [(TextCell *)descriptionCell height];
return 44.0f;
}
- (void)dealloc {
[issue release];
[tableHeaderView release];
[titleLabel release];
[createdLabel release];
[updatedLabel release];
[voteLabel release];
[createdCell release];
[updatedCell release];
[descriptionCell release];
[issueNumber release];
[iconView release];
[super dealloc];
}
@end