Statistics
| Branch: | Tag: | Revision:

root / Classes / RootViewController.m @ 3a8071d4

History | View | Annotate | Download (13.8 kB)

1 700184fb Miltiadis Vasilakis
//
2 700184fb Miltiadis Vasilakis
//  RootViewController.m
3 700184fb Miltiadis Vasilakis
//  OpenStack
4 700184fb Miltiadis Vasilakis
//
5 700184fb Miltiadis Vasilakis
//  Created by Mike Mayo on 9/30/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 "RootViewController.h"
10 700184fb Miltiadis Vasilakis
#import "ProvidersViewController.h"
11 700184fb Miltiadis Vasilakis
#import "OpenStackAccount.h"
12 700184fb Miltiadis Vasilakis
#import "Provider.h"
13 700184fb Miltiadis Vasilakis
#import "Archiver.h"
14 700184fb Miltiadis Vasilakis
#import "ActivityIndicatorView.h"
15 700184fb Miltiadis Vasilakis
#import "UIViewController+Conveniences.h"
16 700184fb Miltiadis Vasilakis
#import "SettingsViewController.h"
17 700184fb Miltiadis Vasilakis
#import "Keychain.h"
18 700184fb Miltiadis Vasilakis
#import "PasscodeViewController.h"
19 700184fb Miltiadis Vasilakis
#import "OpenStackAppDelegate.h"
20 07592312 Miltiadis Vasilakis
#import "AccountHomeViewController.h"
21 c7ddd1f3 Miltiadis Vasilakis
#import "PithosImageViewController.h"
22 700184fb Miltiadis Vasilakis
23 700184fb Miltiadis Vasilakis
24 700184fb Miltiadis Vasilakis
@implementation RootViewController
25 700184fb Miltiadis Vasilakis
26 700184fb Miltiadis Vasilakis
@synthesize tableView, popoverController, detailItem;
27 07592312 Miltiadis Vasilakis
@synthesize restoreAccountView;
28 700184fb Miltiadis Vasilakis
29 700184fb Miltiadis Vasilakis
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
30 700184fb Miltiadis Vasilakis
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
31 700184fb Miltiadis Vasilakis
}
32 700184fb Miltiadis Vasilakis
33 07592312 Miltiadis Vasilakis
- (void)restoreProviderView:(AccountDetailsViewController *)accountDetailsViewController {
34 07592312 Miltiadis Vasilakis
    OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate];
35 07592312 Miltiadis Vasilakis
    ProvidersViewController *vc = [[ProvidersViewController alloc] initWithNibName:@"ProvidersViewController" bundle:nil];
36 07592312 Miltiadis Vasilakis
    vc.rootViewController = self;
37 07592312 Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
38 07592312 Miltiadis Vasilakis
        vc.modalPresentationStyle = UIModalPresentationFormSheet;
39 07592312 Miltiadis Vasilakis
        if (app.rootViewController.popoverController != nil) {
40 07592312 Miltiadis Vasilakis
            [app.rootViewController.popoverController dismissPopoverAnimated:YES];
41 07592312 Miltiadis Vasilakis
        }
42 07592312 Miltiadis Vasilakis
    }   
43 07592312 Miltiadis Vasilakis
    [self presentModalViewControllerWithNavigation:vc animated:NO];
44 07592312 Miltiadis Vasilakis
    [vc restoreAccountDetailsViewController:accountDetailsViewController];
45 07592312 Miltiadis Vasilakis
    [vc release];    
