Statistics
| Branch: | Tag: | Revision:

root / Classes / AccountHomeViewController.m @ 9fee07a6

History | View | Annotate | Download (16.5 kB)

1 700184fb Miltiadis Vasilakis
//
2 700184fb Miltiadis Vasilakis
//  AccountHomeViewController.m
3 700184fb Miltiadis Vasilakis
//  OpenStack
4 700184fb Miltiadis Vasilakis
//
5 700184fb Miltiadis Vasilakis
//  Created by Mike Mayo on 10/7/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 "AccountHomeViewController.h"
10 700184fb Miltiadis Vasilakis
#import "OpenStackAccount.h"
11 700184fb Miltiadis Vasilakis
#import "Provider.h"
12 700184fb Miltiadis Vasilakis
#import "ContactInformationViewController.h"
13 700184fb Miltiadis Vasilakis
#import "ServersViewController.h"
14 700184fb Miltiadis Vasilakis
#import "NSObject+Conveniences.h"
15 700184fb Miltiadis Vasilakis
#import "RootViewController.h"
16 700184fb Miltiadis Vasilakis
#import "LimitsViewController.h"
17 700184fb Miltiadis Vasilakis
#import "Container.h"
18 700184fb Miltiadis Vasilakis
#import "ContainersViewController.h"
19 700184fb Miltiadis Vasilakis
#import "AccountManager.h"
20 700184fb Miltiadis Vasilakis
#import "AccountSettingsViewController.h"
21 700184fb Miltiadis Vasilakis
#import "RSSFeedsViewController.h"
22 700184fb Miltiadis Vasilakis
#import "UIViewController+Conveniences.h"
23 700184fb Miltiadis Vasilakis
#import "Keychain.h"
24 700184fb Miltiadis Vasilakis
#import "PasscodeViewController.h"
25 700184fb Miltiadis Vasilakis
#import "OpenStackAppDelegate.h"
26 700184fb Miltiadis Vasilakis
#import "LoadBalancersViewController.h"
27 700184fb Miltiadis Vasilakis
#import "Reachability.h"
28 700184fb Miltiadis Vasilakis
#import "Image.h"
29 ba01f5a7 Miltiadis Vasilakis
#import "AccountGroupsViewController.h"
30 d17a05de Miltiadis Vasilakis
#import "SharingAccountsViewController.h"
31 d17a05de Miltiadis Vasilakis
#import "PithosImageViewController.h"
32 700184fb Miltiadis Vasilakis
33 d17a05de Miltiadis Vasilakis
#define kObjectStorage 0 
34 d17a05de Miltiadis Vasilakis
#define kShared 1
35 d17a05de Miltiadis Vasilakis
#define kSettings 2
36 700184fb Miltiadis Vasilakis
37 700184fb Miltiadis Vasilakis
@implementation AccountHomeViewController
38 700184fb Miltiadis Vasilakis
39 700184fb Miltiadis Vasilakis
@synthesize account, rootViewController, rootViewIndexPath, tableView;
40 700184fb Miltiadis Vasilakis
41 700184fb Miltiadis Vasilakis
#pragma mark -
42 700184fb Miltiadis Vasilakis
#pragma mark View lifecycle
43 700184fb Miltiadis Vasilakis
44 700184fb Miltiadis Vasilakis
- (void)incrementRefreshCount {
45 700184fb Miltiadis Vasilakis
    refreshCount++;
46 700184fb Miltiadis Vasilakis
    //if (refreshCount == 2) {
47 7db1712d Miltiadis Vasilakis
    self.account.hasBeenRefreshed = YES;
48 7db1712d Miltiadis Vasilakis
    [self hideToolbarActivityMessage];
49 7db1712d Miltiadis Vasilakis
    refreshButton.enabled = YES;
50 700184fb Miltiadis Vasilakis
    //}
51 700184fb Miltiadis Vasilakis
}
52 700184fb Miltiadis Vasilakis
- (void)viewDidLoad {
53 700184fb Miltiadis Vasilakis
    [super viewDidLoad];
54 d17a05de Miltiadis Vasilakis
        
55 700184fb Miltiadis Vasilakis
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
56 700184fb Miltiadis Vasilakis
    if ([reachability currentReachabilityStatus] == kNotReachable) {
57 700184fb Miltiadis Vasilakis
        self.account.hasBeenRefreshed = YES;
58 700184fb Miltiadis Vasilakis
        [self hideToolbarActivityMessage];
59 700184fb Miltiadis Vasilakis
        refreshButton.enabled = YES;
60 700184fb Miltiadis Vasilakis
        [self failOnBadConnection];
61 700184fb Miltiadis Vasilakis
    }
62 700184fb Miltiadis Vasilakis
    
63 d17a05de Miltiadis Vasilakis
    mySharedRow = 0;
64 d17a05de Miltiadis Vasilakis
    othersSharedRow = 1;
65 d17a05de Miltiadis Vasilakis
    accountSettingsRow = 0;
66 d17a05de Miltiadis Vasilakis
    accountMetadataRow = 1;
67 45f2fce6 Miltiadis Vasilakis
68 d17a05de Miltiadis Vasilakis
    
69 700184fb Miltiadis Vasilakis
    
70 700184fb Miltiadis Vasilakis
    
71 700184fb Miltiadis Vasilakis
    id getContainersObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getContainersSucceeded" object:self.account 
72 700184fb Miltiadis Vasilakis
                                                                                  queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
73 7db1712d Miltiadis Vasilakis
                                {
74 7db1712d Miltiadis Vasilakis
                                    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:storageRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
75 7db1712d Miltiadis Vasilakis
                                    [self incrementRefreshCount];
76 7db1712d Miltiadis Vasilakis
                                }];
