Statistics
| Branch: | Tag: | Revision:

root / Classes / AddContainerViewController.m @ 9fee07a6

History | View | Annotate | Download (3.9 kB)

1
//
2
//  AddContainerViewController.m
3
//  OpenStack
4
//
5
//  Created by Mike Mayo on 12/8/10.
6
//  The OpenStack project is provided under the Apache 2.0 license.
7
//
8

    
9
#import "AddContainerViewController.h"
10
#import "UIViewController+Conveniences.h"
11
#import "ContainersViewController.h"
12
#import "OpenStackAccount.h"
13
#import "Container.h"
14
#import "AccountManager.h"
15
#import "RSTextFieldCell.h"
16
#import "APICallback.h"
17

    
18

    
19
@implementation AddContainerViewController
20

    
21
@synthesize containersViewController, account;
22

    
23
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
24
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
25
}
26

    
27
#pragma mark -
28
#pragma mark View lifecycle
29

    
30
- (void)viewDidLoad {
31
    [super viewDidLoad];
32
    self.navigationItem.title = @"Add Container";
33
    [self addCancelButton];
34
    [self addSaveButton];
35
}
36

    
37
#pragma mark -
38
#pragma mark Table view data source
39

    
40
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
41
    return 1;
42
}
43

    
44
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
45
    return 1;
46
}
47

    
48
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
49
    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.";
50
}
51

    
52
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
53
    
54
    static NSString *CellIdentifier = @"Cell";
55
    
56
    RSTextFieldCell *cell = (RSTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
57
    if (cell == nil) {
58
        cell = [[[RSTextFieldCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
59
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
60
        cell.modalPresentationStyle = UIModalPresentationFormSheet;
61
        nameTextField = cell.textField;
62
        nameTextField.delegate = self;
63
        [nameTextField becomeFirstResponder];
64
    }
65
    
66
    cell.textLabel.text = @"Name";
67
    
68
    return cell;
69
}
70

    
71
#pragma mark -
72
#pragma mark Button Handlers
73

    
74
- (void)saveButtonPressed:(id)sender {
75
    if ([nameTextField.text isEqualToString:@""]) {
76
        [self alert:nil message:@"Please enter a name."];
77
        [nameTextField becomeFirstResponder];
78
    } else {
79
        [self.containersViewController hideToolbarInfoMessage];
80
        [self.containersViewController showToolbarActivityMessage:@"Creating container..."];
81

    
82
        Container *container = [[Container alloc] init];
83
        container.name = nameTextField.text;
84
        [[self.account.manager createContainer:container] 
85
         success:^(OpenStackRequest *request) {
86
             [self.containersViewController hideToolbarActivityMessage];
87
             if (!account.sharingAccount)
88
                 [self.containersViewController showToolbarInfoMessage:self.containersViewController.accountUsageInfo];
89
             [self.containersViewController.tableView reloadData];
90
         }
91
         failure:^(OpenStackRequest *request) {
92
             [self.containersViewController hideToolbarActivityMessage];
93
             if (!account.sharingAccount)
94
                 [self.containersViewController showToolbarInfoMessage:self.containersViewController.accountUsageInfo];
95
             [self.containersViewController alert:@"There was a problem creating your container." request:request];
96
         }];
97
        [container release];
98
        [self dismissModalViewControllerAnimated:YES];
99
    }
100
}
101

    
102
#pragma mark -
103
#pragma mark Text Field Delegate
104

    
105
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
106
    [self saveButtonPressed:nil];
107
    return NO;
108
}
109

    
110
#pragma mark -
111
#pragma mark Memory management
112

    
113
- (void)dealloc {
114
    [containersViewController release];
115
    [account release];
116
    [super dealloc];
117
}
118

    
119
@end