root / Classes / ContainersViewController.m @ 54fd5c36
History | View | Annotate | Download (11.9 kB)
1 | 700184fb | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 700184fb | Miltiadis Vasilakis | // ContainersViewController.m |
3 | 700184fb | Miltiadis Vasilakis | // OpenStack |
4 | 700184fb | Miltiadis Vasilakis | // |
5 | 700184fb | Miltiadis Vasilakis | // Created by Mike Mayo on 12/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 | 221c2106 | Miltiadis Vasilakis | #import "NSObject+Conveniences.h" |
10 | 700184fb | Miltiadis Vasilakis | #import "ContainersViewController.h" |
11 | 700184fb | Miltiadis Vasilakis | #import "OpenStackAccount.h" |
12 | 700184fb | Miltiadis Vasilakis | #import "Container.h" |
13 | 700184fb | Miltiadis Vasilakis | #import "AddContainerViewController.h" |
14 | 700184fb | Miltiadis Vasilakis | #import "UIViewController+Conveniences.h" |
15 | 700184fb | Miltiadis Vasilakis | #import "FolderViewController.h" |
16 | 700184fb | Miltiadis Vasilakis | #import "ContainerDetailViewController.h" |
17 | 700184fb | Miltiadis Vasilakis | #import "AccountManager.h" |
18 | 700184fb | Miltiadis Vasilakis | #import "OpenStackAppDelegate.h" |
19 | 700184fb | Miltiadis Vasilakis | #import "RootViewController.h" |
20 | 700184fb | Miltiadis Vasilakis | #import "APICallback.h" |
21 | 700184fb | Miltiadis Vasilakis | #import "GetCDNContainersRequest.h" |
22 | d17a05de | Miltiadis Vasilakis | #import "Provider.h" |
23 | d17a05de | Miltiadis Vasilakis | #import "AccountHomeViewController.h" |
24 | 700184fb | Miltiadis Vasilakis | |
25 | 700184fb | Miltiadis Vasilakis | |
26 | 700184fb | Miltiadis Vasilakis | @implementation ContainersViewController |
27 | 700184fb | Miltiadis Vasilakis | |
28 | 54fd5c36 | Miltiadis Vasilakis | @synthesize tableView, account, accountUsageInfo, accountHomeViewController, containerDetailViewController; |
29 | 700184fb | Miltiadis Vasilakis | |
30 | 700184fb | Miltiadis Vasilakis | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { |
31 | 700184fb | Miltiadis Vasilakis | return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait); |
32 | 700184fb | Miltiadis Vasilakis | } |
33 | 700184fb | Miltiadis Vasilakis | |
34 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
35 | 700184fb | Miltiadis Vasilakis | #pragma mark View lifecycle |
36 | 700184fb | Miltiadis Vasilakis | |
37 | 700184fb | Miltiadis Vasilakis | - (void)viewDidLoad { |
38 | 700184fb | Miltiadis Vasilakis | [super viewDidLoad]; |
39 | 700184fb | Miltiadis Vasilakis | self.navigationItem.title = @"Containers"; |
40 | 45f2fce6 | Miltiadis Vasilakis | [self addAddButton]; |
41 | d17a05de | Miltiadis Vasilakis | [self addHomeButton]; |
42 | 45f2fce6 | Miltiadis Vasilakis | |
43 | 45f2fce6 | Miltiadis Vasilakis | if (!account.shared && !account.sharingAccount && containersLoaded) { |
44 | 45f2fce6 | Miltiadis Vasilakis | if (![self.account.containers objectForKey:@"pithos"]) |
45 | 45f2fce6 | Miltiadis Vasilakis | [self createContainerWithName:@"pithos"]; |
46 | 45f2fce6 | Miltiadis Vasilakis | if (![self.account.containers objectForKey:@"trash"]) |
47 | 45f2fce6 | Miltiadis Vasilakis | [self createContainerWithName:@"trash"]; |
48 | 45f2fce6 | Miltiadis Vasilakis | } |
49 | 45f2fce6 | Miltiadis Vasilakis | |
50 | 700184fb | Miltiadis Vasilakis | } |
51 | 700184fb | Miltiadis Vasilakis | |
52 | 700184fb | Miltiadis Vasilakis | - (void)viewWillAppear:(BOOL)animated { |
53 | 700184fb | Miltiadis Vasilakis | [super viewWillAppear:animated]; |
54 | 7db1712d | Miltiadis Vasilakis | |
55 | 700184fb | Miltiadis Vasilakis | if ([self.account.containers count] == 0) { |
56 | 700184fb | Miltiadis Vasilakis | self.tableView.allowsSelection = NO; |
57 | 700184fb | Miltiadis Vasilakis | self.tableView.scrollEnabled = NO; |
58 | 700184fb | Miltiadis Vasilakis | [self.tableView reloadData]; |
59 | 45f2fce6 | Miltiadis Vasilakis | } |
60 | d17a05de | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
61 | d17a05de | Miltiadis Vasilakis | if ([self.account.containers count] == 0 ) { |
62 | d17a05de | Miltiadis Vasilakis | NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; |
63 | d17a05de | Miltiadis Vasilakis | [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; |
64 | d17a05de | Miltiadis Vasilakis | [self tableView:self.tableView didSelectRowAtIndexPath:indexPath]; |
65 | 45f2fce6 | Miltiadis Vasilakis | } |
66 | 45f2fce6 | Miltiadis Vasilakis | else if ([self.tableView indexPathForSelectedRow].row == 0 && [self.tableView indexPathForSelectedRow].section == 0) { |
67 | d17a05de | Miltiadis Vasilakis | ContainerDetailViewController *vc = [[ContainerDetailViewController alloc] initWithNibName:@"ContainerDetailViewController" bundle:nil]; |
68 | d17a05de | Miltiadis Vasilakis | [self presentPrimaryViewController:vc]; |
69 | d17a05de | Miltiadis Vasilakis | [vc release]; |
70 | d17a05de | Miltiadis Vasilakis | } |
71 | 700184fb | Miltiadis Vasilakis | } |
72 | 700184fb | Miltiadis Vasilakis | |
73 | 700184fb | Miltiadis Vasilakis | if (!containersLoaded && [self.account.containers count] == 0) { |
74 | 700184fb | Miltiadis Vasilakis | [self refreshButtonPressed:nil]; |
75 | 700184fb | Miltiadis Vasilakis | } |
76 | 700184fb | Miltiadis Vasilakis | } |
77 | 700184fb | Miltiadis Vasilakis | |
78 | 700184fb | Miltiadis Vasilakis | - (void)viewDidDisappear:(BOOL)animated { |
79 | 700184fb | Miltiadis Vasilakis | [super viewDidDisappear:animated]; |
80 | 700184fb | Miltiadis Vasilakis | } |
81 | 700184fb | Miltiadis Vasilakis | |
82 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
83 | 700184fb | Miltiadis Vasilakis | #pragma mark Button Handlers |
84 | 700184fb | Miltiadis Vasilakis | |
85 | 700184fb | Miltiadis Vasilakis | - (void)addButtonPressed:(id)sender { |
86 | 700184fb | Miltiadis Vasilakis | AddContainerViewController *vc = [[AddContainerViewController alloc] initWithNibName:@"AddContainerViewController" bundle:nil]; |
87 | 700184fb | Miltiadis Vasilakis | vc.containersViewController = self; |
88 | 700184fb | Miltiadis Vasilakis | vc.account = account; |
89 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
90 | 700184fb | Miltiadis Vasilakis | vc.modalPresentationStyle = UIModalPresentationFormSheet; |
91 | 700184fb | Miltiadis Vasilakis | OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate]; |
92 | 700184fb | Miltiadis Vasilakis | if (app.rootViewController.popoverController != nil) { |
93 | 700184fb | Miltiadis Vasilakis | [app.rootViewController.popoverController dismissPopoverAnimated:YES]; |
94 | 700184fb | Miltiadis Vasilakis | } |
95 | 700184fb | Miltiadis Vasilakis | } |
96 | 700184fb | Miltiadis Vasilakis | [self presentModalViewControllerWithNavigation:vc]; |
97 | 700184fb | Miltiadis Vasilakis | [vc release]; |
98 | 700184fb | Miltiadis Vasilakis | } |
99 | 700184fb | Miltiadis Vasilakis | |
100 | d17a05de | Miltiadis Vasilakis | - (IBAction)homeButtonPressed:(id)sender { |
101 | d17a05de | Miltiadis Vasilakis | [self.navigationController popToViewController:accountHomeViewController animated:YES]; |
102 | d17a05de | Miltiadis Vasilakis | } |
103 | d17a05de | Miltiadis Vasilakis | |
104 | 45f2fce6 | Miltiadis Vasilakis | |
105 | 700184fb | Miltiadis Vasilakis | - (void)enableRefreshButton { |
106 | 700184fb | Miltiadis Vasilakis | refreshButton.enabled = YES; |
107 | 700184fb | Miltiadis Vasilakis | [self hideToolbarActivityMessage]; |
108 | d17a05de | Miltiadis Vasilakis | if (!account.sharingAccount) |
109 | d17a05de | Miltiadis Vasilakis | [self showToolbarInfoMessage:accountUsageInfo]; |
110 | 700184fb | Miltiadis Vasilakis | } |
111 | 700184fb | Miltiadis Vasilakis | |
112 | 700184fb | Miltiadis Vasilakis | - (void)refreshButtonPressed:(id)sender { |
113 | 700184fb | Miltiadis Vasilakis | refreshButton.enabled = NO; |
114 | 700184fb | Miltiadis Vasilakis | //BOOL hadZeroContainers = [self.account.containers count] == 0; |
115 | d17a05de | Miltiadis Vasilakis | if (!account.sharingAccount) |
116 | d17a05de | Miltiadis Vasilakis | [self hideToolbarInfoMessage]; |
117 | 700184fb | Miltiadis Vasilakis | [self showToolbarActivityMessage:@"Refreshing containers..."]; |
118 | 700184fb | Miltiadis Vasilakis | |
119 | 7db1712d | Miltiadis Vasilakis | [[self.account.manager getContainers] success:^(OpenStackRequest *request) { |
120 | 700184fb | Miltiadis Vasilakis | self.account.containers = [request containers]; |
121 | 700184fb | Miltiadis Vasilakis | self.account.containerCount = [self.account.containers count]; |
122 | d6b38316 | Miltiadis Vasilakis | self.account.totalBytesUsed = [[request.responseHeaders objectForKey:@"X-Account-Bytes-Used"] longLongValue]; |
123 | d6b38316 | Miltiadis Vasilakis | self.account.quota = [[request.responseHeaders objectForKey:@"X-Account-Policy-Quota"] longLongValue]; |
124 | 07592312 | Miltiadis Vasilakis | self.accountUsageInfo = [NSString stringWithFormat:@"%@ used, %@ available", |
125 | 221c2106 | Miltiadis Vasilakis | [NSObject osxStyleHumanizedBytes:self.account.totalBytesUsed], |
126 | 221c2106 | Miltiadis Vasilakis | [NSObject osxStyleHumanizedBytes:self.account.quota]]; |
127 | 45f2fce6 | Miltiadis Vasilakis | |
128 | 700184fb | Miltiadis Vasilakis | [self.account persist]; |
129 | 45f2fce6 | Miltiadis Vasilakis | containersLoaded = YES; |
130 | 700184fb | Miltiadis Vasilakis | [self enableRefreshButton]; |
131 | 700184fb | Miltiadis Vasilakis | [self.tableView reloadData]; |
132 | ba01f5a7 | Miltiadis Vasilakis | //GetCDNContainersRequest *cdnRequest = [GetCDNContainersRequest request:self.account]; |
133 | ba01f5a7 | Miltiadis Vasilakis | //[cdnRequest startAsynchronous]; |
134 | 700184fb | Miltiadis Vasilakis | |
135 | 700184fb | Miltiadis Vasilakis | } failure:^(OpenStackRequest *request) { |
136 | 45f2fce6 | Miltiadis Vasilakis | containersLoaded = NO; |
137 | 700184fb | Miltiadis Vasilakis | [self enableRefreshButton]; |
138 | 700184fb | Miltiadis Vasilakis | if (request.responseStatusCode != 0) { |
139 | 700184fb | Miltiadis Vasilakis | [self alert:@"There was a problem loading your containers." request:request]; |
140 | 700184fb | Miltiadis Vasilakis | } |
141 | 700184fb | Miltiadis Vasilakis | }]; |
142 | 700184fb | Miltiadis Vasilakis | } |
143 | 700184fb | Miltiadis Vasilakis | |
144 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
145 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view data source |
146 | 700184fb | Miltiadis Vasilakis | |
147 | 700184fb | Miltiadis Vasilakis | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { |
148 | 700184fb | Miltiadis Vasilakis | return 1; |
149 | 700184fb | Miltiadis Vasilakis | } |
150 | 700184fb | Miltiadis Vasilakis | |
151 | 700184fb | Miltiadis Vasilakis | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
152 | 700184fb | Miltiadis Vasilakis | if ([self.account.containers count] == 0) { |
153 | 700184fb | Miltiadis Vasilakis | self.tableView.allowsSelection = NO; |
154 | 700184fb | Miltiadis Vasilakis | self.tableView.scrollEnabled = NO; |
155 | 700184fb | Miltiadis Vasilakis | } else { |
156 | 700184fb | Miltiadis Vasilakis | self.tableView.allowsSelection = YES; |
157 | 700184fb | Miltiadis Vasilakis | self.tableView.scrollEnabled = YES; |
158 | 700184fb | Miltiadis Vasilakis | } |
159 | 700184fb | Miltiadis Vasilakis | if (!containersLoaded && [self.account.containers count] == 0) { |
160 | 700184fb | Miltiadis Vasilakis | return 0; |
161 | 700184fb | Miltiadis Vasilakis | } else { |
162 | 700184fb | Miltiadis Vasilakis | return MAX(1, [account.containers count]); |
163 | 700184fb | Miltiadis Vasilakis | } |
164 | 700184fb | Miltiadis Vasilakis | } |
165 | 700184fb | Miltiadis Vasilakis | |
166 | 700184fb | Miltiadis Vasilakis | - (CGFloat)tableView:(UITableView *)aTableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { |
167 | 700184fb | Miltiadis Vasilakis | if ([account.containers count] == 0) { |
168 | 700184fb | Miltiadis Vasilakis | return aTableView.frame.size.height; |
169 | 700184fb | Miltiadis Vasilakis | } else { |
170 | 700184fb | Miltiadis Vasilakis | return aTableView.rowHeight; |
171 | 700184fb | Miltiadis Vasilakis | } |
172 | 700184fb | Miltiadis Vasilakis | } |
173 | 700184fb | Miltiadis Vasilakis | - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { |
174 | 700184fb | Miltiadis Vasilakis | if (containersLoaded && [self.account.containers count] == 0) { |
175 | d17a05de | Miltiadis Vasilakis | NSString *noContainersTitle = self.account.shared ? @"No shared containers" : @"No containers"; |
176 | d17a05de | Miltiadis Vasilakis | NSString *noContainersSubtitle = self.account.shared ? @"" : @"Tap the + button to create a new container"; |
177 | d17a05de | Miltiadis Vasilakis | self.navigationItem.rightBarButtonItem.enabled = !self.account.shared; |
178 | d17a05de | Miltiadis Vasilakis | |
179 | d17a05de | Miltiadis Vasilakis | return [self tableView:tableView emptyCellWithImage: |
180 | d17a05de | Miltiadis Vasilakis | [UIImage imageNamed:@"empty-containers.png"] |
181 | d17a05de | Miltiadis Vasilakis | title:noContainersTitle |
182 | d17a05de | Miltiadis Vasilakis | subtitle:noContainersSubtitle]; |
183 | 700184fb | Miltiadis Vasilakis | } else { |
184 | 700184fb | Miltiadis Vasilakis | static NSString *CellIdentifier = @"Cell"; |
185 | 700184fb | Miltiadis Vasilakis | |
186 | 700184fb | Miltiadis Vasilakis | UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
187 | 700184fb | Miltiadis Vasilakis | if (cell == nil) { |
188 | 700184fb | Miltiadis Vasilakis | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; |
189 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
190 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
191 | 700184fb | Miltiadis Vasilakis | } else { |
192 | 700184fb | Miltiadis Vasilakis | cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; |
193 | 700184fb | Miltiadis Vasilakis | } |
194 | 700184fb | Miltiadis Vasilakis | } |
195 | 45f2fce6 | Miltiadis Vasilakis | Container *container = [self.account.pithosSortedContainers objectAtIndex:indexPath.row]; |
196 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = container.name; |
197 | 45f2fce6 | Miltiadis Vasilakis | if ([container.name isEqualToString:@"pithos"]) |
198 | 45f2fce6 | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"PithosContainerIcon.png"]; |
199 | 45f2fce6 | Miltiadis Vasilakis | else if ([container.name isEqualToString:@"trash"]) |
200 | 45f2fce6 | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"TrashIcon.png"]; |
201 | 45f2fce6 | Miltiadis Vasilakis | else |
202 | 45f2fce6 | Miltiadis Vasilakis | cell.imageView.image = [UIImage imageNamed:@"ContainerIcon.png"]; |
203 | 45f2fce6 | Miltiadis Vasilakis | |
204 | d17a05de | Miltiadis Vasilakis | if (!self.account.sharingAccount) |
205 | d17a05de | Miltiadis Vasilakis | cell.detailTextLabel.text = [container osxStyleHumanizedSize]; |
206 | 700184fb | Miltiadis Vasilakis | |
207 | 700184fb | Miltiadis Vasilakis | return cell; |
208 | 700184fb | Miltiadis Vasilakis | } |
209 | 700184fb | Miltiadis Vasilakis | } |
210 | 700184fb | Miltiadis Vasilakis | |
211 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
212 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view delegate |
213 | 700184fb | Miltiadis Vasilakis | |
214 | 700184fb | Miltiadis Vasilakis | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
215 | 700184fb | Miltiadis Vasilakis | Container *container = nil; |
216 | 700184fb | Miltiadis Vasilakis | if ([account.containers count] > 0) { |
217 | 45f2fce6 | Miltiadis Vasilakis | container = [self.account.pithosSortedContainers objectAtIndex:indexPath.row]; |
218 | 700184fb | Miltiadis Vasilakis | |
219 | 700184fb | Miltiadis Vasilakis | FolderViewController *vc = [[FolderViewController alloc] initWithNibName:@"FolderViewController" bundle:nil]; |
220 | 700184fb | Miltiadis Vasilakis | vc.account = self.account; |
221 | 700184fb | Miltiadis Vasilakis | vc.container = container; |
222 | 700184fb | Miltiadis Vasilakis | vc.folder = container.rootFolder; |
223 | 700184fb | Miltiadis Vasilakis | vc.containersViewController = self; |
224 | 700184fb | Miltiadis Vasilakis | vc.selectedContainerIndexPath = indexPath; |
225 | 700184fb | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
226 | 700184fb | Miltiadis Vasilakis | [vc release]; |
227 | 700184fb | Miltiadis Vasilakis | [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; |
228 | 700184fb | Miltiadis Vasilakis | } |
229 | 700184fb | Miltiadis Vasilakis | |
230 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
231 | 700184fb | Miltiadis Vasilakis | ContainerDetailViewController *vc = [[ContainerDetailViewController alloc] initWithNibName:@"ContainerDetailViewController" bundle:nil]; |
232 | 700184fb | Miltiadis Vasilakis | vc.account = self.account; |
233 | 700184fb | Miltiadis Vasilakis | vc.container = container; |
234 | 700184fb | Miltiadis Vasilakis | vc.containersViewController = self; |
235 | 700184fb | Miltiadis Vasilakis | vc.selectedContainerIndexPath = indexPath; |
236 | 700184fb | Miltiadis Vasilakis | [self presentPrimaryViewController:vc]; |
237 | 54fd5c36 | Miltiadis Vasilakis | self.containerDetailViewController = vc; |
238 | 700184fb | Miltiadis Vasilakis | [vc release]; |
239 | 700184fb | Miltiadis Vasilakis | } |
240 | 700184fb | Miltiadis Vasilakis | } |
241 | 700184fb | Miltiadis Vasilakis | |
242 | 700184fb | Miltiadis Vasilakis | - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { |
243 | 700184fb | Miltiadis Vasilakis | Container *container = nil; |
244 | 700184fb | Miltiadis Vasilakis | if ([account.containers count] > 0) { |
245 | 45f2fce6 | Miltiadis Vasilakis | container = [self.account.pithosSortedContainers objectAtIndex:indexPath.row]; |
246 | 700184fb | Miltiadis Vasilakis | } |
247 | 700184fb | Miltiadis Vasilakis | ContainerDetailViewController *vc = [[ContainerDetailViewController alloc] initWithNibName:@"ContainerDetailViewController" bundle:nil]; |
248 | 700184fb | Miltiadis Vasilakis | vc.account = self.account; |
249 | 700184fb | Miltiadis Vasilakis | vc.container = container; |
250 | 700184fb | Miltiadis Vasilakis | vc.containersViewController = self; |
251 | 700184fb | Miltiadis Vasilakis | vc.selectedContainerIndexPath = indexPath; |
252 | 700184fb | Miltiadis Vasilakis | [self.navigationController pushViewController:vc animated:YES]; |
253 | 700184fb | Miltiadis Vasilakis | [vc release]; |
254 | 700184fb | Miltiadis Vasilakis | } |
255 | 700184fb | Miltiadis Vasilakis | |
256 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
257 | d6b38316 | Miltiadis Vasilakis | #pragma mark Helper methods |
258 | d6b38316 | Miltiadis Vasilakis | |
259 | d6b38316 | Miltiadis Vasilakis | - (NSString *)humanReadableSize:(unsigned long long)bytes { |
260 | d6b38316 | Miltiadis Vasilakis | NSString *sizeUnit = @"bytes"; |
261 | d6b38316 | Miltiadis Vasilakis | |
262 | d6b38316 | Miltiadis Vasilakis | double sizeInBytes = bytes; |
263 | d6b38316 | Miltiadis Vasilakis | if (bytes > 1023 && bytes < 1048576) { |
264 | d6b38316 | Miltiadis Vasilakis | sizeInBytes = bytes / 1024.0; |
265 | d6b38316 | Miltiadis Vasilakis | sizeUnit = @"Kb"; |
266 | d6b38316 | Miltiadis Vasilakis | } |
267 | d6b38316 | Miltiadis Vasilakis | else if (bytes > 1048575 && bytes < 1073741824) { |
268 | d6b38316 | Miltiadis Vasilakis | sizeInBytes = bytes / 1048576.0; |
269 | d6b38316 | Miltiadis Vasilakis | sizeUnit = @"Mb"; |
270 | d6b38316 | Miltiadis Vasilakis | } |
271 | d6b38316 | Miltiadis Vasilakis | else if (bytes > 1073741823) { |
272 | d6b38316 | Miltiadis Vasilakis | sizeInBytes = bytes / 1073741824.0; |
273 | d6b38316 | Miltiadis Vasilakis | sizeUnit = @"Gb"; |
274 | d6b38316 | Miltiadis Vasilakis | } |
275 | d6b38316 | Miltiadis Vasilakis | |
276 | d6b38316 | Miltiadis Vasilakis | NSString *humanReadableString = [NSString stringWithFormat:@"%.1f %@", sizeInBytes, sizeUnit]; |
277 | d6b38316 | Miltiadis Vasilakis | humanReadableString = [humanReadableString stringByReplacingOccurrencesOfString:@".0" withString:@""]; |
278 | d6b38316 | Miltiadis Vasilakis | |
279 | d6b38316 | Miltiadis Vasilakis | return humanReadableString; |
280 | d6b38316 | Miltiadis Vasilakis | } |
281 | d6b38316 | Miltiadis Vasilakis | |
282 | 45f2fce6 | Miltiadis Vasilakis | - (void)createContainerWithName:(NSString *)containerName { |
283 | 45f2fce6 | Miltiadis Vasilakis | [self hideToolbarInfoMessage]; |
284 | 45f2fce6 | Miltiadis Vasilakis | [self showToolbarActivityMessage:@"Creating container..."]; |
285 | 45f2fce6 | Miltiadis Vasilakis | Container *container = [[Container alloc] init]; |
286 | 45f2fce6 | Miltiadis Vasilakis | container.name = containerName; |
287 | 7db1712d | Miltiadis Vasilakis | [[self.account.manager createContainer:container] |
288 | 7db1712d | Miltiadis Vasilakis | success:^(OpenStackRequest *request) { |
289 | 7db1712d | Miltiadis Vasilakis | [self hideToolbarActivityMessage]; |
290 | 7db1712d | Miltiadis Vasilakis | if (!account.sharingAccount) |
291 | 7db1712d | Miltiadis Vasilakis | [self showToolbarInfoMessage:accountUsageInfo]; |
292 | 7db1712d | Miltiadis Vasilakis | [self.tableView reloadData]; |
293 | 7db1712d | Miltiadis Vasilakis | } |
294 | 7db1712d | Miltiadis Vasilakis | failure:^(OpenStackRequest *request) { |
295 | 7db1712d | Miltiadis Vasilakis | [self hideToolbarActivityMessage]; |
296 | 7db1712d | Miltiadis Vasilakis | if (!account.sharingAccount) |
297 | 7db1712d | Miltiadis Vasilakis | [self showToolbarInfoMessage:accountUsageInfo]; |
298 | 7db1712d | Miltiadis Vasilakis | [self alert:@"There was a problem creating your container." request:request]; |
299 | 7db1712d | Miltiadis Vasilakis | }]; |
300 | 45f2fce6 | Miltiadis Vasilakis | [container release]; |
301 | 45f2fce6 | Miltiadis Vasilakis | } |
302 | 45f2fce6 | Miltiadis Vasilakis | |
303 | d6b38316 | Miltiadis Vasilakis | |
304 | d6b38316 | Miltiadis Vasilakis | #pragma mark - |
305 | 700184fb | Miltiadis Vasilakis | #pragma mark Memory management |
306 | 700184fb | Miltiadis Vasilakis | |
307 | 700184fb | Miltiadis Vasilakis | - (void)dealloc { |
308 | 07592312 | Miltiadis Vasilakis | [accountUsageInfo release]; |
309 | 700184fb | Miltiadis Vasilakis | [tableView release]; |
310 | 700184fb | Miltiadis Vasilakis | [account release]; |
311 | 54fd5c36 | Miltiadis Vasilakis | [containerDetailViewController release]; |
312 | 700184fb | Miltiadis Vasilakis | [super dealloc]; |
313 | 700184fb | Miltiadis Vasilakis | } |
314 | 700184fb | Miltiadis Vasilakis | |
315 | 700184fb | Miltiadis Vasilakis | @end |