77 7db1712d Miltiadis Vasilakis
    id getContainersFailedObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getContainersFailed" object:self.account 
78 7db1712d Miltiadis Vasilakis
                                                                                        queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
79 7db1712d Miltiadis Vasilakis
                                      {
80 7db1712d Miltiadis Vasilakis
                                          [self incrementRefreshCount];
81 7db1712d Miltiadis Vasilakis
                                      }];
82 700184fb Miltiadis Vasilakis
    id createContainerObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"createContainerSucceeded" object:self.account 
83 7db1712d Miltiadis Vasilakis
                                                                                    queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
84 7db1712d Miltiadis Vasilakis
                                  {
85 7db1712d Miltiadis Vasilakis
                                      [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:storageRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
86 7db1712d Miltiadis Vasilakis
                                  }];
87 700184fb Miltiadis Vasilakis
    id deleteContainerObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"deleteContainerSucceeded" object:self.account 
88 700184fb Miltiadis Vasilakis
                                                                                    queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
89 7db1712d Miltiadis Vasilakis
                                  {
90 7db1712d Miltiadis Vasilakis
                                      [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:storageRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
91 7db1712d Miltiadis Vasilakis
                                  }];
92 700184fb Miltiadis Vasilakis
    
93 7db1712d Miltiadis Vasilakis
    observers = [[NSArray alloc] initWithObjects: getContainersObserver, getContainersFailedObserver, createContainerObserver, deleteContainerObserver, nil];
94 700184fb Miltiadis Vasilakis
    
