root / Classes / ContactInformationViewController.m @ 64929bae
History | View | Annotate | Download (6.4 kB)
1 | 700184fb | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 700184fb | Miltiadis Vasilakis | // ContactInformationViewController.m |
3 | 700184fb | Miltiadis Vasilakis | // OpenStack |
4 | 700184fb | Miltiadis Vasilakis | // |
5 | 700184fb | Miltiadis Vasilakis | // Created by Mike Mayo on 10/7/10. |
6 | 700184fb | Miltiadis Vasilakis | // The OpenStack project is provided under the Apache 2.0 license. |
7 | 700184fb | Miltiadis Vasilakis | // |
8 | 700184fb | Miltiadis Vasilakis | |
9 | 700184fb | Miltiadis Vasilakis | #import "ContactInformationViewController.h" |
10 | 700184fb | Miltiadis Vasilakis | #import "Provider.h" |
11 | 700184fb | Miltiadis Vasilakis | #import "UIColor+MoreColors.h" |
12 | 700184fb | Miltiadis Vasilakis | |
13 | 700184fb | Miltiadis Vasilakis | |
14 | 700184fb | Miltiadis Vasilakis | @implementation ContactInformationViewController |
15 | 700184fb | Miltiadis Vasilakis | |
16 | 700184fb | Miltiadis Vasilakis | @synthesize provider; |
17 | 700184fb | Miltiadis Vasilakis | |
18 | 700184fb | Miltiadis Vasilakis | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { |
19 | 700184fb | Miltiadis Vasilakis | return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait); |
20 | 700184fb | Miltiadis Vasilakis | } |
21 | 700184fb | Miltiadis Vasilakis | |
22 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
23 | 700184fb | Miltiadis Vasilakis | #pragma mark View lifecycle |
24 | 700184fb | Miltiadis Vasilakis | |
25 | 700184fb | Miltiadis Vasilakis | - (void)viewDidLoad { |
26 | 700184fb | Miltiadis Vasilakis | [super viewDidLoad]; |
27 | 700184fb | Miltiadis Vasilakis | self.navigationItem.title = @"Fanatical Support"; |
28 | 700184fb | Miltiadis Vasilakis | |
29 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
30 | 700184fb | Miltiadis Vasilakis | UIView *backgroundContainer = [[UIView alloc] init]; |
31 | 700184fb | Miltiadis Vasilakis | backgroundContainer.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; |
32 | 700184fb | Miltiadis Vasilakis | backgroundContainer.backgroundColor = [UIColor iPadTableBackgroundColor]; |
33 | 700184fb | Miltiadis Vasilakis | NSString *logoFilename = @"contact-rackspace-icon-large.png"; |
34 | 700184fb | Miltiadis Vasilakis | UIImageView *osLogo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:logoFilename]]; |
35 | 700184fb | Miltiadis Vasilakis | osLogo.contentMode = UIViewContentModeScaleAspectFit; |
36 | 700184fb | Miltiadis Vasilakis | osLogo.frame = CGRectMake(100.0, 100.0, 1000.0, 1000.0); |
37 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
38 | 700184fb | Miltiadis Vasilakis | osLogo.alpha = 0.3; |
39 | 700184fb | Miltiadis Vasilakis | } |
40 | 700184fb | Miltiadis Vasilakis | [backgroundContainer addSubview:osLogo]; |
41 | 700184fb | Miltiadis Vasilakis | [osLogo release]; |
42 | 700184fb | Miltiadis Vasilakis | self.tableView.backgroundView = backgroundContainer; |
43 | 700184fb | Miltiadis Vasilakis | [backgroundContainer release]; |
44 | 700184fb | Miltiadis Vasilakis | } |
45 | 700184fb | Miltiadis Vasilakis | } |
46 | 700184fb | Miltiadis Vasilakis | |
47 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
48 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view data source |
49 | 700184fb | Miltiadis Vasilakis | |
50 | 700184fb | Miltiadis Vasilakis | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { |
51 | 700184fb | Miltiadis Vasilakis | return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? [provider.contactURLs count] : 1; |
52 | 700184fb | Miltiadis Vasilakis | } |
53 | 700184fb | Miltiadis Vasilakis | |
54 | 700184fb | Miltiadis Vasilakis | |
55 | 700184fb | Miltiadis Vasilakis | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
56 | 700184fb | Miltiadis Vasilakis | return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 1 : [provider.contactURLs count]; |
57 | 700184fb | Miltiadis Vasilakis | } |
58 | 700184fb | Miltiadis Vasilakis | |
59 | 700184fb | Miltiadis Vasilakis | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { |
60 | 700184fb | Miltiadis Vasilakis | |
61 | 700184fb | Miltiadis Vasilakis | static NSString *CellIdentifier = @"Cell"; |
62 | 700184fb | Miltiadis Vasilakis | |
63 | 700184fb | Miltiadis Vasilakis | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
64 | 700184fb | Miltiadis Vasilakis | if (cell == nil) { |
65 | 700184fb | Miltiadis Vasilakis | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; |
66 | 700184fb | Miltiadis Vasilakis | cell.textLabel.backgroundColor = [UIColor clearColor]; |
67 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.backgroundColor = [UIColor clearColor]; |
68 | 700184fb | Miltiadis Vasilakis | } |
69 | 700184fb | Miltiadis Vasilakis | |
70 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
71 | 700184fb | Miltiadis Vasilakis | cell.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.8]; |
72 | 700184fb | Miltiadis Vasilakis | } |
73 | 700184fb | Miltiadis Vasilakis | |
74 | 700184fb | Miltiadis Vasilakis | // Configure the cell... |
75 | 700184fb | Miltiadis Vasilakis | NSDictionary *contactURL = [provider.contactURLs objectAtIndex:UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? indexPath.section : indexPath.row]; |
76 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = [contactURL objectForKey:@"name"]; |
77 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.text = [contactURL objectForKey:@"url"]; |
78 | 700184fb | Miltiadis Vasilakis | |
79 | 700184fb | Miltiadis Vasilakis | NSURL* url = [NSURL URLWithString:[contactURL objectForKey:@"url"]]; |
80 | 700184fb | Miltiadis Vasilakis | |
81 | 700184fb | Miltiadis Vasilakis | // Check the shared applications for registerd URLs and |
82 | 700184fb | Miltiadis Vasilakis | // if the handler found highlight the URL |
83 | 700184fb | Miltiadis Vasilakis | UIApplication* application = [UIApplication sharedApplication]; |
84 | 700184fb | Miltiadis Vasilakis | |
85 | 700184fb | Miltiadis Vasilakis | // if it's a link to twitter, let's see if the device has the Twitter app |
86 | 700184fb | Miltiadis Vasilakis | // installed and use that instead |
87 | 700184fb | Miltiadis Vasilakis | if ([url.host isEqualToString:@"twitter.com"] || ([url.host isEqualToString:@"www.twitter.com"] && ![url.path isEqualToString:@""])) { |
88 | 700184fb | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"twitter-icon.png"]; |
89 | 700184fb | Miltiadis Vasilakis | NSURL *twitterURL = [NSURL URLWithString:[NSString stringWithFormat:@"twitter:@%@", [url.path substringFromIndex:1]]]; |
90 | 700184fb | Miltiadis Vasilakis | if ([application canOpenURL:twitterURL]) { |
91 | 700184fb | Miltiadis Vasilakis | url = twitterURL; |
92 | 700184fb | Miltiadis Vasilakis | } |
93 | 700184fb | Miltiadis Vasilakis | } |
94 | 700184fb | Miltiadis Vasilakis | |
95 | 700184fb | Miltiadis Vasilakis | if ([[contactURL objectForKey:@"name"] isEqualToString:@"US Phone Support"]) { |
96 | 700184fb | Miltiadis Vasilakis | if ([application canOpenURL:url]) { |
97 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = @"Call US Support"; |
98 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.text = @""; |
99 | 700184fb | Miltiadis Vasilakis | } else { |
100 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = @"US Support"; |
101 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.text = @"877-934-0407"; |
102 | 700184fb | Miltiadis Vasilakis | } |
103 | 700184fb | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"us-phone-support-icon.png"]; |
104 | 700184fb | Miltiadis Vasilakis | } else if ([[contactURL objectForKey:@"name"] isEqualToString:@"UK Phone Support"]) { |
105 | 700184fb | Miltiadis Vasilakis | if ([application canOpenURL:url]) { |
106 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = @"Call UK Support"; |
107 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.text = @""; |
108 | 700184fb | Miltiadis Vasilakis | } else { |
109 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = @"UK Support"; |
110 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.text = @"0800-083-3012"; |
111 | 700184fb | Miltiadis Vasilakis | } |
112 | 700184fb | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"uk-phone-support-icon.png"]; |
113 | 700184fb | Miltiadis Vasilakis | } else if ([[contactURL objectForKey:@"name"] isEqualToString:@"Rackspace on Twitter"]) { |
114 | 700184fb | Miltiadis Vasilakis | cell.detailTextLabel.text = @""; |
115 | 700184fb | Miltiadis Vasilakis | } |
116 | 700184fb | Miltiadis Vasilakis | |
117 | 700184fb | Miltiadis Vasilakis | if ([application canOpenURL:url]) { |
118 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
119 | 700184fb | Miltiadis Vasilakis | } else { |
120 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryNone; |
121 | 700184fb | Miltiadis Vasilakis | } |
122 | 700184fb | Miltiadis Vasilakis | |
123 | 700184fb | Miltiadis Vasilakis | return cell; |
124 | 700184fb | Miltiadis Vasilakis | } |
125 | 700184fb | Miltiadis Vasilakis | |
126 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
127 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view delegate |
128 | 700184fb | Miltiadis Vasilakis | |
129 | 700184fb | Miltiadis Vasilakis | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
130 | 700184fb | Miltiadis Vasilakis | |
131 | 700184fb | Miltiadis Vasilakis | NSDictionary *contactItem = [provider.contactURLs objectAtIndex:UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? indexPath.section : indexPath.row]; |
132 | 700184fb | Miltiadis Vasilakis | |
133 | 700184fb | Miltiadis Vasilakis | selectedURL = [NSURL URLWithString:[contactItem objectForKey:@"url"]]; |
134 | 700184fb | Miltiadis Vasilakis | |
135 | 700184fb | Miltiadis Vasilakis | // Check the shared applications for registerd URLs and |
136 | 700184fb | Miltiadis Vasilakis | // try to open the requested url with appropriate application |
137 | 700184fb | Miltiadis Vasilakis | UIApplication *application = [UIApplication sharedApplication]; |
138 | 700184fb | Miltiadis Vasilakis | |
139 | 700184fb | Miltiadis Vasilakis | // if it's a link to twitter, let's see if the device has the Twitter app |
140 | 700184fb | Miltiadis Vasilakis | // installed and use that instead |
141 | 700184fb | Miltiadis Vasilakis | if ([selectedURL.host isEqualToString:@"twitter.com"] || ([selectedURL.host isEqualToString:@"www.twitter.com"] && ![selectedURL.path isEqualToString:@""])) { |
142 | 700184fb | Miltiadis Vasilakis | NSURL *twitterURL = [NSURL URLWithString:[NSString stringWithFormat:@"twitter:@%@", [selectedURL.path substringFromIndex:1]]]; |
143 | 700184fb | Miltiadis Vasilakis | if ([application canOpenURL:twitterURL]) { |
144 | 700184fb | Miltiadis Vasilakis | selectedURL = twitterURL; |
145 | 700184fb | Miltiadis Vasilakis | } |
146 | 700184fb | Miltiadis Vasilakis | } |
147 | 700184fb | Miltiadis Vasilakis | |
148 | 700184fb | Miltiadis Vasilakis | if ([application canOpenURL:selectedURL]) { |
149 | 700184fb | Miltiadis Vasilakis | [application openURL:selectedURL]; |
150 | 700184fb | Miltiadis Vasilakis | } else { |
151 | 700184fb | Miltiadis Vasilakis | [tableView deselectRowAtIndexPath:indexPath animated:YES]; |
152 | 700184fb | Miltiadis Vasilakis | } |
153 | 700184fb | Miltiadis Vasilakis | |
154 | 700184fb | Miltiadis Vasilakis | selectedIndexPath = indexPath; |
155 | 700184fb | Miltiadis Vasilakis | |
156 | 700184fb | Miltiadis Vasilakis | } |
157 | 700184fb | Miltiadis Vasilakis | |
158 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
159 | 700184fb | Miltiadis Vasilakis | #pragma mark Memory management |
160 | 700184fb | Miltiadis Vasilakis | |
161 | 700184fb | Miltiadis Vasilakis | - (void)dealloc { |
162 | 700184fb | Miltiadis Vasilakis | [provider release]; |
163 | 700184fb | Miltiadis Vasilakis | [super dealloc]; |
164 | 700184fb | Miltiadis Vasilakis | } |
165 | 700184fb | Miltiadis Vasilakis | |
166 | 700184fb | Miltiadis Vasilakis | @end |