46 07592312 Miltiadis Vasilakis
}
47 07592312 Miltiadis Vasilakis
48 07592312 Miltiadis Vasilakis
- (void)restoreAccountView:(AccountSettingsViewController *)accountSettingsViewController {
49 45f2fce6 Miltiadis Vasilakis
    /*NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
50 45f2fce6 Miltiadis Vasilakis
    NSString *path =  [pathList  objectAtIndex:0];
51 45f2fce6 Miltiadis Vasilakis
    NSString *filePath = [NSString stringWithFormat:@"%@/iostestfile.txt", path];
52 45f2fce6 Miltiadis Vasilakis
    */
53 45f2fce6 Miltiadis Vasilakis
   /* self.navigationItem.title = @"Accounts";
54 45f2fce6 Miltiadis Vasilakis
    
55 45f2fce6 Miltiadis Vasilakis
    self.navigationItem.leftBarButtonItem = self.editButtonItem;
56 45f2fce6 Miltiadis Vasilakis
    
57 45f2fce6 Miltiadis Vasilakis
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed:)];
58 45f2fce6 Miltiadis Vasilakis
    self.navigationItem.rightBarButtonItem = addButton;
59 45f2fce6 Miltiadis Vasilakis
    [addButton release];
60 45f2fce6 Miltiadis Vasilakis
*/
61 07592312 Miltiadis Vasilakis
    AccountHomeViewController *vc = [[AccountHomeViewController alloc] initWithNibName:@"AccountHomeViewController" bundle:nil];
62 07592312 Miltiadis Vasilakis
    vc.account = accountSettingsViewController.account;
63 07592312 Miltiadis Vasilakis
    vc.account.hasBeenRefreshed = NO;
64 07592312 Miltiadis Vasilakis
    vc.rootViewController = self;
65 07592312 Miltiadis Vasilakis
    [self.navigationController pushViewController:vc animated:YES];
66 07592312 Miltiadis Vasilakis
    [vc release];
67 07592312 Miltiadis Vasilakis
}
68 07592312 Miltiadis Vasilakis
69 700184fb Miltiadis Vasilakis
#pragma mark -
70 700184fb Miltiadis Vasilakis
#pragma mark Split view support
71 700184fb Miltiadis Vasilakis
72 700184fb Miltiadis Vasilakis
/*
73 700184fb Miltiadis Vasilakis
 When setting the detail item, update the view and dismiss the popover controller if it's showing.
74 700184fb Miltiadis Vasilakis
 */
75 700184fb Miltiadis Vasilakis
- (void)setDetailItem:(id)newDetailItem {
76 700184fb Miltiadis Vasilakis
    if (detailItem != newDetailItem) {
77 700184fb Miltiadis Vasilakis
        [detailItem release];
78 700184fb Miltiadis Vasilakis
        detailItem = [newDetailItem retain];
79 700184fb Miltiadis Vasilakis
    }
80 700184fb Miltiadis Vasilakis
    
81 700184fb Miltiadis Vasilakis
    if (self.popoverController != nil) {
82 700184fb Miltiadis Vasilakis
        [self.popoverController dismissPopoverAnimated:YES];
83 700184fb Miltiadis Vasilakis
    }
84 700184fb Miltiadis Vasilakis
}
85 700184fb Miltiadis Vasilakis
86 700184fb Miltiadis Vasilakis
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
87 700184fb Miltiadis Vasilakis
    OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate];
88 700184fb Miltiadis Vasilakis
    app.barButtonItem = barButtonItem;
89 700184fb Miltiadis Vasilakis
    UIViewController *vc = [[[app.splitViewController.viewControllers objectAtIndex:1] viewControllers] lastObject];
90 700184fb Miltiadis Vasilakis
    barButtonItem.title = [[[self.navigationController.viewControllers lastObject] navigationItem] title];
91 700184fb Miltiadis Vasilakis
    vc.navigationItem.leftBarButtonItem = barButtonItem;
92 700184fb Miltiadis Vasilakis
    self.popoverController = pc;
93 700184fb Miltiadis Vasilakis
}
94 700184fb Miltiadis Vasilakis
95 700184fb Miltiadis Vasilakis
- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {    
96 700184fb Miltiadis Vasilakis
    OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate];
97 700184fb Miltiadis Vasilakis
    app.barButtonItem = barButtonItem;
98 700184fb Miltiadis Vasilakis
    UIViewController *vc = [[[app.splitViewController.viewControllers objectAtIndex:1] viewControllers] lastObject];
99 700184fb Miltiadis Vasilakis
    vc.navigationItem.leftBarButtonItem = nil;
100 700184fb Miltiadis Vasilakis
    self.popoverController = nil;
101 700184fb Miltiadis Vasilakis
}
102 700184fb Miltiadis Vasilakis
103 700184fb Miltiadis Vasilakis
#pragma mark -
104 700184fb Miltiadis Vasilakis
#pragma mark Button Handlers
105 700184fb Miltiadis Vasilakis
106 700184fb Miltiadis Vasilakis
- (void)addButtonPressed:(id)sender {
107 700184fb Miltiadis Vasilakis
    OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate];
108 700184fb Miltiadis Vasilakis
    ProvidersViewController *vc = [[ProvidersViewController alloc] initWithNibName:@"ProvidersViewController" bundle:nil];
109 700184fb Miltiadis Vasilakis
    vc.rootViewController = self;
110 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
111 700184fb Miltiadis Vasilakis
        vc.modalPresentationStyle = UIModalPresentationFormSheet;