95 7db1712d Miltiadis Vasilakis
96 700184fb Miltiadis Vasilakis
}
97 700184fb Miltiadis Vasilakis
98 700184fb Miltiadis Vasilakis
- (void)viewWillAppear:(BOOL)animated {
99 700184fb Miltiadis Vasilakis
    [super viewWillAppear:animated];
100 700184fb Miltiadis Vasilakis
    self.navigationItem.title = self.account.username;    
101 700184fb Miltiadis Vasilakis
    
102 d17a05de Miltiadis Vasilakis
    account.shared = NO;
103 d17a05de Miltiadis Vasilakis
    account.sharingAccount = nil;
104 d17a05de Miltiadis Vasilakis
105 700184fb Miltiadis Vasilakis
    totalRows = 0;
106 700184fb Miltiadis Vasilakis
    computeRow = (self.account.serversURL && [self.account.serversURL host]) ? totalRows++ : -1;
107 700184fb Miltiadis Vasilakis
    storageRow = (self.account.filesURL && [self.account.filesURL host]) ? totalRows++ : -1;
108 700184fb Miltiadis Vasilakis
    loadBalancingRow = [self.account loadBalancerURLs] ? totalRows++ : -1;
109 700184fb Miltiadis Vasilakis
110 700184fb Miltiadis Vasilakis
    if (self.account.provider.rssFeeds && [self.account.provider.rssFeeds count] > 0) {
111 700184fb Miltiadis Vasilakis
        rssFeedsRow = totalRows++;
112 45f2fce6 Miltiadis Vasilakis
        NSLog(@"rssfeedsrow: %d", rssFeedsRow);
113 700184fb Miltiadis Vasilakis
    } else {
114 700184fb Miltiadis Vasilakis
        rssFeedsRow = -1;
115 700184fb Miltiadis Vasilakis
    }
116 700184fb Miltiadis Vasilakis
    if (self.account.provider.contactURLs && [self.account.provider.contactURLs count] > 0) {
117 700184fb Miltiadis Vasilakis
        contactRow = totalRows++;
118 700184fb Miltiadis Vasilakis
    } else {
119 700184fb Miltiadis Vasilakis
        contactRow = -1;
120 700184fb Miltiadis Vasilakis
    }
121 45f2fce6 Miltiadis Vasilakis
    /*if ([self.account.apiVersion isEqualToString:@"1.0"]) {
122 45f2fce6 Miltiadis Vasilakis
        limitsRow = totalRows++;
123 45f2fce6 Miltiadis Vasilakis
    } else {
124 45f2fce6 Miltiadis Vasilakis
        limitsRow = -1;
125 45f2fce6 Miltiadis Vasilakis
    }*/
126 54cb751a Miltiadis Vasilakis
    limitsRow = -1;
127 700184fb Miltiadis Vasilakis
    [self.tableView reloadData];
128 d17a05de Miltiadis Vasilakis
    
129 d17a05de Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
130 d17a05de Miltiadis Vasilakis
        PithosImageViewController *vc = [[PithosImageViewController alloc] initWithNibName:@"PithosImageViewController" bundle:nil];
131 d17a05de Miltiadis Vasilakis
        [self.navigationController presentPrimaryViewController:vc];
132 d17a05de Miltiadis Vasilakis
        [vc release];
133 d17a05de Miltiadis Vasilakis
    }
134 700184fb Miltiadis Vasilakis
}
135 700184fb Miltiadis Vasilakis
136 700184fb Miltiadis Vasilakis
- (void)viewDidAppear:(BOOL)animated {
137 700184fb Miltiadis Vasilakis
    [super viewDidAppear:animated];
138 700184fb Miltiadis Vasilakis
    if (!self.account.hasBeenRefreshed) {
139 700184fb Miltiadis Vasilakis
        [self.account refreshCollections];
140 700184fb Miltiadis Vasilakis
    }
141 700184fb Miltiadis Vasilakis
}
142 700184fb Miltiadis Vasilakis
- (void)viewWillDisappear:(BOOL)animated {
143 7db1712d Miltiadis Vasilakis
    //    [rootViewController.tableView deselectRowAtIndexPath:rootViewIndexPath animated:YES];
144 700184fb Miltiadis Vasilakis
    [super viewWillDisappear:animated];
145 700184fb Miltiadis Vasilakis
}
146 700184fb Miltiadis Vasilakis
147 700184fb Miltiadis Vasilakis
- (void)viewDidUnload {
148 700184fb Miltiadis Vasilakis
    for (id observer in observers) {
149 700184fb Miltiadis Vasilakis
        [[NSNotificationCenter defaultCenter] removeObserver:observer];
150 700184fb Miltiadis Vasilakis
    }
151 7db1712d Miltiadis Vasilakis
    
152 700184fb Miltiadis Vasilakis
    [super viewDidUnload];
153 700184fb Miltiadis Vasilakis
}
154 700184fb Miltiadis Vasilakis
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
155 700184fb Miltiadis Vasilakis
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
156 700184fb Miltiadis Vasilakis
}
157 700184fb Miltiadis Vasilakis
158 700184fb Miltiadis Vasilakis
#pragma mark -
159 700184fb Miltiadis Vasilakis
#pragma mark Table view data source
160 700184fb Miltiadis Vasilakis
161 700184fb Miltiadis Vasilakis
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
162 d17a05de Miltiadis Vasilakis
    return 3;
