#import "AccountManager.h"
#import "ContainerDetailViewController.h"
#import "ContainersViewController.h"
+#import "APICallback.h"
#define kVersioning 0
#define kQuota 1
[account release];
[container release];
[oldVersioning release];
+ [activityIndicatorView release];
[super dealloc];
}
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
+
if (indexPath.section == kVersioning) {
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if (indexPath.row == 0) {
if (textField == nil) {
CGRect bounds = [cell.contentView bounds];
CGRect rect = CGRectInset(bounds, 10.0, 10.0);
- textField = [[UITextField alloc] initWithFrame:rect];
+ textField = [[[UITextField alloc] initWithFrame:rect] autorelease];
[textField setFrame:rect];
}
[textField setClearButtonMode:UITextFieldViewModeWhileEditing];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
textField.text = [NSString stringWithFormat:@"%u", self.container.quota];
[cell.contentView addSubview:textField];
-
cell.accessoryType = UITableViewCellAccessoryNone;
}
else if (indexPath.section == kSavePolicy) {
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
+
if (indexPath.section != kQuota)
[self.view endEditing:YES];
container.versioning = @"none";
NSString *activityMessage = @"Applying policy...";
+ [activityIndicatorView release];
activityIndicatorView = [[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:activityMessage] text:activityMessage];
[activityIndicatorView addToView:self.view];
- [self.account.manager writeContainerPolicy:container];
-
- successObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"writeContainerPolicySucceeded"
- object:container
- queue:[NSOperationQueue mainQueue]
- usingBlock:^(NSNotification *notification)
- {
- [self.tableView reloadData];
- if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
- [self.containerDetailViewController.containersViewController refreshButtonPressed:nil];
- [activityIndicatorView removeFromSuperviewAndRelease];
- [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
- [[NSNotificationCenter defaultCenter] removeObserver:successObserver];
- }];
- failureObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"writeContainerPolicyFailed"
- object:container
- queue:[NSOperationQueue mainQueue]
- usingBlock:^(NSNotification *notification)
- {
- container.versioning = self.oldVersioning;
- container.quota = self.oldQuota;
- [self configVersioningVariables];
- [self.tableView reloadData];
-
- [activityIndicatorView removeFromSuperviewAndRelease];
- [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
- [self.tableView reloadData];
- [self alert:@"There was a problem applying the policy." request:[notification.userInfo objectForKey:@"request"]];
- [[NSNotificationCenter defaultCenter] removeObserver:failureObserver];
- }];
+ [[self.account.manager writeContainerPolicy:container]
+ success:^(OpenStackRequest *request) {
+ [self.tableView reloadData];
+ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
+ [self.containerDetailViewController.containersViewController refreshButtonPressed:nil];
+ [activityIndicatorView removeFromSuperview];
+ [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
+ }
+ failure:^(OpenStackRequest *request) {
+ container.versioning = self.oldVersioning;
+ container.quota = self.oldQuota;
+ [self configVersioningVariables];
+ [self.tableView reloadData];
+
+ [activityIndicatorView removeFromSuperview];
+ [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
+ [self.tableView reloadData];
+ [self alert:@"There was a problem applying the policy." request:request];
+ }];
}
}
#pragma mark - Textfield delegate
-- (void)textFieldDidEndEditing:(UITextField *)textField {
+- (void)textFieldDidEndEditing:(UITextField *)textField
+{
self.oldQuota = container.quota;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setAllowsFloats:NO];
if (![numberFormatter numberFromString:textField.text]) {
[self alert:@"Invalid quota value" message:@"Only integers are accepted as valid quota values"];
- [numberFormatter release];
textField.text = [NSString stringWithFormat:@"%d", self.oldQuota];
[self.tableView reloadData];
- }
+ }
+ [numberFormatter release];
}
-- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField
+{
[textField resignFirstResponder];
return YES;
}
+
@end