root / Classes / UserAgentACLViewController.m @ 64929bae
History | View | Annotate | Download (4.8 kB)
1 | 700184fb | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 700184fb | Miltiadis Vasilakis | // UserAgentACLViewController.m |
3 | 700184fb | Miltiadis Vasilakis | // OpenStack |
4 | 700184fb | Miltiadis Vasilakis | // |
5 | 700184fb | Miltiadis Vasilakis | // Created by Mike Mayo on 12/31/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 "UserAgentACLViewController.h" |
10 | 700184fb | Miltiadis Vasilakis | #import "OpenStackAccount.h" |
11 | 700184fb | Miltiadis Vasilakis | #import "Container.h" |
12 | 700184fb | Miltiadis Vasilakis | #import "UIViewController+Conveniences.h" |
13 | 700184fb | Miltiadis Vasilakis | #import "RSTextFieldCell.h" |
14 | 700184fb | Miltiadis Vasilakis | #import "ActivityIndicatorView.h" |
15 | 700184fb | Miltiadis Vasilakis | #import "AccountManager.h" |
16 | 700184fb | Miltiadis Vasilakis | #import "ContainerDetailViewController.h" |
17 | 700184fb | Miltiadis Vasilakis | |
18 | 700184fb | Miltiadis Vasilakis | |
19 | 700184fb | Miltiadis Vasilakis | @implementation UserAgentACLViewController |
20 | 700184fb | Miltiadis Vasilakis | |
21 | 700184fb | Miltiadis Vasilakis | @synthesize account, container, containerDetailViewController; |
22 | 700184fb | Miltiadis Vasilakis | |
23 | 700184fb | Miltiadis Vasilakis | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { |
24 | 700184fb | Miltiadis Vasilakis | return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait); |
25 | 700184fb | Miltiadis Vasilakis | } |
26 | 700184fb | Miltiadis Vasilakis | |
27 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
28 | 700184fb | Miltiadis Vasilakis | #pragma mark View lifecycle |
29 | 700184fb | Miltiadis Vasilakis | |
30 | 700184fb | Miltiadis Vasilakis | - (void)viewDidLoad { |
31 | 700184fb | Miltiadis Vasilakis | [super viewDidLoad]; |
32 | 700184fb | Miltiadis Vasilakis | [self addSaveButton]; |
33 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
34 | 700184fb | Miltiadis Vasilakis | [self addCancelButton]; |
35 | 700184fb | Miltiadis Vasilakis | } |
36 | 700184fb | Miltiadis Vasilakis | self.navigationItem.title = @"User Agent ACL"; |
37 | 700184fb | Miltiadis Vasilakis | } |
38 | 700184fb | Miltiadis Vasilakis | |
39 | 700184fb | Miltiadis Vasilakis | - (void)viewDidAppear:(BOOL)animated { |
40 | 700184fb | Miltiadis Vasilakis | [super viewDidAppear:animated]; |
41 | 700184fb | Miltiadis Vasilakis | [textField becomeFirstResponder]; |
42 | 700184fb | Miltiadis Vasilakis | } |
43 | 700184fb | Miltiadis Vasilakis | |
44 | 700184fb | Miltiadis Vasilakis | - (void)viewWillDisappear:(BOOL)animated { |
45 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
46 | 700184fb | Miltiadis Vasilakis | [self.containerDetailViewController.tableView deselectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:5] animated:YES]; |
47 | 700184fb | Miltiadis Vasilakis | } |
48 | 700184fb | Miltiadis Vasilakis | } |
49 | 700184fb | Miltiadis Vasilakis | |
50 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
51 | 700184fb | Miltiadis Vasilakis | #pragma mark Table view data source |
52 | 700184fb | Miltiadis Vasilakis | |
53 | 700184fb | Miltiadis Vasilakis | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { |
54 | 700184fb | Miltiadis Vasilakis | return 1; |
55 | 700184fb | Miltiadis Vasilakis | } |
56 | 700184fb | Miltiadis Vasilakis | |
57 | 700184fb | Miltiadis Vasilakis | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
58 | 700184fb | Miltiadis Vasilakis | return 1; |
59 | 700184fb | Miltiadis Vasilakis | } |
60 | 700184fb | Miltiadis Vasilakis | |
61 | 700184fb | Miltiadis Vasilakis | - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { |
62 | 700184fb | Miltiadis Vasilakis | return @"The User Agent ACL is a Perl Compatible Regular Expression that must match the user agent for all content requests."; |
63 | 700184fb | Miltiadis Vasilakis | } |
64 | 700184fb | Miltiadis Vasilakis | |
65 | 700184fb | Miltiadis Vasilakis | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { |
66 | 700184fb | Miltiadis Vasilakis | static NSString *CellIdentifier = @"ReferrerACLCell"; |
67 | 700184fb | Miltiadis Vasilakis | RSTextFieldCell *cell = (RSTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
68 | 700184fb | Miltiadis Vasilakis | if (cell == nil) { |
69 | 700184fb | Miltiadis Vasilakis | cell = [[[RSTextFieldCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; |
70 | 700184fb | Miltiadis Vasilakis | cell.modalPresentationStyle = UIModalPresentationFormSheet; |
71 | 700184fb | Miltiadis Vasilakis | textField = cell.textField; |
72 | 700184fb | Miltiadis Vasilakis | textField.clearButtonMode = UITextFieldViewModeWhileEditing; |
73 | 700184fb | Miltiadis Vasilakis | textField.delegate = self; |
74 | 700184fb | Miltiadis Vasilakis | |
75 | 700184fb | Miltiadis Vasilakis | CGRect rect = CGRectInset(cell.contentView.bounds, 23.0, 12); |
76 | 700184fb | Miltiadis Vasilakis | rect.size.height += 5; // make slightly taller to not clip the bottom of text |
77 | 700184fb | Miltiadis Vasilakis | textField.frame = rect; |
78 | 700184fb | Miltiadis Vasilakis | } |
79 | 700184fb | Miltiadis Vasilakis | cell.textLabel.text = @""; |
80 | 700184fb | Miltiadis Vasilakis | textField.text = container.useragentACL; |
81 | 700184fb | Miltiadis Vasilakis | return cell; |
82 | 700184fb | Miltiadis Vasilakis | } |
83 | 700184fb | Miltiadis Vasilakis | |
84 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
85 | 700184fb | Miltiadis Vasilakis | #pragma mark TextFieldDelegate |
86 | 700184fb | Miltiadis Vasilakis | |
87 | 700184fb | Miltiadis Vasilakis | - (BOOL)textFieldShouldReturn:(UITextField *)textField { |
88 | 700184fb | Miltiadis Vasilakis | [self saveButtonPressed:nil]; |
89 | 700184fb | Miltiadis Vasilakis | return NO; |
90 | 700184fb | Miltiadis Vasilakis | } |
91 | 700184fb | Miltiadis Vasilakis | |
92 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
93 | 700184fb | Miltiadis Vasilakis | #pragma mark Save Button |
94 | 700184fb | Miltiadis Vasilakis | |
95 | 700184fb | Miltiadis Vasilakis | - (void)saveButtonPressed:(id)sender { |
96 | 700184fb | Miltiadis Vasilakis | NSString *oldACL = container.useragentACL; |
97 | 700184fb | Miltiadis Vasilakis | NSString *activityMessage = @"Saving..."; |
98 | 700184fb | Miltiadis Vasilakis | activityIndicatorView = [[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:activityMessage] text:activityMessage]; |
99 | 700184fb | Miltiadis Vasilakis | [activityIndicatorView addToView:self.view]; |
100 | 700184fb | Miltiadis Vasilakis | container.useragentACL = textField.text; |
101 | 700184fb | Miltiadis Vasilakis | [self.account.manager updateCDNContainer:container]; |
102 | 700184fb | Miltiadis Vasilakis | |
103 | 700184fb | Miltiadis Vasilakis | successObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"updateCDNContainerSucceeded" object:self.container |
104 | 700184fb | Miltiadis Vasilakis | queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) |
105 | 700184fb | Miltiadis Vasilakis | { |
106 | 700184fb | Miltiadis Vasilakis | [containerDetailViewController.tableView reloadData]; |
107 | 700184fb | Miltiadis Vasilakis | [activityIndicatorView removeFromSuperviewAndRelease]; |
108 | 700184fb | Miltiadis Vasilakis | [[NSNotificationCenter defaultCenter] removeObserver:successObserver]; |
109 | 700184fb | Miltiadis Vasilakis | [textField resignFirstResponder]; |
110 | 700184fb | Miltiadis Vasilakis | [self.navigationController popViewControllerAnimated:YES]; |
111 | 700184fb | Miltiadis Vasilakis | }]; |
112 | 700184fb | Miltiadis Vasilakis | |
113 | 700184fb | Miltiadis Vasilakis | failureObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"updateCDNContainerFailed" object:self.container |
114 | 700184fb | Miltiadis Vasilakis | queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) |
115 | 700184fb | Miltiadis Vasilakis | { |
116 | 700184fb | Miltiadis Vasilakis | [activityIndicatorView removeFromSuperviewAndRelease]; |
117 | 700184fb | Miltiadis Vasilakis | container.referrerACL = oldACL; |
118 | 700184fb | Miltiadis Vasilakis | textField.text = oldACL; |
119 | 700184fb | Miltiadis Vasilakis | [self alert:@"There was a problem updating this container." request:[notification.userInfo objectForKey:@"request"]]; |
120 | 700184fb | Miltiadis Vasilakis | |
121 | 700184fb | Miltiadis Vasilakis | [[NSNotificationCenter defaultCenter] removeObserver:failureObserver]; |
122 | 700184fb | Miltiadis Vasilakis | }]; |
123 | 700184fb | Miltiadis Vasilakis | } |
124 | 700184fb | Miltiadis Vasilakis | |
125 | 700184fb | Miltiadis Vasilakis | #pragma mark - |
126 | 700184fb | Miltiadis Vasilakis | #pragma mark Memory management |
127 | 700184fb | Miltiadis Vasilakis | |
128 | 700184fb | Miltiadis Vasilakis | - (void)dealloc { |
129 | 700184fb | Miltiadis Vasilakis | [account release]; |
130 | 700184fb | Miltiadis Vasilakis | [container release]; |
131 | 700184fb | Miltiadis Vasilakis | [containerDetailViewController release]; |
132 | 700184fb | Miltiadis Vasilakis | [super dealloc]; |
133 | 700184fb | Miltiadis Vasilakis | } |
134 | 700184fb | Miltiadis Vasilakis | |
135 | 700184fb | Miltiadis Vasilakis | @end |