163 700184fb Miltiadis Vasilakis
}
164 700184fb Miltiadis Vasilakis
165 700184fb Miltiadis Vasilakis
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
166 d17a05de Miltiadis Vasilakis
    if (section == kObjectStorage)
167 d17a05de Miltiadis Vasilakis
        return totalRows;
168 d17a05de Miltiadis Vasilakis
    else 
169 d17a05de Miltiadis Vasilakis
        return 2;
170 700184fb Miltiadis Vasilakis
}
171 700184fb Miltiadis Vasilakis
172 700184fb Miltiadis Vasilakis
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
173 700184fb Miltiadis Vasilakis
    
174 700184fb Miltiadis Vasilakis
    static NSString *CellIdentifier = @"Cell";
175 700184fb Miltiadis Vasilakis
    
176 700184fb Miltiadis Vasilakis
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
177 700184fb Miltiadis Vasilakis
    if (cell == nil) {
178 700184fb Miltiadis Vasilakis
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
179 700184fb Miltiadis Vasilakis
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
180 700184fb Miltiadis Vasilakis
    }
181 700184fb Miltiadis Vasilakis
    
182 700184fb Miltiadis Vasilakis
    cell.imageView.image = nil;
183 700184fb Miltiadis Vasilakis
    
184 d17a05de Miltiadis Vasilakis
    if (indexPath.section == kObjectStorage) {
185 d17a05de Miltiadis Vasilakis
        if (indexPath.row == computeRow) {
186 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = [self.account.provider isRackspace] ? @"Cloud Servers" : @"Compute";
187 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [self.account.provider isRackspace] ? [UIImage imageNamed:kCloudServersIcon] : [UIImage imageNamed:@"openstack-icon.png"];
188 700184fb Miltiadis Vasilakis
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
189 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == storageRow) {
190 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = [self.account.provider isRackspace] ? @"Cloud Files" : @"Object Storage";
191 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [self.account.provider isRackspace] ? [UIImage imageNamed:@"cloud-files-icon.png"] : [UIImage imageNamed:@"pithos-solo-smallest.png"];
192 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == loadBalancingRow) {
193 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"Load Balancers";
194 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"load-balancers-icon.png"];
195 d17a05de Miltiadis Vasilakis
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
196 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == rssFeedsRow) {
197 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"System Status";
198 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"rss-feeds-icon.png"];
199 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == contactRow) {
200 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"Fanatical Support"; // @"Contact Information";
201 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"contact-rackspace-icon.png"];
202 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
203 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryNone;
204 d17a05de Miltiadis Vasilakis
            } else {
205 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
206 d17a05de Miltiadis Vasilakis
            }
207 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == limitsRow) {
208 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"API Rate Limits";
209 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"api-rate-limits-icon.png"];
210 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
211 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryNone;
212 d17a05de Miltiadis Vasilakis
            } else {
213 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
214 d17a05de Miltiadis Vasilakis
            }
215 700184fb Miltiadis Vasilakis
        }