112 700184fb Miltiadis Vasilakis
        if (app.rootViewController.popoverController != nil) {
113 700184fb Miltiadis Vasilakis
            [app.rootViewController.popoverController dismissPopoverAnimated:YES];
114 700184fb Miltiadis Vasilakis
        }
115 700184fb Miltiadis Vasilakis
    }                
116 700184fb Miltiadis Vasilakis
    [self presentModalViewControllerWithNavigation:vc];
117 700184fb Miltiadis Vasilakis
    [vc release];    
118 700184fb Miltiadis Vasilakis
}
119 700184fb Miltiadis Vasilakis
   
120 700184fb Miltiadis Vasilakis
- (void)settingsButtonPressed:(id)sender {
121 700184fb Miltiadis Vasilakis
122 700184fb Miltiadis Vasilakis
    //self.navigationController.navigationBarHidden = YES;
123 700184fb Miltiadis Vasilakis
    
124 700184fb Miltiadis Vasilakis
    //UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 460.0)];
125 700184fb Miltiadis Vasilakis
126 700184fb Miltiadis Vasilakis
    SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
127 700184fb Miltiadis Vasilakis
    
128 700184fb Miltiadis Vasilakis
    UINavigationController *settingsNavigationController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
129 700184fb Miltiadis Vasilakis
    settingsNavigationController.view.frame = CGRectMake(0.0, 0.0, 320.0, 460.0);
130 700184fb Miltiadis Vasilakis
    
131 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
132 700184fb Miltiadis Vasilakis
        settingsNavigationController.navigationBar.tintColor = self.navigationController.navigationBar.tintColor;
133 700184fb Miltiadis Vasilakis
        settingsNavigationController.navigationBar.translucent = self.navigationController.navigationBar.translucent;
134 700184fb Miltiadis Vasilakis
        settingsNavigationController.navigationBar.opaque = self.navigationController.navigationBar.opaque;
135 700184fb Miltiadis Vasilakis
        settingsNavigationController.navigationBar.barStyle = self.navigationController.navigationBar.barStyle;
136 700184fb Miltiadis Vasilakis
    } else {
137 700184fb Miltiadis Vasilakis
        settingsNavigationController.navigationBar.barStyle = UIBarStyleBlack;
138 700184fb Miltiadis Vasilakis
        settingsNavigationController.navigationBar.opaque = NO;
139 700184fb Miltiadis Vasilakis
    }
140 700184fb Miltiadis Vasilakis
141 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
142 700184fb Miltiadis Vasilakis
        if (self.popoverController != nil) {
143 700184fb Miltiadis Vasilakis
            [self.popoverController dismissPopoverAnimated:YES];
144 700184fb Miltiadis Vasilakis
        }        
145 700184fb Miltiadis Vasilakis
        settingsNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
146 700184fb Miltiadis Vasilakis
        [self presentModalViewController:settingsNavigationController animated:YES];
147 700184fb Miltiadis Vasilakis
    } else {
148 700184fb Miltiadis Vasilakis
        settingsNavigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
149 700184fb Miltiadis Vasilakis
        [self presentModalViewController:settingsNavigationController animated:YES];
150 700184fb Miltiadis Vasilakis
    }
151 700184fb Miltiadis Vasilakis
    
152 700184fb Miltiadis Vasilakis
    [settingsViewController release];
153 700184fb Miltiadis Vasilakis
    [settingsNavigationController release];
154 700184fb Miltiadis Vasilakis
    
155 700184fb Miltiadis Vasilakis
    
156 700184fb Miltiadis Vasilakis
}
157 700184fb Miltiadis Vasilakis
158 700184fb Miltiadis Vasilakis
#pragma mark -
159 700184fb Miltiadis Vasilakis
#pragma mark View lifecycle
160 700184fb Miltiadis Vasilakis
161 700184fb Miltiadis Vasilakis
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
162 700184fb Miltiadis Vasilakis
    [self.tableView setEditing:editing animated:animated];
163 700184fb Miltiadis Vasilakis
    [super setEditing:editing animated:animated];
