Create application/directory for subdir, if metadata or permissions are applied.
[pithos-ios] / Classes / ResizeServerViewController.m
1 //
2 //  ResizeServerViewController.m
3 //  OpenStack
4 //
5 //  Created by Mike Mayo on 2/9/10.
6 //  The OpenStack project is provided under the Apache 2.0 license.
7 //
8
9 #import "ResizeServerViewController.h"
10 #import "ServerViewController.h"
11 #import "UIViewController+Conveniences.h"
12 #import "OpenStackAccount.h"
13 #import "Server.h"
14 #import "Flavor.h"
15 #import "AccountManager.h"
16 #import "Provider.h"
17
18 @implementation ResizeServerViewController
19
20 @synthesize account, server;
21
22
23 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
24     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
25 }
26
27 #pragma mark -
28 #pragma mark Button Handlers
29
30 -(void)saveButtonPressed:(id)sender {
31     [self.account.manager resizeServer:self.server flavor:selectedFlavor];
32     [serverViewController showToolbarActivityMessage:@"Resizing server..."];
33     [self dismissModalViewControllerAnimated:YES];    
34     [serverViewController.tableView deselectRowAtIndexPath:[NSIndexPath indexPathForRow:kResize inSection:kActions] animated:YES];
35 }
36
37 #pragma mark -
38 #pragma mark View lifecycle
39
40 - (void)viewWillAppear:(BOOL)animated {
41     [super viewWillAppear:animated];
42     selectedFlavor = self.server.flavor;
43     [tableView reloadData];
44 }
45
46 #pragma mark -
47 #pragma mark Table view data source
48
49 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
50     return 1;
51 }
52
53 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
54     return [self.account.flavors count];
55 }
56
57 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
58         return [self.account.provider isRackspace] ? @"Resizes will be charged or credited a prorated amount based upon the difference in cost and the number of days remaining in your billing cycle." : @"";
59 }
60
61 // Customize the appearance of table view cells.
62 - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
63     
64     static NSString *CellIdentifier = @"Cell";
65     
66     UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
67     if (cell == nil) {
68         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
69     }
70     
71     // Configure the cell...
72     Flavor *flavor = [self.account.sortedFlavors objectAtIndex:indexPath.row];
73         cell.textLabel.text = flavor.name;
74         cell.detailTextLabel.text = [NSString stringWithFormat:@"%iMB RAM, %iGB Disk", flavor.ram, flavor.disk];
75         
76         if (flavor.identifier == selectedFlavor.identifier) {
77                 cell.accessoryType = UITableViewCellAccessoryCheckmark;
78         } else {
79                 cell.accessoryType = UITableViewCellAccessoryNone;
80         }
81     
82     return cell;
83 }
84
85 #pragma mark -
86 #pragma mark Table view delegate
87
88 - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
89     selectedFlavor = [self.account.sortedFlavors objectAtIndex:indexPath.row];    
90     [aTableView deselectRowAtIndexPath:indexPath animated:YES];
91     [NSTimer scheduledTimerWithTimeInterval:0.35 target:aTableView selector:@selector(reloadData) userInfo:nil repeats:NO];
92 }
93
94 #pragma mark -
95 #pragma mark Memory management
96
97 - (void)dealloc {
98         [account release];
99     [server release];
100     [super dealloc];
101 }
102
103 @end
104