216 d17a05de Miltiadis Vasilakis
    } else if (indexPath.section == kShared) {
217 d17a05de Miltiadis Vasilakis
        if (indexPath.row == mySharedRow) {
218 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @" My Shared";
219 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"myShared.png"];
220 700184fb Miltiadis Vasilakis
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
221 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == othersSharedRow) {
222 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"Others Shared";
223 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"othersShared.png"];
224 ba01f5a7 Miltiadis Vasilakis
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
225 ba01f5a7 Miltiadis Vasilakis
        }
226 d17a05de Miltiadis Vasilakis
    } else if (indexPath.section == kSettings) {
227 d17a05de Miltiadis Vasilakis
        if (indexPath.row == accountSettingsRow) {
228 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"Account Token";
229 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"account-settings-icon.png"];
230 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
231 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryNone;
232 d17a05de Miltiadis Vasilakis
            } else {
233 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
234 d17a05de Miltiadis Vasilakis
            }
235 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == accountMetadataRow) {
236 d17a05de Miltiadis Vasilakis
            cell.textLabel.text = @"Account Metadata";
237 d17a05de Miltiadis Vasilakis
            cell.imageView.image = [UIImage imageNamed:@"account-settings-icon.png"];
238 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
239 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryNone;
240 d17a05de Miltiadis Vasilakis
            } else {
241 d17a05de Miltiadis Vasilakis
                cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
242 d17a05de Miltiadis Vasilakis
            }
243 d17a05de Miltiadis Vasilakis
        }
244 700184fb Miltiadis Vasilakis
    }
245 45f2fce6 Miltiadis Vasilakis
            
246 700184fb Miltiadis Vasilakis
    return cell;
247 700184fb Miltiadis Vasilakis
}
248 700184fb Miltiadis Vasilakis
249 700184fb Miltiadis Vasilakis
#pragma mark -
250 700184fb Miltiadis Vasilakis
#pragma mark Table view delegate
251 700184fb Miltiadis Vasilakis
252 700184fb Miltiadis Vasilakis
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
253 700184fb Miltiadis Vasilakis
    [super tableView:aTableView didSelectRowAtIndexPath:indexPath];
254 700184fb Miltiadis Vasilakis
    
255 700184fb Miltiadis Vasilakis
    OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate];
256 700184fb Miltiadis Vasilakis
    BOOL shouldHidePopover = NO;
257 d17a05de Miltiadis Vasilakis
    
258 d17a05de Miltiadis Vasilakis
    if (indexPath.section == kObjectStorage) {
259 d17a05de Miltiadis Vasilakis
        if (indexPath.row == computeRow) {
260 d17a05de Miltiadis Vasilakis
            ServersViewController *vc = [[ServersViewController alloc] initWithNibName:@"ServersViewController" bundle:nil];
261 d17a05de Miltiadis Vasilakis
            vc.account = account;
262 d17a05de Miltiadis Vasilakis
            vc.accountHomeViewController = self;
263 d17a05de Miltiadis Vasilakis
            vc.comingFromAccountHome = YES;
264 700184fb Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:YES];
265 d17a05de Miltiadis Vasilakis
            [vc release];
266 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == storageRow) {
267 d17a05de Miltiadis Vasilakis
            ContainersViewController *vc = [[ContainersViewController alloc] initWithNibName:@"ContainersViewController" bundle:nil];
268 d17a05de Miltiadis Vasilakis
            account.shared = NO;
269 d17a05de Miltiadis Vasilakis
            vc.account = account;
270 d17a05de Miltiadis Vasilakis
            vc.accountHomeViewController = self;
271 700184fb Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:YES];
272 d17a05de Miltiadis Vasilakis
            [vc refreshButtonPressed:nil];
273 d17a05de Miltiadis Vasilakis
            [vc release];
274 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == loadBalancingRow) {
275 d17a05de Miltiadis Vasilakis
            LoadBalancersViewController *vc = [[LoadBalancersViewController alloc] initWithNibName:@"LoadBalancersViewController" bundle:nil];
276 d17a05de Miltiadis Vasilakis
            vc.account = account;
277 700184fb Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:YES];
278 d17a05de Miltiadis Vasilakis
            [vc release];