164 700184fb Miltiadis Vasilakis
}
165 700184fb Miltiadis Vasilakis
166 700184fb Miltiadis Vasilakis
- (void)presentAndRelease:(NSTimer *)timer {
167 700184fb Miltiadis Vasilakis
    UIViewController *vc = [timer.userInfo objectForKey:@"vc"];
168 700184fb Miltiadis Vasilakis
    [self presentModalViewControllerWithNavigation:vc animated:NO];
169 700184fb Miltiadis Vasilakis
    [vc release];
170 700184fb Miltiadis Vasilakis
}
171 700184fb Miltiadis Vasilakis
172 700184fb Miltiadis Vasilakis
- (void)viewDidLoad {
173 700184fb Miltiadis Vasilakis
    [super viewDidLoad];
174 3a8071d4 Miltiadis Vasilakis
175 700184fb Miltiadis Vasilakis
    self.navigationItem.title = @"Accounts";
176 700184fb Miltiadis Vasilakis
177 700184fb Miltiadis Vasilakis
    self.navigationItem.leftBarButtonItem = self.editButtonItem;
178 700184fb Miltiadis Vasilakis
    
179 700184fb Miltiadis Vasilakis
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed:)];
180 700184fb Miltiadis Vasilakis
    self.navigationItem.rightBarButtonItem = addButton;
181 3a8071d4 Miltiadis Vasilakis
    [addButton release];    
182 700184fb Miltiadis Vasilakis
}
183 700184fb Miltiadis Vasilakis
184 700184fb Miltiadis Vasilakis
- (void)viewWillAppear:(BOOL)animated {
185 700184fb Miltiadis Vasilakis
    [super viewWillAppear:animated];
186 c7ddd1f3 Miltiadis Vasilakis
    [self.tableView reloadData];
187 c7ddd1f3 Miltiadis Vasilakis
    
188 c7ddd1f3 Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
189 c7ddd1f3 Miltiadis Vasilakis
        PithosImageViewController *vc = [[PithosImageViewController alloc] initWithNibName:@"PithosImageViewController" bundle:nil];
190 c7ddd1f3 Miltiadis Vasilakis
        [self.navigationController presentPrimaryViewController:vc];
191 c7ddd1f3 Miltiadis Vasilakis
        [vc release];
192 c7ddd1f3 Miltiadis Vasilakis
    }
193 3a8071d4 Miltiadis Vasilakis
    
194 700184fb Miltiadis Vasilakis
}
195 700184fb Miltiadis Vasilakis
196 700184fb Miltiadis Vasilakis
- (void)viewDidAppear:(BOOL)animated {
197 700184fb Miltiadis Vasilakis
    [super viewDidAppear:animated];
198 3a8071d4 Miltiadis Vasilakis
    
199 3a8071d4 Miltiadis Vasilakis
    if (!viewHasAppearedBefore) {
200 3a8071d4 Miltiadis Vasilakis
        if ([[OpenStackAccount accounts] count] == 0) {
201 3a8071d4 Miltiadis Vasilakis
            // if there are no accounts, go straight to the add account screen on launch
202 3a8071d4 Miltiadis Vasilakis
            ProvidersViewController *vc = [[ProvidersViewController alloc] initWithNibName:@"ProvidersViewController" bundle:nil];
203 3a8071d4 Miltiadis Vasilakis
            vc.rootViewController = self;
204 3a8071d4 Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
205 3a8071d4 Miltiadis Vasilakis
                vc.modalPresentationStyle = UIModalPresentationFormSheet;
206 3a8071d4 Miltiadis Vasilakis
            }   
207 3a8071d4 Miltiadis Vasilakis
            [self presentModalViewControllerWithNavigation:vc];        
208 3a8071d4 Miltiadis Vasilakis
            [vc release];   
209 3a8071d4 Miltiadis Vasilakis
        } else if (([[OpenStackAccount accounts] count] == 1) && (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad)) {
210 3a8071d4 Miltiadis Vasilakis
            // if there's only one account, go to its home screen
211 3a8071d4 Miltiadis Vasilakis
            // NOTE: not doing this on iPad because it screws up the split view controller.
212 3a8071d4 Miltiadis Vasilakis
            // TODO: make this work well with split view on iPad
213 3a8071d4 Miltiadis Vasilakis
            AccountHomeViewController *vc = [[AccountHomeViewController alloc] initWithNibName:@"AccountHomeViewController" bundle:nil];
214 3a8071d4 Miltiadis Vasilakis
            vc.account = [[OpenStackAccount accounts] objectAtIndex:0];
215 3a8071d4 Miltiadis Vasilakis
            vc.rootViewController = self;
216 3a8071d4 Miltiadis Vasilakis
            vc.rootViewIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
217 3a8071d4 Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:NO];
218 3a8071d4 Miltiadis Vasilakis
            [vc release];
219 3a8071d4 Miltiadis Vasilakis
        }
