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 |