root / Classes / AccountHomeViewController.m @ 9fee07a6
History | View | Annotate | Download (16.5 kB)
1 | 700184fb | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 700184fb | Miltiadis Vasilakis | // AccountHomeViewController.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 "AccountHomeViewController.h" |
10 | 700184fb | Miltiadis Vasilakis | #import "OpenStackAccount.h" |
11 | 700184fb | Miltiadis Vasilakis | #import "Provider.h" |
12 | 700184fb | Miltiadis Vasilakis | #import "ContactInformationViewController.h" |
13 | 700184fb | Miltiadis Vasilakis | #import "ServersViewController.h" |
14 | 700184fb | Miltiadis Vasilakis | #import "NSObject+Conveniences.h" |
15 | 700184fb | Miltiadis Vasilakis | #import "RootViewController.h" |
16 | 700184fb | Miltiadis Vasilakis | #import "LimitsViewController.h" |
17 | 700184fb | Miltiadis Vasilakis | #import "Container.h" |
18 | 700184fb | Miltiadis Vasilakis | #import "ContainersViewController.h" |
19 | 700184fb | Miltiadis Vasilakis | #import "AccountManager.h" |
20 | 700184fb | Miltiadis Vasilakis | #import "AccountSettingsViewController.h" |
21 | 700184fb | Miltiadis Vasilakis | #import "RSSFeedsViewController.h" |
22 | 700184fb | Miltiadis Vasilakis | #import "UIViewController+Conveniences.h" |
23 | 700184fb | Miltiadis Vasilakis | #import "Keychain.h" |
24 | 700184fb | Miltiadis Vasilakis | #import "PasscodeViewController.h" |
25 | 700184fb | Miltiadis Vasilakis | #import "OpenStackAppDelegate.h" |
26 | 700184fb | Miltiadis Vasilakis | #import "LoadBalancersViewController.h" |
27 | 700184fb | Miltiadis Vasilakis | #import "Reachability.h" |
28 | 700184fb | Miltiadis Vasilakis | #import "Image.h" |
29 | ba01f5a7 | Miltiadis Vasilakis | #import "AccountGroupsViewController.h" |
30 | d17a05de | Miltiadis Vasilakis | #import "SharingAccountsViewController.h" |
31 | d17a05de | Miltiadis Vasilakis | #import "PithosImageViewController.h" |
32 | 700184fb | Miltiadis Vasilakis | |
33 | d17a05de | Miltiadis Vasilakis | #define kObjectStorage 0 |
34 | d17a05de | Miltiadis Vasilakis | #define kShared 1 |
35 | d17a05de | Miltiadis Vasilakis | #define kSettings 2 |
36 | 700184fb | Miltiadis Vasilakis | |
37 | 700184fb | Miltiadis Vasilakis | @implementation AccountHomeViewController |
38 | 700184fb | Miltiadis Vasilakis | |
39 | 700184fb | Miltiadis Vasilakis | @synthesize account, rootViewController, rootViewIndexPath, tableView; |
40 | 700184fb | Miltiadis Vasilakis | |
41 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
42 | 700184fb | Miltiadis Vasilakis | #pragma mark View lifecycle |
43 | 700184fb | Miltiadis Vasilakis | |
44 | 700184fb | Miltiadis Vasilakis | - (void)incrementRefreshCount { |
45 | 700184fb | Miltiadis Vasilakis | refreshCount++; |
46 | 700184fb | Miltiadis Vasilakis | //if (refreshCount == 2) { |
47 | 7db1712d | Miltiadis Vasilakis | self.account.hasBeenRefreshed = YES; |
48 | 7db1712d | Miltiadis Vasilakis | [self hideToolbarActivityMessage]; |
49 | 7db1712d | Miltiadis Vasilakis | refreshButton.enabled = YES; |
50 | 700184fb | Miltiadis Vasilakis | //} |
51 | 700184fb | Miltiadis Vasilakis | } |
52 | 700184fb | Miltiadis Vasilakis | - (void)viewDidLoad { |
53 | 700184fb | Miltiadis Vasilakis | [super viewDidLoad]; |
54 | d17a05de | Miltiadis Vasilakis | |
55 | 700184fb | Miltiadis Vasilakis | Reachability *reachability = [Reachability reachabilityForInternetConnection]; |
56 | 700184fb | Miltiadis Vasilakis | if ([reachability currentReachabilityStatus] == kNotReachable) { |
57 | 700184fb | Miltiadis Vasilakis | self.account.hasBeenRefreshed = YES; |
58 | 700184fb | Miltiadis Vasilakis | [self hideToolbarActivityMessage]; |
59 | 700184fb | Miltiadis Vasilakis | refreshButton.enabled = YES; |
60 | 700184fb | Miltiadis Vasilakis | [self failOnBadConnection]; |
61 | 700184fb | Miltiadis Vasilakis | } |
62 | 700184fb | Miltiadis Vasilakis | |
63 | d17a05de | Miltiadis Vasilakis | mySharedRow = 0; |
64 | d17a05de | Miltiadis Vasilakis | othersSharedRow = 1; |
65 | d17a05de | Miltiadis Vasilakis | accountSettingsRow = 0; |
66 | d17a05de | Miltiadis Vasilakis | accountMetadataRow = 1; |
67 | 45f2fce6 | Miltiadis Vasilakis | |
68 | d17a05de | Miltiadis Vasilakis | |
69 | 700184fb | Miltiadis Vasilakis | |
70 | 700184fb | Miltiadis Vasilakis | |
71 | 700184fb | Miltiadis Vasilakis | id getContainersObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getContainersSucceeded" object:self.account |
72 | 700184fb | Miltiadis Vasilakis | queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) |
73 | 7db1712d | Miltiadis Vasilakis | { |
74 | 7db1712d | Miltiadis Vasilakis | [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:storageRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; |
75 | 7db1712d | Miltiadis Vasilakis | [self incrementRefreshCount]; |
76 | 7db1712d | Miltiadis Vasilakis | }]; |
77 | 7db1712d | Miltiadis Vasilakis | id getContainersFailedObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getContainersFailed" object:self.account |
78 | 7db1712d | Miltiadis Vasilakis | queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) |
79 | 7db1712d | Miltiadis Vasilakis | { |
80 | 7db1712d | Miltiadis Vasilakis | [self incrementRefreshCount]; |
81 | 7db1712d | Miltiadis Vasilakis | }]; |
82 | 700184fb | Miltiadis Vasilakis | id createContainerObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"createContainerSucceeded" object:self.account |
83 | 7db1712d | Miltiadis Vasilakis | queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) |
84 | 7db1712d | Miltiadis Vasilakis | { |
85 | 7db1712d | Miltiadis Vasilakis | [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:storageRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; |
86 | 7db1712d | Miltiadis Vasilakis | }]; |
87 | 700184fb | Miltiadis Vasilakis | id deleteContainerObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"deleteContainerSucceeded" object:self.account |
88 | 700184fb | Miltiadis Vasilakis | queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) |
89 | 7db1712d | Miltiadis Vasilakis | { |
90 | 7db1712d | Miltiadis Vasilakis | [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:storageRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; |
91 | 7db1712d | Miltiadis Vasilakis | }]; |
92 | 700184fb | Miltiadis Vasilakis | |
93 | 7db1712d | Miltiadis Vasilakis | observers = [[NSArray alloc] initWithObjects: getContainersObserver, getContainersFailedObserver, createContainerObserver, deleteContainerObserver, nil]; |
94 | 700184fb | Miltiadis Vasilakis | |
95 | 7db1712d | Miltiadis Vasilakis | |
96 | 700184fb | Miltiadis Vasilakis | } |
97 | 700184fb | Miltiadis Vasilakis | |
98 | 700184fb | Miltiadis Vasilakis | - (void)viewWillAppear:(BOOL)animated { |
99 | 700184fb | Miltiadis Vasilakis | [super viewWillAppear:animated]; |
100 | 700184fb | Miltiadis Vasilakis | self.navigationItem.title = self.account.username; |
101 | 700184fb | Miltiadis Vasilakis | |
102 | d17a05de | Miltiadis Vasilakis | account.shared = NO; |
103 | d17a05de | Miltiadis Vasilakis | account.sharingAccount = nil; |
104 | d17a05de | Miltiadis Vasilakis | |
105 | 700184fb | Miltiadis Vasilakis | totalRows = 0; |
106 | 700184fb | Miltiadis Vasilakis | computeRow = (self.account.serversURL && [self.account.serversURL host]) ? totalRows++ : -1; |
107 | 700184fb | Miltiadis Vasilakis | storageRow = (self.account.filesURL && [self.account.filesURL host]) ? totalRows++ : -1; |
108 | 700184fb | Miltiadis Vasilakis | loadBalancingRow = [self.account loadBalancerURLs] ? totalRows++ : -1; |
109 | 700184fb | Miltiadis Vasilakis | |
110 | 700184fb | Miltiadis Vasilakis | if (self.account.provider.rssFeeds && [self.account.provider.rssFeeds count] > 0) { |
111 | 700184fb | Miltiadis Vasilakis | rssFeedsRow = totalRows++; |
112 | 45f2fce6 | Miltiadis Vasilakis | NSLog(@"rssfeedsrow: %d", rssFeedsRow); |
113 | 700184fb | Miltiadis Vasilakis | } else { |
114 | 700184fb | Miltiadis Vasilakis | rssFeedsRow = -1; |
115 | 700184fb | Miltiadis Vasilakis | } |
116 | 700184fb | Miltiadis Vasilakis | if (self.account.provider.contactURLs && [self.account.provider.contactURLs count] > 0) { |
117 | 700184fb | Miltiadis Vasilakis | contactRow = totalRows++; |
118 | 700184fb | Miltiadis Vasilakis | } else { |
119 | 700184fb | Miltiadis Vasilakis | contactRow = -1; |
120 | 700184fb | Miltiadis Vasilakis | } |
121 | 45f2fce6 | Miltiadis Vasilakis | /*if ([self.account.apiVersion isEqualToString:@"1.0"]) { |
122 | 45f2fce6 | Miltiadis Vasilakis | limitsRow = totalRows++; |
123 | 45f2fce6 | Miltiadis Vasilakis | } else { |
124 | 45f2fce6 | Miltiadis Vasilakis | limitsRow = -1; |
125 | 45f2fce6 | Miltiadis Vasilakis | }*/ |
126 | 54cb751a | Miltiadis Vasilakis | limitsRow = -1; |
127 | 700184fb | Miltiadis Vasilakis | [self.tableView reloadData]; |
128 | d17a05de | Miltiadis Vasilakis | |
129 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
130 | d17a05de | Miltiadis Vasilakis | PithosImageViewController *vc = [[PithosImageViewController alloc] initWithNibName:@"PithosImageViewController" bundle:nil]; |
131 | d17a05de | Miltiadis Vasilakis | [self.navigationController presentPrimaryViewController:vc]; |
132 | d17a05de | Miltiadis Vasilakis | [vc release]; |
133 | d17a05de | Miltiadis Vasilakis | } |
134 | 700184fb | Miltiadis Vasilakis | } |
135 | 700184fb | Miltiadis Vasilakis | |
136 | 700184fb | Miltiadis Vasilakis | - (void)viewDidAppear:(BOOL)animated { |
137 | 700184fb | Miltiadis Vasilakis | [super viewDidAppear:animated]; |
138 | 700184fb | Miltiadis Vasilakis | if (!self.account.hasBeenRefreshed) { |
139 | 700184fb | Miltiadis Vasilakis | [self.account refreshCollections]; |
140 | 700184fb | Miltiadis Vasilakis | } |
141 | 700184fb | Miltiadis Vasilakis | } |
142 | 700184fb | Miltiadis Vasilakis | - (void)viewWillDisappear:(BOOL)animated { |
143 | 7db1712d | Miltiadis Vasilakis | // [rootViewController.tableView deselectRowAtIndexPath:rootViewIndexPath animated:YES]; |
144 | 700184fb | Miltiadis Vasilakis | [super viewWillDisappear:animated]; |
145 | 700184fb | Miltiadis Vasilakis | } |
146 | 700184fb | Miltiadis Vasilakis | |
147 | 700184fb | Miltiadis Vasilakis | - (void)viewDidUnload { |
148 | 700184fb | Miltiadis Vasilakis | for (id observer in observers) { |
149 | 700184fb | Miltiadis Vasilakis | [[NSNotificationCenter defaultCenter] removeObserver:observer]; |
150 | 700184fb | Miltiadis Vasilakis | } |
151 | 7db1712d | Miltiadis Vasilakis | |
152 | 700184fb | Miltiadis Vasilakis | [super viewDidUnload]; |
153 | 700184fb | Miltiadis Vasilakis | } |
154 | 700184fb | Miltiadis Vasilakis | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { |
155 | 700184fb | Miltiadis Vasilakis | return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait); |
156 | 700184fb | Miltiadis Vasilakis | } |
157 | 700184fb | Miltiadis Vasilakis | |
158 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
159 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view data source |
160 | 700184fb | Miltiadis Vasilakis | |
161 | 700184fb | Miltiadis Vasilakis | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { |
162 | d17a05de | Miltiadis Vasilakis | return 3; |
163 | 700184fb | Miltiadis Vasilakis | } |
164 | 700184fb | Miltiadis Vasilakis | |
165 | 700184fb | Miltiadis Vasilakis | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
166 | d17a05de | Miltiadis Vasilakis | if (section == kObjectStorage) |
167 | d17a05de | Miltiadis Vasilakis | return totalRows; |
168 | d17a05de | Miltiadis Vasilakis | else |
169 | d17a05de | Miltiadis Vasilakis | return 2; |
170 | 700184fb | Miltiadis Vasilakis | } |
171 | 700184fb | Miltiadis Vasilakis | |
172 | 700184fb | Miltiadis Vasilakis | - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { |
173 | 700184fb | Miltiadis Vasilakis | |
174 | 700184fb | Miltiadis Vasilakis | static NSString *CellIdentifier = @"Cell"; |
175 | 700184fb | Miltiadis Vasilakis | |
176 | 700184fb | Miltiadis Vasilakis | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
177 | 700184fb | Miltiadis Vasilakis | if (cell == nil) { |
178 | 700184fb | Miltiadis Vasilakis | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; |
179 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
180 | 700184fb | Miltiadis Vasilakis | } |
181 | 700184fb | Miltiadis Vasilakis | |
182 | 700184fb | Miltiadis Vasilakis | cell.imageView.image = nil; |
183 | 700184fb | Miltiadis Vasilakis | |
184 | d17a05de | Miltiadis Vasilakis | if (indexPath.section == kObjectStorage) { |
185 | d17a05de | Miltiadis Vasilakis | if (indexPath.row == computeRow) { |
186 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = [self.account.provider isRackspace] ? @"Cloud Servers" : @"Compute"; |
187 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [self.account.provider isRackspace] ? [UIImage imageNamed:kCloudServersIcon] : [UIImage imageNamed:@"openstack-icon.png"]; |
188 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
189 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == storageRow) { |
190 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = [self.account.provider isRackspace] ? @"Cloud Files" : @"Object Storage"; |
191 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [self.account.provider isRackspace] ? [UIImage imageNamed:@"cloud-files-icon.png"] : [UIImage imageNamed:@"pithos-solo-smallest.png"]; |
192 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == loadBalancingRow) { |
193 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"Load Balancers"; |
194 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"load-balancers-icon.png"]; |
195 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
196 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == rssFeedsRow) { |
197 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"System Status"; |
198 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"rss-feeds-icon.png"]; |
199 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == contactRow) { |
200 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"Fanatical Support"; // @"Contact Information"; |
201 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"contact-rackspace-icon.png"]; |
202 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
203 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryNone; |
204 | d17a05de | Miltiadis Vasilakis | } else { |
205 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
206 | d17a05de | Miltiadis Vasilakis | } |
207 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == limitsRow) { |
208 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"API Rate Limits"; |
209 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"api-rate-limits-icon.png"]; |
210 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
211 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryNone; |
212 | d17a05de | Miltiadis Vasilakis | } else { |
213 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
214 | d17a05de | Miltiadis Vasilakis | } |
215 | 700184fb | Miltiadis Vasilakis | } |
216 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.section == kShared) { |
217 | d17a05de | Miltiadis Vasilakis | if (indexPath.row == mySharedRow) { |
218 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @" My Shared"; |
219 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"myShared.png"]; |
220 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
221 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == othersSharedRow) { |
222 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"Others Shared"; |
223 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"othersShared.png"]; |
224 | ba01f5a7 | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
225 | ba01f5a7 | Miltiadis Vasilakis | } |
226 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.section == kSettings) { |
227 | d17a05de | Miltiadis Vasilakis | if (indexPath.row == accountSettingsRow) { |
228 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"Account Token"; |
229 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"account-settings-icon.png"]; |
230 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
231 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryNone; |
232 | d17a05de | Miltiadis Vasilakis | } else { |
233 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
234 | d17a05de | Miltiadis Vasilakis | } |
235 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == accountMetadataRow) { |
236 | d17a05de | Miltiadis Vasilakis | cell.textLabel.text = @"Account Metadata"; |
237 | d17a05de | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"account-settings-icon.png"]; |
238 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
239 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryNone; |
240 | d17a05de | Miltiadis Vasilakis | } else { |
241 | d17a05de | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
242 | d17a05de | Miltiadis Vasilakis | } |
243 | d17a05de | Miltiadis Vasilakis | } |
244 | 700184fb | Miltiadis Vasilakis | } |
245 | 45f2fce6 | Miltiadis Vasilakis | |
246 | 700184fb | Miltiadis Vasilakis | return cell; |
247 | 700184fb | Miltiadis Vasilakis | } |
248 | 700184fb | Miltiadis Vasilakis | |
249 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
250 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view delegate |
251 | 700184fb | Miltiadis Vasilakis | |
252 | 700184fb | Miltiadis Vasilakis | - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
253 | 700184fb | Miltiadis Vasilakis | [super tableView:aTableView didSelectRowAtIndexPath:indexPath]; |
254 | 700184fb | Miltiadis Vasilakis | |
255 | 700184fb | Miltiadis Vasilakis | OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate]; |
256 | 700184fb | Miltiadis Vasilakis | BOOL shouldHidePopover = NO; |
257 | d17a05de | Miltiadis Vasilakis | |
258 | d17a05de | Miltiadis Vasilakis | if (indexPath.section == kObjectStorage) { |
259 | d17a05de | Miltiadis Vasilakis | if (indexPath.row == computeRow) { |
260 | d17a05de | Miltiadis Vasilakis | ServersViewController *vc = [[ServersViewController alloc] initWithNibName:@"ServersViewController" bundle:nil]; |
261 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
262 | d17a05de | Miltiadis Vasilakis | vc.accountHomeViewController = self; |
263 | d17a05de | Miltiadis Vasilakis | vc.comingFromAccountHome = YES; |
264 | 700184fb | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
265 | d17a05de | Miltiadis Vasilakis | [vc release]; |
266 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == storageRow) { |
267 | d17a05de | Miltiadis Vasilakis | ContainersViewController *vc = [[ContainersViewController alloc] initWithNibName:@"ContainersViewController" bundle:nil]; |
268 | d17a05de | Miltiadis Vasilakis | account.shared = NO; |
269 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
270 | d17a05de | Miltiadis Vasilakis | vc.accountHomeViewController = self; |
271 | 700184fb | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
272 | d17a05de | Miltiadis Vasilakis | [vc refreshButtonPressed:nil]; |
273 | d17a05de | Miltiadis Vasilakis | [vc release]; |
274 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == loadBalancingRow) { |
275 | d17a05de | Miltiadis Vasilakis | LoadBalancersViewController *vc = [[LoadBalancersViewController alloc] initWithNibName:@"LoadBalancersViewController" bundle:nil]; |
276 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
277 | 700184fb | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
278 | d17a05de | Miltiadis Vasilakis | [vc release]; |
279 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == rssFeedsRow) { |
280 | d17a05de | Miltiadis Vasilakis | RSSFeedsViewController *vc = [[RSSFeedsViewController alloc] initWithNibName:@"RSSFeedsViewController" bundle:nil]; |
281 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
282 | d17a05de | Miltiadis Vasilakis | vc.comingFromAccountHome = YES; |
283 | d17a05de | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
284 | d17a05de | Miltiadis Vasilakis | [vc release]; |
285 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == contactRow) { |
286 | d17a05de | Miltiadis Vasilakis | NSString *nibName = @"ContactInformationViewController"; |
287 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
288 | d17a05de | Miltiadis Vasilakis | nibName = @"ContactInformationViewController-iPad"; |
289 | d17a05de | Miltiadis Vasilakis | } |
290 | d17a05de | Miltiadis Vasilakis | ContactInformationViewController *vc = [[ContactInformationViewController alloc] initWithNibName:nibName bundle:nil]; |
291 | d17a05de | Miltiadis Vasilakis | vc.provider = account.provider; |
292 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
293 | d17a05de | Miltiadis Vasilakis | [self.navigationController presentPrimaryViewController:vc]; |
294 | d17a05de | Miltiadis Vasilakis | shouldHidePopover = YES; |
295 | d17a05de | Miltiadis Vasilakis | } else { |
296 | d17a05de | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
297 | d17a05de | Miltiadis Vasilakis | } |
298 | d17a05de | Miltiadis Vasilakis | [vc release]; |
299 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == limitsRow) { |
300 | d17a05de | Miltiadis Vasilakis | LimitsViewController *vc = [[LimitsViewController alloc] initWithNibName:@"LimitsViewController" bundle:nil]; |
301 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
302 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
303 | d17a05de | Miltiadis Vasilakis | [self.navigationController presentPrimaryViewController:vc]; |
304 | d17a05de | Miltiadis Vasilakis | shouldHidePopover = YES; |
305 | d17a05de | Miltiadis Vasilakis | } else { |
306 | d17a05de | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
307 | d17a05de | Miltiadis Vasilakis | } |
308 | d17a05de | Miltiadis Vasilakis | [vc release]; |
309 | 700184fb | Miltiadis Vasilakis | } |
310 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.section == kShared) { |
311 | d17a05de | Miltiadis Vasilakis | if (indexPath.row == mySharedRow) { |
312 | d17a05de | Miltiadis Vasilakis | ContainersViewController *vc = [[ContainersViewController alloc] initWithNibName:@"ContainersViewController" bundle:nil]; |
313 | d17a05de | Miltiadis Vasilakis | account.shared = YES; |
314 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
315 | d17a05de | Miltiadis Vasilakis | vc.accountHomeViewController = self; |
316 | ba01f5a7 | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
317 | d17a05de | Miltiadis Vasilakis | [vc refreshButtonPressed:nil]; |
318 | d17a05de | Miltiadis Vasilakis | [vc release]; |
319 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == othersSharedRow){ |
320 | d17a05de | Miltiadis Vasilakis | SharingAccountsViewController *vc = [[SharingAccountsViewController alloc] initWithNibName:@"SharingAccountsViewController" bundle:nil]; |
321 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
322 | d17a05de | Miltiadis Vasilakis | vc.accountHomeViewController = self; |
323 | d17a05de | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
324 | d17a05de | Miltiadis Vasilakis | [vc release]; |
325 | d17a05de | Miltiadis Vasilakis | } |
326 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.section == kSettings) { |
327 | d17a05de | Miltiadis Vasilakis | if (indexPath.row == accountSettingsRow) { |
328 | d17a05de | Miltiadis Vasilakis | AccountSettingsViewController *vc = [[AccountSettingsViewController alloc] initWithNibName:@"AccountSettingsViewController" bundle:nil]; |
329 | d17a05de | Miltiadis Vasilakis | vc.account = account; |
330 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
331 | d17a05de | Miltiadis Vasilakis | [self.navigationController presentPrimaryViewController:vc]; |
332 | d17a05de | Miltiadis Vasilakis | shouldHidePopover = YES; |
333 | d17a05de | Miltiadis Vasilakis | } else { |
334 | d17a05de | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
335 | d17a05de | Miltiadis Vasilakis | } |
336 | d17a05de | Miltiadis Vasilakis | [vc release]; |
337 | d17a05de | Miltiadis Vasilakis | } else if (indexPath.row == accountMetadataRow) { |
338 | d17a05de | Miltiadis Vasilakis | AccountGroupsViewController *vc = [[AccountGroupsViewController alloc] initWithNibName:@"AccountGroupsViewController" bundle:nil]; |
339 | d17a05de | Miltiadis Vasilakis | vc.account = self.account; |
340 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
341 | d17a05de | Miltiadis Vasilakis | [self.navigationController presentPrimaryViewController:vc]; |
342 | d17a05de | Miltiadis Vasilakis | shouldHidePopover = YES; |
343 | d17a05de | Miltiadis Vasilakis | } else { |
344 | d17a05de | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
345 | d17a05de | Miltiadis Vasilakis | } |
346 | d17a05de | Miltiadis Vasilakis | [vc release]; |
347 | ba01f5a7 | Miltiadis Vasilakis | } |
348 | 700184fb | Miltiadis Vasilakis | } |
349 | 700184fb | Miltiadis Vasilakis | |
350 | 700184fb | Miltiadis Vasilakis | if (shouldHidePopover) { |
351 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && app.rootViewController.popoverController != nil) { |
352 | 700184fb | Miltiadis Vasilakis | [app.rootViewController.popoverController dismissPopoverAnimated:YES]; |
353 | 700184fb | Miltiadis Vasilakis | } |
354 | 700184fb | Miltiadis Vasilakis | } |
355 | 700184fb | Miltiadis Vasilakis | } |
356 | 700184fb | Miltiadis Vasilakis | |
357 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
358 | 700184fb | Miltiadis Vasilakis | #pragma mark Button Handlers |
359 | 700184fb | Miltiadis Vasilakis | |
360 | 700184fb | Miltiadis Vasilakis | - (void)refreshButtonPressed:(id)sender { |
361 | 700184fb | Miltiadis Vasilakis | refreshCount = 0; |
362 | 700184fb | Miltiadis Vasilakis | [self.account refreshCollections]; |
363 | 700184fb | Miltiadis Vasilakis | } |
364 | 700184fb | Miltiadis Vasilakis | |
365 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
366 | 700184fb | Miltiadis Vasilakis | #pragma mark Memory management |
367 | 700184fb | Miltiadis Vasilakis | |
368 | 700184fb | Miltiadis Vasilakis | - (void)dealloc { |
369 | 700184fb | Miltiadis Vasilakis | [account release]; |
370 | 700184fb | Miltiadis Vasilakis | [rootViewController release]; |
371 | 700184fb | Miltiadis Vasilakis | [observers release]; |
372 | 700184fb | Miltiadis Vasilakis | [tableView release]; |
373 | 700184fb | Miltiadis Vasilakis | [super dealloc]; |
374 | 700184fb | Miltiadis Vasilakis | } |
375 | 700184fb | Miltiadis Vasilakis | |
376 | 700184fb | Miltiadis Vasilakis | @end |