Statistics
| Branch: | Tag: | Revision:

root / Classes / AddContainerViewController.m @ c2940e36

History | View | Annotate | Download (3.7 kB)

1 700184fb Miltiadis Vasilakis
//
2 700184fb Miltiadis Vasilakis
//  AddContainerViewController.m
3 700184fb Miltiadis Vasilakis
//  OpenStack
4 700184fb Miltiadis Vasilakis
//
5 700184fb Miltiadis Vasilakis
//  Created by Mike Mayo on 12/8/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 "AddContainerViewController.h"
10 700184fb Miltiadis Vasilakis
#import "UIViewController+Conveniences.h"
11 700184fb Miltiadis Vasilakis
#import "ContainersViewController.h"
12 700184fb Miltiadis Vasilakis
#import "OpenStackAccount.h"
13 700184fb Miltiadis Vasilakis
#import "Container.h"
14 700184fb Miltiadis Vasilakis
#import "AccountManager.h"
15 700184fb Miltiadis Vasilakis
#import "RSTextFieldCell.h"
16 7db1712d Miltiadis Vasilakis
#import "APICallback.h"
17 7d96b67d Miltiadis Vasilakis
#import "ActivityIndicatorView.h"
18 700184fb Miltiadis Vasilakis
19 700184fb Miltiadis Vasilakis
@implementation AddContainerViewController
20 700184fb Miltiadis Vasilakis
21 700184fb Miltiadis Vasilakis
@synthesize containersViewController, account;
22 700184fb Miltiadis Vasilakis
23 7d96b67d Miltiadis Vasilakis
#pragma mark - View lifecycle
24 7d96b67d Miltiadis Vasilakis
25 700184fb Miltiadis Vasilakis
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
26 689de104 Miltiadis Vasilakis
    return ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
27 700184fb Miltiadis Vasilakis
}
28 700184fb Miltiadis Vasilakis
29 700184fb Miltiadis Vasilakis
- (void)viewDidLoad {
30 700184fb Miltiadis Vasilakis
    [super viewDidLoad];
31 700184fb Miltiadis Vasilakis
    self.navigationItem.title = @"Add Container";
32 700184fb Miltiadis Vasilakis
    [self addCancelButton];
33 700184fb Miltiadis Vasilakis
    [self addSaveButton];
34 700184fb Miltiadis Vasilakis
}
35 700184fb Miltiadis Vasilakis
36 7d96b67d Miltiadis Vasilakis
- (void)viewDidAppear:(BOOL)animated {
37 7d96b67d Miltiadis Vasilakis
    [super viewDidAppear:animated];
38 7d96b67d Miltiadis Vasilakis
    [textField becomeFirstResponder];
39 7d96b67d Miltiadis Vasilakis
}
40 7d96b67d Miltiadis Vasilakis
41 7d96b67d Miltiadis Vasilakis
#pragma mark - Memory management
42 700184fb Miltiadis Vasilakis
43 7d96b67d Miltiadis Vasilakis
- (void)dealloc {
44 7d96b67d Miltiadis Vasilakis
    [containersViewController release];
45 7d96b67d Miltiadis Vasilakis
    [account release];
46 7d96b67d Miltiadis Vasilakis
    [super dealloc];
47 700184fb Miltiadis Vasilakis
}
48 700184fb Miltiadis Vasilakis
49 7d96b67d Miltiadis Vasilakis
#pragma mark - UITableViewDataSource
50 7d96b67d Miltiadis Vasilakis
51 700184fb Miltiadis Vasilakis
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
52 700184fb Miltiadis Vasilakis
    return 1;
53 700184fb Miltiadis Vasilakis
}
54 700184fb Miltiadis Vasilakis
55 700184fb Miltiadis Vasilakis
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
56 700184fb Miltiadis Vasilakis
    return @"A container is a storage compartment for your files and provides a way for you to organize your data.  Containers are similar to folders, but cannot be nested.";
