Statistics
| Branch: | Tag: | Revision:

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