Statistics
| Branch: | Tag: | Revision:

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