220 3a8071d4 Miltiadis Vasilakis
        viewHasAppearedBefore = YES;
221 3a8071d4 Miltiadis Vasilakis
    }
222 700184fb Miltiadis Vasilakis
}
223 700184fb Miltiadis Vasilakis
224 700184fb Miltiadis Vasilakis
/*
225 700184fb Miltiadis Vasilakis
- (void)viewWillDisappear:(BOOL)animated {
226 700184fb Miltiadis Vasilakis
	[super viewWillDisappear:animated];
227 700184fb Miltiadis Vasilakis
}
228 700184fb Miltiadis Vasilakis
*/
229 700184fb Miltiadis Vasilakis
/*
230 700184fb Miltiadis Vasilakis
- (void)viewDidDisappear:(BOOL)animated {
231 700184fb Miltiadis Vasilakis
	[super viewDidDisappear:animated];
232 700184fb Miltiadis Vasilakis
}
233 700184fb Miltiadis Vasilakis
*/
234 700184fb Miltiadis Vasilakis
235 700184fb Miltiadis Vasilakis
#pragma mark -
236 700184fb Miltiadis Vasilakis
#pragma mark Table view data source
237 700184fb Miltiadis Vasilakis
238 700184fb Miltiadis Vasilakis
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
239 700184fb Miltiadis Vasilakis
    return 1;
240 700184fb Miltiadis Vasilakis
}
241 700184fb Miltiadis Vasilakis
242 700184fb Miltiadis Vasilakis
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
243 700184fb Miltiadis Vasilakis
    return [[OpenStackAccount accounts] count];
244 700184fb Miltiadis Vasilakis
}
245 700184fb Miltiadis Vasilakis
246 700184fb Miltiadis Vasilakis
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
247 700184fb Miltiadis Vasilakis
    
248 700184fb Miltiadis Vasilakis
    static NSString *CellIdentifier = @"Cell";
249 700184fb Miltiadis Vasilakis
    
250 700184fb Miltiadis Vasilakis
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
251 700184fb Miltiadis Vasilakis
    if (cell == nil) {
252 700184fb Miltiadis Vasilakis
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
253 700184fb Miltiadis Vasilakis
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
254 700184fb Miltiadis Vasilakis
    }
255 700184fb Miltiadis Vasilakis
    
256 700184fb Miltiadis Vasilakis
	// Configure the cell.
257 700184fb Miltiadis Vasilakis
    OpenStackAccount *account = [[OpenStackAccount accounts] objectAtIndex:indexPath.row];
258 700184fb Miltiadis Vasilakis
    cell.textLabel.text = account.username;
259 700184fb Miltiadis Vasilakis
    cell.detailTextLabel.text = account.provider.name;
260 700184fb Miltiadis Vasilakis
        
261 700184fb Miltiadis Vasilakis
    if (account.provider.logoURLs && [account.provider.logoURLs objectForKey:@"provider_icon"]) {
262 700184fb Miltiadis Vasilakis
        cell.imageView.image = [UIImage imageNamed:[account.provider.logoURLs objectForKey:@"provider_icon"]];
263 700184fb Miltiadis Vasilakis
    } else {
264 07592312 Miltiadis Vasilakis
        cell.imageView.image = [UIImage imageNamed:@"pithos-solo-smallest.png"];
265 700184fb Miltiadis Vasilakis
    }
266 700184fb Miltiadis Vasilakis
267 700184fb Miltiadis Vasilakis
    return cell;
268 700184fb Miltiadis Vasilakis
}
269 700184fb Miltiadis Vasilakis
270 700184fb Miltiadis Vasilakis
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
271 700184fb Miltiadis Vasilakis
    return YES;
272 700184fb Miltiadis Vasilakis
}
273 700184fb Miltiadis Vasilakis
274 700184fb Miltiadis Vasilakis
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
275 700184fb Miltiadis Vasilakis
    
276 700184fb Miltiadis Vasilakis
    if (editingStyle == UITableViewCellEditingStyleDelete) {
277 700184fb Miltiadis Vasilakis
        NSMutableArray *accounts = [NSMutableArray arrayWithArray:[OpenStackAccount accounts]];
278 700184fb Miltiadis Vasilakis
        [[accounts objectAtIndex:indexPath.row] setFlaggedForDelete:YES];
279 700184fb Miltiadis Vasilakis
        [accounts removeObjectAtIndex:indexPath.row];
280 700184fb Miltiadis Vasilakis
        [OpenStackAccount persist:accounts];
281 700184fb Miltiadis Vasilakis
282 700184fb Miltiadis Vasilakis
        // Delete the row from the data source.
283 700184fb Miltiadis Vasilakis
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
284 700184fb Miltiadis Vasilakis
285 700184fb Miltiadis Vasilakis
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
286 700184fb Miltiadis Vasilakis
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
287 700184fb Miltiadis Vasilakis
    }   