57 700184fb Miltiadis Vasilakis
}
58 700184fb Miltiadis Vasilakis
59 700184fb Miltiadis Vasilakis
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
60 7d96b67d Miltiadis Vasilakis
    static NSString *cellIdentifier = @"ContainerNameCell";
61 7d96b67d Miltiadis Vasilakis
    RSTextFieldCell *cell = (RSTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
62 700184fb Miltiadis Vasilakis
    if (cell == nil) {
63 7d96b67d Miltiadis Vasilakis
        cell = [[[RSTextFieldCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier] autorelease];
64 700184fb Miltiadis Vasilakis
        cell.modalPresentationStyle = UIModalPresentationFormSheet;
65 7d96b67d Miltiadis Vasilakis
        textField = cell.textField;
66 7d96b67d Miltiadis Vasilakis
        textField.delegate = self;
67 7d96b67d Miltiadis Vasilakis
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
68 700184fb Miltiadis Vasilakis
    }
69 700184fb Miltiadis Vasilakis
    cell.textLabel.text = @"Name";
70 700184fb Miltiadis Vasilakis
    return cell;
71 700184fb Miltiadis Vasilakis
}
72 700184fb Miltiadis Vasilakis
73 7d96b67d Miltiadis Vasilakis
#pragma mark - UITextFieldDelegate
74 7d96b67d Miltiadis Vasilakis
75 7d96b67d Miltiadis Vasilakis
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
76 7d96b67d Miltiadis Vasilakis
    [self saveButtonPressed:nil];
77 7d96b67d Miltiadis Vasilakis
    return NO;
78 7d96b67d Miltiadis Vasilakis
}
79 7d96b67d Miltiadis Vasilakis
80 7d96b67d Miltiadis Vasilakis
#pragma mark - Button handlers
81 700184fb Miltiadis Vasilakis
82 700184fb Miltiadis Vasilakis
- (void)saveButtonPressed:(id)sender {
83 7d96b67d Miltiadis Vasilakis
    if ([textField.text isEqualToString:@""]) {
84 7d96b67d Miltiadis Vasilakis
        [self alert:@"Container Name Required" message:@"Please enter a container name."];
85 700184fb Miltiadis Vasilakis
    } else {
86 7d96b67d Miltiadis Vasilakis
        [textField resignFirstResponder];
87 7d96b67d Miltiadis Vasilakis
        __block ActivityIndicatorView *activityIndicatorView = [ActivityIndicatorView activityIndicatorViewWithText:@"Creating container..."
88 7d96b67d Miltiadis Vasilakis
                                                                                                       andAddToView:self.view];
89 700184fb Miltiadis Vasilakis
        Container *container = [[Container alloc] init];
90 7d96b67d Miltiadis Vasilakis
        container.name = textField.text;
91 7db1712d Miltiadis Vasilakis
        [[self.account.manager createContainer:container] 
92 7db1712d Miltiadis Vasilakis
         success:^(OpenStackRequest *request) {
93 7db1712d Miltiadis Vasilakis
             [self.containersViewController.tableView reloadData];
94 c2940e36 Miltiadis Vasilakis
             [activityIndicatorView stopAnimatingAndRemoveFromSuperview];
95 7d96b67d Miltiadis Vasilakis
             [self dismissModalViewControllerAnimated:YES];
96 7d96b67d Miltiadis Vasilakis
             [container release];
97 7db1712d Miltiadis Vasilakis
         }
98 7db1712d Miltiadis Vasilakis
         failure:^(OpenStackRequest *request) {
99 c2940e36 Miltiadis Vasilakis
             [activityIndicatorView stopAnimatingAndRemoveFromSuperview];
100 0767143f Miltiadis Vasilakis
             [self alert:@"There was a problem creating your container." request:request];
101 7d96b67d Miltiadis Vasilakis
             [container release];
102 7db1712d Miltiadis Vasilakis
         }];
103 700184fb Miltiadis Vasilakis
    }
104 700184fb Miltiadis Vasilakis
}
105 700184fb Miltiadis Vasilakis
106 700184fb Miltiadis Vasilakis
@end