279 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == rssFeedsRow) {
280 d17a05de Miltiadis Vasilakis
            RSSFeedsViewController *vc = [[RSSFeedsViewController alloc] initWithNibName:@"RSSFeedsViewController" bundle:nil];
281 d17a05de Miltiadis Vasilakis
            vc.account = account;
282 d17a05de Miltiadis Vasilakis
            vc.comingFromAccountHome = YES;
283 d17a05de Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:YES];
284 d17a05de Miltiadis Vasilakis
            [vc release];
285 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == contactRow) {
286 d17a05de Miltiadis Vasilakis
            NSString *nibName = @"ContactInformationViewController";
287 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
288 d17a05de Miltiadis Vasilakis
                nibName = @"ContactInformationViewController-iPad";
289 d17a05de Miltiadis Vasilakis
            }
290 d17a05de Miltiadis Vasilakis
            ContactInformationViewController *vc = [[ContactInformationViewController alloc] initWithNibName:nibName bundle:nil];
291 d17a05de Miltiadis Vasilakis
            vc.provider = account.provider;
292 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
293 d17a05de Miltiadis Vasilakis
                [self.navigationController presentPrimaryViewController:vc];
294 d17a05de Miltiadis Vasilakis
                shouldHidePopover = YES;
295 d17a05de Miltiadis Vasilakis
            } else {
296 d17a05de Miltiadis Vasilakis
                [self.navigationController pushViewController:vc animated:YES];
297 d17a05de Miltiadis Vasilakis
            }
298 d17a05de Miltiadis Vasilakis
            [vc release];
299 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == limitsRow) {
300 d17a05de Miltiadis Vasilakis
            LimitsViewController *vc = [[LimitsViewController alloc] initWithNibName:@"LimitsViewController" bundle:nil];
301 d17a05de Miltiadis Vasilakis
            vc.account = account;
302 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
303 d17a05de Miltiadis Vasilakis
                [self.navigationController presentPrimaryViewController:vc];
304 d17a05de Miltiadis Vasilakis
                shouldHidePopover = YES;
305 d17a05de Miltiadis Vasilakis
            } else {
306 d17a05de Miltiadis Vasilakis
                [self.navigationController pushViewController:vc animated:YES];
307 d17a05de Miltiadis Vasilakis
            }
308 d17a05de Miltiadis Vasilakis
            [vc release];
309 700184fb Miltiadis Vasilakis
        }
310 d17a05de Miltiadis Vasilakis
    } else if (indexPath.section == kShared) {
311 d17a05de Miltiadis Vasilakis
        if (indexPath.row == mySharedRow) {
312 d17a05de Miltiadis Vasilakis
            ContainersViewController *vc = [[ContainersViewController alloc] initWithNibName:@"ContainersViewController" bundle:nil];
313 d17a05de Miltiadis Vasilakis
            account.shared = YES;
314 d17a05de Miltiadis Vasilakis
            vc.account = account;
315 d17a05de Miltiadis Vasilakis
            vc.accountHomeViewController = self;
316 ba01f5a7 Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:YES];
317 d17a05de Miltiadis Vasilakis
            [vc refreshButtonPressed:nil];
318 d17a05de Miltiadis Vasilakis
            [vc release];    
319 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == othersSharedRow){
320 d17a05de Miltiadis Vasilakis
            SharingAccountsViewController *vc = [[SharingAccountsViewController alloc] initWithNibName:@"SharingAccountsViewController" bundle:nil];
321 d17a05de Miltiadis Vasilakis
            vc.account = account;
322 d17a05de Miltiadis Vasilakis
            vc.accountHomeViewController = self;
323 d17a05de Miltiadis Vasilakis
            [self.navigationController pushViewController:vc animated:YES];
324 d17a05de Miltiadis Vasilakis
            [vc release];
325 d17a05de Miltiadis Vasilakis
        }