288 700184fb Miltiadis Vasilakis
}
289 700184fb Miltiadis Vasilakis
290 700184fb Miltiadis Vasilakis
// Override to support rearranging the table view.
291 700184fb Miltiadis Vasilakis
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
292 700184fb Miltiadis Vasilakis
    NSMutableArray *accounts = [NSMutableArray arrayWithArray:[OpenStackAccount accounts]];
293 700184fb Miltiadis Vasilakis
    OpenStackAccount *account = [accounts objectAtIndex:fromIndexPath.row];
294 700184fb Miltiadis Vasilakis
    [accounts removeObjectAtIndex:fromIndexPath.row];
295 700184fb Miltiadis Vasilakis
    [accounts insertObject:account atIndex:toIndexPath.row];
296 700184fb Miltiadis Vasilakis
    [OpenStackAccount persist:accounts];
297 700184fb Miltiadis Vasilakis
}
298 700184fb Miltiadis Vasilakis
299 700184fb Miltiadis Vasilakis
// Override to support conditional rearranging of the table view.
300 700184fb Miltiadis Vasilakis
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
301 700184fb Miltiadis Vasilakis
    // Return NO if you do not want the item to be re-orderable.
302 700184fb Miltiadis Vasilakis
    return YES;
303 700184fb Miltiadis Vasilakis
}
304 700184fb Miltiadis Vasilakis
305 700184fb Miltiadis Vasilakis
#pragma mark -
306 700184fb Miltiadis Vasilakis
#pragma mark Table view delegate
307 700184fb Miltiadis Vasilakis
308 700184fb Miltiadis Vasilakis
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
309 700184fb Miltiadis Vasilakis
    AccountHomeViewController *vc = [[AccountHomeViewController alloc] initWithNibName:@"AccountHomeViewController" bundle:nil];
310 700184fb Miltiadis Vasilakis
    vc.account = [[OpenStackAccount accounts] objectAtIndex:indexPath.row];
311 700184fb Miltiadis Vasilakis
    vc.account.hasBeenRefreshed = NO;
312 700184fb Miltiadis Vasilakis
    vc.rootViewController = self;
313 700184fb Miltiadis Vasilakis
    vc.rootViewIndexPath = indexPath;
314 700184fb Miltiadis Vasilakis
    [self.navigationController pushViewController:vc animated:YES];
315 700184fb Miltiadis Vasilakis
    [vc release];
316 700184fb Miltiadis Vasilakis
}
317 700184fb Miltiadis Vasilakis
318 700184fb Miltiadis Vasilakis
#pragma mark -
319 700184fb Miltiadis Vasilakis
#pragma mark Memory management
320 700184fb Miltiadis Vasilakis
321 700184fb Miltiadis Vasilakis
- (void)didReceiveMemoryWarning {
322 700184fb Miltiadis Vasilakis
    // Releases the view if it doesn't have a superview.
323 700184fb Miltiadis Vasilakis
    [super didReceiveMemoryWarning];
324 700184fb Miltiadis Vasilakis
    
325 700184fb Miltiadis Vasilakis
    // Relinquish ownership any cached data, images, etc that aren't in use.
326 700184fb Miltiadis Vasilakis
}
327 700184fb Miltiadis Vasilakis
328 700184fb Miltiadis Vasilakis
- (void)viewDidUnload {
329 700184fb Miltiadis Vasilakis
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
330 700184fb Miltiadis Vasilakis
    // For example: self.myOutlet = nil;
331 700184fb Miltiadis Vasilakis
}
332 700184fb Miltiadis Vasilakis
333 700184fb Miltiadis Vasilakis
334 700184fb Miltiadis Vasilakis
- (void)dealloc {
335 700184fb Miltiadis Vasilakis
    [tableView release];
336 700184fb Miltiadis Vasilakis
    [popoverController release];
337 700184fb Miltiadis Vasilakis
    [detailItem release];     
338 700184fb Miltiadis Vasilakis
    [super dealloc];
339 700184fb Miltiadis Vasilakis
}
340 700184fb Miltiadis Vasilakis
341 700184fb Miltiadis Vasilakis
342 700184fb Miltiadis Vasilakis
@end