326 d17a05de Miltiadis Vasilakis
    } else if (indexPath.section == kSettings) {
327 d17a05de Miltiadis Vasilakis
        if (indexPath.row == accountSettingsRow) {
328 d17a05de Miltiadis Vasilakis
            AccountSettingsViewController *vc = [[AccountSettingsViewController alloc] initWithNibName:@"AccountSettingsViewController" bundle:nil];
329 d17a05de Miltiadis Vasilakis
            vc.account = account;
330 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
331 d17a05de Miltiadis Vasilakis
                [self.navigationController presentPrimaryViewController:vc];
332 d17a05de Miltiadis Vasilakis
                shouldHidePopover = YES;
333 d17a05de Miltiadis Vasilakis
            } else {
334 d17a05de Miltiadis Vasilakis
                [self.navigationController pushViewController:vc animated:YES];
335 d17a05de Miltiadis Vasilakis
            }
336 d17a05de Miltiadis Vasilakis
            [vc release];
337 d17a05de Miltiadis Vasilakis
        } else if (indexPath.row == accountMetadataRow) {
338 d17a05de Miltiadis Vasilakis
            AccountGroupsViewController *vc = [[AccountGroupsViewController alloc] initWithNibName:@"AccountGroupsViewController" bundle:nil];
339 d17a05de Miltiadis Vasilakis
            vc.account = self.account;
340 d17a05de Miltiadis Vasilakis
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
341 d17a05de Miltiadis Vasilakis
                [self.navigationController presentPrimaryViewController:vc];
342 d17a05de Miltiadis Vasilakis
                shouldHidePopover = YES;
343 d17a05de Miltiadis Vasilakis
            } else {
344 d17a05de Miltiadis Vasilakis
                [self.navigationController pushViewController:vc animated:YES];
345 d17a05de Miltiadis Vasilakis
            }
346 d17a05de Miltiadis Vasilakis
            [vc release];
347 ba01f5a7 Miltiadis Vasilakis
        }
348 700184fb Miltiadis Vasilakis
    }
349 700184fb Miltiadis Vasilakis
    
350 700184fb Miltiadis Vasilakis
    if (shouldHidePopover) {
351 700184fb Miltiadis Vasilakis
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && app.rootViewController.popoverController != nil) {
352 700184fb Miltiadis Vasilakis
            [app.rootViewController.popoverController dismissPopoverAnimated:YES];
353 700184fb Miltiadis Vasilakis
        }
354 700184fb Miltiadis Vasilakis
    }
355 700184fb Miltiadis Vasilakis
}
356 700184fb Miltiadis Vasilakis
357 700184fb Miltiadis Vasilakis
#pragma mark -
358 700184fb Miltiadis Vasilakis
#pragma mark Button Handlers
359 700184fb Miltiadis Vasilakis
360 700184fb Miltiadis Vasilakis
- (void)refreshButtonPressed:(id)sender {
361 700184fb Miltiadis Vasilakis
    refreshCount = 0;
362 700184fb Miltiadis Vasilakis
    [self.account refreshCollections];    
363 700184fb Miltiadis Vasilakis
}
364 700184fb Miltiadis Vasilakis
365 700184fb Miltiadis Vasilakis
#pragma mark -
366 700184fb Miltiadis Vasilakis
#pragma mark Memory management
367 700184fb Miltiadis Vasilakis
368 700184fb Miltiadis Vasilakis
- (void)dealloc {
369 700184fb Miltiadis Vasilakis
    [account release];
370 700184fb Miltiadis Vasilakis
    [rootViewController release];
371 700184fb Miltiadis Vasilakis
    [observers release];
372 700184fb Miltiadis Vasilakis
    [tableView release];
373 700184fb Miltiadis Vasilakis
    [super dealloc];
374 700184fb Miltiadis Vasilakis
}
375 700184fb Miltiadis Vasilakis
376 700184fb Miltiadis Vasilakis
@end