UI changes.
authorMiltiadis Vasilakis <mvasilak@gmail.com>
Thu, 10 Nov 2011 01:11:25 +0000 (03:11 +0200)
committerMiltiadis Vasilakis <mvasilak@gmail.com>
Thu, 10 Nov 2011 01:11:25 +0000 (03:11 +0200)
Added login functionality.

36 files changed:
Classes/AccountDetailsViewController.h
Classes/AccountDetailsViewController.m
Classes/AccountHomeViewController.m
Classes/AccountHomeViewController.xib
Classes/AccountSettingsViewController.h
Classes/AccountSettingsViewController.m
Classes/AddContainerViewController.m
Classes/ContainersViewController.h
Classes/ContainersViewController.m
Classes/ContainersViewController.xib
Classes/EditAccountGroupsViewController.m
Classes/EditMetadataViewController.m
Classes/EditPermissionsViewController.m
Classes/EditPolicyViewController.m
Classes/FolderViewController.h
Classes/FolderViewController.m
Classes/FolderViewController.xib
Classes/OpenStackAppDelegate.h
Classes/OpenStackAppDelegate.m
Classes/Provider.h
Classes/Provider.m
Classes/ProvidersViewController.h
Classes/ProvidersViewController.m
Classes/RootViewController.h
Classes/RootViewController.m
Classes/StorageObjectViewController.xib
HomeFolderIcon.png [new file with mode: 0644]
MainWindow-Rackspace.xib
MainWindow.xib
Metadata.gif [deleted file]
OpenStack-Info.plist
OpenStack.xcodeproj/project.pbxproj
Resources-iPad/MainWindow-iPad.xib
openstack_providers.json
pithos-solo-small.png [new file with mode: 0644]
pithos-solo-smallest.png [new file with mode: 0644]

index 463ddb7..edf6424 100755 (executable)
     RootViewController *rootViewController;
     ProvidersViewController *providersViewController;
 
+    NSString *userName;
+    NSString *apiKey;
     BOOL customProvider;
     NSInteger authenticationSection;
     NSInteger providerSection;
+    NSInteger getTokenSection;
     
     BOOL tableShrunk;
     
@@ -33,6 +36,9 @@
 @property (nonatomic, retain) ProvidersViewController *providersViewController;
 @property (nonatomic, retain) ActivityIndicatorView *activityIndicatorView;
 
+@property (nonatomic, retain) NSString *userName;
+@property (nonatomic, retain) NSString *apiKey;
+
 - (void)saveButtonPressed:(id)sender;
 
 @end
index 0a5b07a..1fd96c4 100755 (executable)
@@ -17,6 +17,7 @@
 #import "NSString+Conveniences.h"
 #import "ActivityIndicatorView.h"
 #import "APILogger.h"
+#import "OpenStackAppDelegate.h"
 
 
 #define kUsername 0
@@ -28,6 +29,7 @@
 @implementation AccountDetailsViewController
 
 @synthesize provider, rootViewController, providersViewController, activityIndicatorView;
+@synthesize userName, apiKey;
 
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
@@ -58,7 +60,7 @@
         [self.navigationController dismissModalViewControllerAnimated:YES];
     } else {
         self.navigationItem.rightBarButtonItem.enabled = NO;
-        [self alert:@"Authentication Failure" message:@"Please check your User Name and API Key."];
+        [self alert:@"Authentication Failure" message:@"Please check your User Name and Token."];
     }
 }
 
@@ -66,7 +68,7 @@
     [self.activityIndicatorView removeFromSuperview];
     self.navigationItem.rightBarButtonItem.enabled = YES;
     if ([request responseStatusCode] == 401) {
-        [self alert:@"Authentication Failure" message:@"Please check your User Name and API Key."];
+        [self alert:@"Authentication Failure" message:@"Please check your User Name and Token."];
     } else {
         [self failOnBadConnection];
     }
                     } else {
                         valid = valid && apiKeyTextField.text && ![@"" isEqualToString:apiKeyTextField.text];
                         if (!valid) {
-                            [self alert:nil message:@"Please enter your API key."];
+                            [self alert:nil message:@"Please enter your token."];
                             [apiKeyTextField becomeFirstResponder];
                         } else {
                             account = [[OpenStackAccount alloc] init];
         } else {
             valid = valid && apiKeyTextField.text && ![@"" isEqualToString:apiKeyTextField.text];
             if (!valid) {
-                [self alert:nil message:@"Please enter your API key."];
+                [self alert:nil message:@"Please enter your token."];
                 [apiKeyTextField becomeFirstResponder];
             } else {
                 account = [[OpenStackAccount alloc] init];
     self.navigationItem.title = @"Authentication";
     providerSection = -1;
     authenticationSection = 0;
+    getTokenSection = 1;
     [self addSaveButton];
 }
 
         customProvider = YES;
         providerSection = 0;
         authenticationSection = 1;
+        getTokenSection = -1;
         [self.tableView reloadData];
     }
 }
 #pragma mark Table view data source
 
 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
-    return customProvider ? 2 : 1;
+    if (getTokenSection > 0)
+        return customProvider ? 3 : 2;
+    else
+        return customProvider ? 2 : 1;
 }
 
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
-    return 2;
+    if (section == getTokenSection)
+        return 1;
+    else 
+        return 2;
 }
 
 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
         ((UITextField *)*textField).delegate = self;
         ((UITextField *)*textField).secureTextEntry = secure;
         ((UITextField *)*textField).returnKeyType = returnKeyType;
+        if ([labelText isEqualToString:@"Username"])
+            (*textField).text = userName;
+        else if ([labelText isEqualToString:@"Token"])
+            (*textField).text = apiKey;
     }
     
     return cell;
     if (indexPath.section == authenticationSection) {
         
         if (indexPath.row == kUsername) {
-            
+            if (userName)
+                usernameTextField.text = userName;
             cell = [self textCell:@"Username" textField:&usernameTextField secure:NO returnKeyType:UIReturnKeyNext];
             if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
                 CGRect rect = usernameTextField.frame;
             }
             
         } else if (indexPath.row == kAPIKey) {
-            
-            cell = [self textCell:@"API Key" textField:&apiKeyTextField secure:YES returnKeyType:UIReturnKeyDone];
-            
+            if (apiKey)
+                apiKeyTextField.text = apiKey;
+                cell = [self textCell:@"Token" textField:&apiKeyTextField secure:YES returnKeyType:UIReturnKeyDone];
         }
         
     } else if (indexPath.section == providerSection) {
         if (indexPath.row == kProviderName) {
             
             cell = [self textCell:@"Name" textField:&providerNameTextField secure:NO returnKeyType:UIReturnKeyNext];
-            providerNameTextField.placeholder = @"Ex: Rackspace Cloud";
+            providerNameTextField.placeholder = @"Ex: Pithos";
             
         } else if (indexPath.row == kAuthEndpoint) {
             
 
         }
         
+    } else if (indexPath.section == getTokenSection) {
+        static NSString *CellIdentifier = @"Cell";
+        
+        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+        if (cell == nil) {
+            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
+        }
+        
+        cell.textLabel.text = @"Get Token";
     }
     
     return cell;
     
 }
 
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (indexPath.section == getTokenSection) {
+        NSProcessInfo *processInfo = [NSProcessInfo processInfo];
+        NSString *loginURL = [NSString stringWithFormat:@"%@?next=pithos://%@", 
+                              ((OpenStackAppDelegate *)[[UIApplication sharedApplication] delegate]).loginURLPrefix,
+                              [processInfo processName]]; 
+        
+        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:loginURL]];
+        [tableView deselectRowAtIndexPath:indexPath animated:NO];
+        if (tableShrunk) {
+            tableShrunk = NO;
+            CGRect rect = self.tableView.frame;
+            rect.size.height = 416.0;
+            self.tableView.frame = rect;
+        }
+    }
+}
+
 #pragma mark -
 #pragma mark Text Field Delegate
 
     [rootViewController release];
     [providersViewController release];
     [activityIndicatorView release];
+    [userName release];
+    [apiKey release];
     [super dealloc];
 }
 
index fabef21..dd05438 100755 (executable)
         cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
     } else if (indexPath.row == storageRow) {
         cell.textLabel.text = [self.account.provider isRackspace] ? @"Cloud Files" : @"Object Storage";
-        cell.imageView.image = [self.account.provider isRackspace] ? [UIImage imageNamed:@"cloud-files-icon.png"] : [UIImage imageNamed:@"openstack-icon.png"];
+        cell.imageView.image = [self.account.provider isRackspace] ? [UIImage imageNamed:@"cloud-files-icon.png"] : [UIImage imageNamed:@"pithos-solo-smallest.png"];
     } else if (indexPath.row == loadBalancingRow) {
         cell.textLabel.text = @"Load Balancers";
         cell.imageView.image = [UIImage imageNamed:@"load-balancers-icon.png"];
             cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
         }
     } else if (indexPath.row == accountSettingsRow) {
-        cell.textLabel.text = @"API Account Info";
+        cell.textLabel.text = @"Account Token";
         cell.imageView.image = [UIImage imageNamed:@"account-settings-icon.png"];
         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
             cell.accessoryType = UITableViewCellAccessoryNone;
         }
     } else if (indexPath.row == accountMetadataRow) {
         cell.textLabel.text = @"Account Metadata";
-        cell.imageView.image = [UIImage imageNamed:@"Metadata.gif"];
+        cell.imageView.image = [UIImage imageNamed:@"account-settings-icon.png"];
         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
             cell.accessoryType = UITableViewCellAccessoryNone;
         } else {
index 91e0966..89f63bf 100755 (executable)
@@ -2,13 +2,13 @@
 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
        <data>
                <int key="IBDocument.SystemTarget">1056</int>
-               <string key="IBDocument.SystemVersion">10J869</string>
-               <string key="IBDocument.InterfaceBuilderVersion">1305</string>
-               <string key="IBDocument.AppKitVersion">1038.35</string>
+               <string key="IBDocument.SystemVersion">10K549</string>
+               <string key="IBDocument.InterfaceBuilderVersion">1306</string>
+               <string key="IBDocument.AppKitVersion">1038.36</string>
                <string key="IBDocument.HIToolboxVersion">461.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                       <string key="NS.object.0">300</string>
+                       <string key="NS.object.0">301</string>
                </object>
                <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -49,7 +49,7 @@
                                                <int key="NSvFlags">266</int>
                                                <string key="NSFrame">{{0, 416}, {320, 44}}</string>
                                                <reference key="NSSuperview" ref="1064914977"/>
-                                               <reference key="NSWindow"/>
+                                               <reference key="NSNextKeyView"/>
                                                <bool key="IBUIOpaque">NO</bool>
                                                <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@@ -82,7 +82,7 @@
                                                <int key="NSvFlags">274</int>
                                                <string key="NSFrameSize">{320, 416}</string>
                                                <reference key="NSSuperview" ref="1064914977"/>
-                                               <reference key="NSWindow"/>
+                                               <reference key="NSNextKeyView" ref="302743223"/>
                                                <object class="NSColor" key="IBUIBackgroundColor">
                                                        <int key="NSColorSpace">3</int>
                                                        <bytes key="NSWhite">MQA</bytes>
                                </object>
                                <string key="NSFrameSize">{320, 460}</string>
                                <reference key="NSSuperview"/>
-                               <reference key="NSWindow"/>
+                               <reference key="NSNextKeyView" ref="638451124"/>
                                <object class="NSColor" key="IBUIBackgroundColor">
                                        <int key="NSColorSpace">3</int>
                                        <bytes key="NSWhite">MQA</bytes>
                                                        <reference ref="261181725"/>
                                                </object>
                                                <reference key="parent" ref="1064914977"/>
+                                               <string key="objectName">Toolbar</string>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">10</int>
                        <nil key="sourceID"/>
                        <int key="maxID">21</int>
                </object>
-               <object class="IBClassDescriber" key="IBDocument.Classes">
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptions">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">AccountHomeViewController</string>
-                                       <string key="superclassName">OpenStackViewController</string>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>refreshButton</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>UIBarButtonItem</string>
-                                                       <string>UITableView</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>refreshButton</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">refreshButton</string>
-                                                               <string key="candidateClassName">UIBarButtonItem</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">tableView</string>
-                                                               <string key="candidateClassName">UITableView</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/AccountHomeViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">OpenStackViewController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <string key="NS.key.0">toolbar</string>
-                                               <string key="NS.object.0">UIToolbar</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <string key="NS.key.0">toolbar</string>
-                                               <object class="IBToOneOutletInfo" key="NS.object.0">
-                                                       <string key="name">toolbar</string>
-                                                       <string key="candidateClassName">UIToolbar</string>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/OpenStackViewController.h</string>
-                                       </object>
-                               </object>
-                       </object>
-               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
                <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
                </object>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
                <int key="IBDocument.defaultPropertyAccessControl">3</int>
-               <string key="IBCocoaTouchPluginVersion">300</string>
+               <string key="IBCocoaTouchPluginVersion">301</string>
        </data>
 </archive>
index fb0e6d2..ec61b43 100755 (executable)
@@ -7,14 +7,29 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "ActivityIndicatorView.h"
 
 @class OpenStackAccount;
 
 @interface AccountSettingsViewController : UITableViewController <UITextFieldDelegate> {
     UITextField *usernameTextField;
     UITextField *apiKeyTextField;
+    
+    NSInteger userDetailsSection;
+    NSInteger getTokenSection;
+    
+    NSString *userName;
+    NSString *apiKey;
+    
+    ActivityIndicatorView *activityIndicatorView;
 }
 
 @property (nonatomic, retain) OpenStackAccount *account;
 
+@property (nonatomic, retain) NSString *userName;
+@property (nonatomic, retain) NSString *apiKey;
+@property (nonatomic, retain) ActivityIndicatorView *activityIndicatorView;
+
+- (void)saveButtonPressed:(id)sender;
+
 @end
index 6f3d3af..e7aeabc 100755 (executable)
 #import "Provider.h"
 #import "RSTextFieldCell.h"
 #import "UIColor+MoreColors.h"
+#import "OpenStackAppDelegate.h"
+#import "UIViewController+Conveniences.h"
+#import "OpenStackRequest.h"
 
 #define kUsername 0
 #define kAPIKey 1
 
 @implementation AccountSettingsViewController
 
-@synthesize account;
+@synthesize account, userName, apiKey, activityIndicatorView;
 
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
 }
 
+#pragma mark -
+#pragma mark HTTP Response Handlers
+
+- (void)authenticationSucceded:(OpenStackRequest *)request {
+    
+    [self.activityIndicatorView removeFromSuperview];
+    
+    if ([request isSuccess]) {        
+        account.authToken = [[request responseHeaders] objectForKey:@"X-Auth-Token"];
+        account.serversURL = [NSURL URLWithString:[[request responseHeaders] objectForKey:@"X-Server-Management-Url"]];
+        account.filesURL = [NSURL URLWithString:[[request responseHeaders] objectForKey:@"X-Storage-Url"]];
+        
+        NSString *cdnStr = [[request responseHeaders] objectForKey:@"X-Cdn-Management-Url"];
+        if (!cdnStr) {
+            cdnStr = [[request responseHeaders] objectForKey:@"X-CDN-Management-Url"];
+        }
+        if (cdnStr) {
+            account.cdnURL = [NSURL URLWithString:cdnStr];
+        }
+        [account persist];
+        [account refreshCollections];
+        [self.navigationController dismissModalViewControllerAnimated:YES];
+    } else {
+        self.navigationItem.rightBarButtonItem.enabled = NO;
+        [self alert:@"Authentication Failure" message:@"Please check your User Name and Token."];
+    }
+}
+
+- (void)authenticationFailed:(OpenStackRequest *)request {
+    [self.activityIndicatorView removeFromSuperview];
+    self.navigationItem.rightBarButtonItem.enabled = YES;
+    if ([request responseStatusCode] == 401) {
+        [self alert:@"Authentication Failure" message:@"Please check your User Name and Token."];
+    } else {
+        [self failOnBadConnection];
+    }
+}
+
+
+- (void)authenticate {
+    
+    BOOL valid = YES;
+    
+        valid = valid && usernameTextField.text && ![@"" isEqualToString:usernameTextField.text];
+        if (!valid) {
+            [self alert:nil message:@"Please enter your username."];
+            [usernameTextField becomeFirstResponder];
+        } else {
+            valid = valid && apiKeyTextField.text && ![@"" isEqualToString:apiKeyTextField.text];
+            if (!valid) {
+                [self alert:nil message:@"Please enter your token."];
+                [apiKeyTextField becomeFirstResponder];
+            } else {
+                account.username = usernameTextField.text;
+                account.apiKey = apiKeyTextField.text;                        
+                
+                self.activityIndicatorView = [[[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:@"Authenticating..."] text:@"Authenticating..."] autorelease];
+                [self.activityIndicatorView addToView:self.view];
+                
+                OpenStackRequest *request = [OpenStackRequest authenticationRequest:account];
+                request.delegate = self;
+                request.didFinishSelector = @selector(authenticationSucceded:);
+                request.didFailSelector = @selector(authenticationFailed:);
+                [request startAsynchronous];
+            }
+        }
+}
+
+
+
+#pragma mark -
+#pragma mark Button Handlers
+
+- (void)saveButtonPressed:(id)sender {
+    [self authenticate];
+}
+
+
 #pragma mark - View lifecycle
 
 - (void)viewDidLoad {
     [super viewDidLoad];
     self.navigationItem.title = @"API Account Info";
+    userDetailsSection = 0;
+    if ([self.account.provider isGRNet])
+        getTokenSection = 1;
+    else
+        getTokenSection = -1;
     
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
         UIView *backgroundContainer = [[UIView alloc] init];
         self.tableView.backgroundView = backgroundContainer;
         [backgroundContainer release];
     }    
+    
+    [self addSaveButton];
 }
 
 - (void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
-    [usernameTextField becomeFirstResponder];
+    //[usernameTextField becomeFirstResponder];
 }
 
 #pragma mark - Table view data source
 
 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
-    return 1;
+    if (getTokenSection > 0)
+        return 2;
+    else
+        return 1;
 }
 
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
-    return 2;
+    if (section == userDetailsSection)
+        return 2;
+    else
+        return 1;
 }
 
 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
-    return [NSString stringWithFormat:@"%@ Login", self.account.provider.name];
+    if (section == userDetailsSection)
+        return [NSString stringWithFormat:@"%@ Login", self.account.provider.name];
+    else 
+        return nil;
 }
 
 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
-    return [NSString stringWithFormat:@"API Version %@", self.account.apiVersion];
+    if (section == userDetailsSection)
+        return [NSString stringWithFormat:@"API Version %@", self.account.apiVersion];
+    else
+        return nil;
 }
 
 // Customize the appearance of table view cells.
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     
     static NSString *CellIdentifier = @"Cell";
+    RSTextFieldCell *cell = nil;
+    if (indexPath.section == userDetailsSection) {
+        cell = (RSTextFieldCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+        if (cell == nil) {
+            cell = [[[RSTextFieldCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
+            cell.selectionStyle = UITableViewCellSelectionStyleNone;
+        }
     
-    RSTextFieldCell *cell = (RSTextFieldCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
-    if (cell == nil) {
-        cell = [[[RSTextFieldCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
-        cell.selectionStyle = UITableViewCellSelectionStyleNone;
-    }
-    
-    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
-        cell.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.8];
-    }
+        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+            cell.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.8];
+        }
 
-    [cell.textLabel setBackgroundColor:[UIColor clearColor]];
-
-    if (indexPath.row == kUsername) {
-        cell.textLabel.text = @"Username";
-        usernameTextField = cell.textField;
-        usernameTextField.delegate = self;
-        usernameTextField.secureTextEntry = NO;
-        usernameTextField.returnKeyType = UIReturnKeyNext;
-        usernameTextField.text = self.account.username;
-        usernameTextField.placeholder = @"username";
-    } else if (indexPath.row == kAPIKey) {
-        cell.textLabel.text = @"API Key";
-        apiKeyTextField = cell.textField;
-        apiKeyTextField.secureTextEntry = YES;
-        apiKeyTextField.delegate = self;
-        apiKeyTextField.returnKeyType = UIReturnKeyDone;
-        apiKeyTextField.text = self.account.apiKey;
+        [cell.textLabel setBackgroundColor:[UIColor clearColor]];
+
+        if (indexPath.row == kUsername) {
+            cell.textLabel.text = @"Username";
+            usernameTextField = cell.textField;
+            usernameTextField.delegate = self;
+            usernameTextField.secureTextEntry = NO;
+            usernameTextField.returnKeyType = UIReturnKeyNext;
+            usernameTextField.text = self.account.username;
+            usernameTextField.placeholder = @"username";
+            if (userName)
+                usernameTextField.text = userName;
+        } else if (indexPath.row == kAPIKey) {
+            cell.textLabel.text = @"Token";
+            apiKeyTextField = cell.textField;
+            apiKeyTextField.secureTextEntry = YES;
+            apiKeyTextField.delegate = self;
+            apiKeyTextField.returnKeyType = UIReturnKeyDone;
+            apiKeyTextField.text = self.account.apiKey;
+            if (apiKey)
+                apiKeyTextField.text = apiKey;
+        }
+    } else {
+        cell = (RSTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+        if (cell == nil) {
+            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
+        }
+        
+        cell.textLabel.text = @"Get Token";
     }
     
     return cell;
 }
 
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (indexPath.section == getTokenSection) {
+        NSProcessInfo *processInfo = [NSProcessInfo processInfo];
+        NSString *loginURL = [NSString stringWithFormat:@"%@?next=pithos://%@", 
+                              ((OpenStackAppDelegate *)[[UIApplication sharedApplication] delegate]).loginURLPrefix,
+                              [processInfo processName]]; 
+        
+        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:loginURL]];
+        [tableView deselectRowAtIndexPath:indexPath animated:NO];
+    }
+}
+
 #pragma mark - Text Field Delegate
 
 - (BOOL)textFieldShouldReturn:(UITextField *)textField {    
 #pragma mark - Memory management
 
 - (void)dealloc {
+    [userName release];
+    [apiKey release];
+    [activityIndicatorView release];
     [account release];
     [super dealloc];
 }
index f9a7be2..aed3c85 100755 (executable)
@@ -75,6 +75,7 @@
         [self alert:nil message:@"Please enter a name."];
         [nameTextField becomeFirstResponder];
     } else {
+        [self.containersViewController hideToolbarInfoMessage];
         [self.containersViewController showToolbarActivityMessage:@"Creating container..."];
 
         Container *container = [[Container alloc] init];
index 7077603..bd699a8 100755 (executable)
     id getContainersFailedObserver;
     
     BOOL containersLoaded;
-    NSString *accountUsageInfo;   
+    NSString *accountUsageInfo;
 }
 
 @property (nonatomic, retain) IBOutlet UITableView *tableView;
 @property (nonatomic, retain) OpenStackAccount *account;
+@property (nonatomic, retain) NSString *accountUsageInfo;
 
 - (void)refreshButtonPressed:(id)sender;
 
index e5895f0..a031d1b 100755 (executable)
@@ -22,7 +22,7 @@
 
 @implementation ContainersViewController
 
-@synthesize tableView, account;
+@synthesize tableView, account, accountUsageInfo;
 
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
@@ -44,6 +44,7 @@
                                                                          queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
        {
            [self hideToolbarActivityMessage];
+           [self showToolbarInfoMessage:accountUsageInfo];
            [self.tableView reloadData];
        }];
     
@@ -51,6 +52,7 @@
                                                                          queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
        {
            [self hideToolbarActivityMessage];
+           [self showToolbarInfoMessage:accountUsageInfo];
            [self alert:@"There was a problem creating your container." request:[notification.userInfo objectForKey:@"request"]];
        }];
     
         self.account.containerCount = [self.account.containers count];
         self.account.totalBytesUsed = [[request.responseHeaders objectForKey:@"X-Account-Bytes-Used"] longLongValue];
         self.account.quota = [[request.responseHeaders objectForKey:@"X-Account-Policy-Quota"] longLongValue];
-        accountUsageInfo = [NSString stringWithFormat:@"%@ used, %@ available",
-                            [self humanReadableSize:self.account.totalBytesUsed], [self humanReadableSize:self.account.quota]];
+        self.accountUsageInfo = [NSString stringWithFormat:@"%@ used, %@ available",
+                                                                [self humanReadableSize:self.account.totalBytesUsed], [self humanReadableSize:self.account.quota]];
                             
         [self.account persist];
         [self enableRefreshButton];
 #pragma mark Memory management
 
 - (void)dealloc {
+    [accountUsageInfo release];
     [tableView release];
     [account release];
     [super dealloc];
index 9f6fbc2..78d9fe3 100755 (executable)
@@ -53,6 +53,7 @@
                                                <bool key="IBUIOpaque">NO</bool>
                                                <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+                                               <int key="IBUIBarStyle">1</int>
                                                <object class="NSMutableArray" key="IBUIItems">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <object class="IBUIBarButtonItem" id="760150208">
                                                                <int key="IBUISystemItemIdentifier">6</int>
                                                        </object>
                                                </object>
-                                               <object class="NSColor" key="IBUITintColor">
-                                                       <int key="NSColorSpace">2</int>
-                                                       <bytes key="NSRGB">MC44MDc4NDMyMDgzIDAuMjAwMDAwMDE3OSAwLjE0OTAxOTYxMzkAA</bytes>
-                                               </object>
                                        </object>
                                        <object class="IBUITableView" id="338862288">
                                                <reference key="NSNextResponder" ref="463627279"/>
                                <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">25</int>
+                       <int key="maxID">30</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
index f299a83..55cf358 100644 (file)
         
         if (textField == nil) {
             CGRect bounds = [cell.contentView bounds];
-            CGRect rect = CGRectInset(bounds, 20.0, 10.0);                        
+            CGRect rect = CGRectInset(bounds, 10.0, 10.0);                        
             textField = [[UITextField alloc] initWithFrame:rect];
             [textField setFrame:rect];
         }
 
 #pragma mark - Textfield delegate
 
-//- (void)textFieldDidEndEditing:(UITextField *)textField {
-//    if ([textField tag] == 0) {
-//        if ([textField.text length] == 0
-//            || [[textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) {
-//            [self alert:@"Invalid input" message:@"Group name cannot be empty"];
-//        }
-//    }
-//}
-
 - (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
     
index cab6e2f..6b1c0a2 100644 (file)
         
         if (textField == nil) {
             CGRect bounds = [cell.contentView bounds];
-            CGRect rect = CGRectInset(bounds, 20.0, 10.0);                        
+            CGRect rect = CGRectInset(bounds, 10.0, 10.0);                        
             textField = [[UITextField alloc] initWithFrame:rect];
             [textField setFrame:rect];
         }
index 3cca80a..fc886c8 100644 (file)
         
         if (textField == nil) {
             CGRect bounds = [cell.contentView bounds];
-            CGRect rect = CGRectInset(bounds, 20.0, 10.0);                        
+            CGRect rect = CGRectInset(bounds, 10.0, 10.0);                        
             textField = [[UITextField alloc] initWithFrame:rect];
             [textField setFrame:rect];
         }
index 0821f5b..a08c063 100644 (file)
         
         if (textField == nil) {
             CGRect bounds = [cell.contentView bounds];
-            CGRect rect = CGRectInset(bounds, 20.0, 10.0);                        
+            CGRect rect = CGRectInset(bounds, 10.0, 10.0);                        
             textField = [[UITextField alloc] initWithFrame:rect];
             [textField setFrame:rect];
         }
index 6591460..5fe40fd 100755 (executable)
@@ -43,6 +43,8 @@
 @property (nonatomic, assign) BOOL contentsLoaded;
 @property (nonatomic, retain) IBOutlet UITableView *tableView;
 
+- (void)reloadFolders;
 - (IBAction)homeButtonPressed:(id)sender;
+- (IBAction)refreshButtonPressed:(id)sender;
 
 @end
index 1309f58..9d25201 100755 (executable)
     [super viewDidLoad];
     [self addAddButton];
     deleteActionSheet = [[UIActionSheet alloc] initWithTitle:@"Are you sure you want to delete this folder?  This operation cannot be undone." delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete Folder" otherButtonTitles:nil];
+    
+    UIImage *buttonImage = [UIImage imageNamed:@"HomeFolderIcon.png"];
+       
+    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
+    [button setImage:buttonImage forState:UIControlStateNormal];       
+    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);
+       [button addTarget:self action:@selector(homeButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
+    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];
+    NSMutableArray *toolbarItems = [NSMutableArray arrayWithArray:self.toolbar.items];
+    [toolbarItems addObject:customBarItem];
+    self.toolbar.items = toolbarItems;
 }
 
 - (void)viewWillAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     
     if (!self.folder) {
-        activityIndicatorView = [[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:@"Loading..."] text:@"Loading..."];
-        [activityIndicatorView addToView:self.view];
-        
-        [self.account.manager getObjects:self.container];
-        
+        [self refreshButtonPressed:nil];
     }
-
-    successObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getObjectsSucceeded" object:self.container
-                                                                         queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) 
-       {           
-           self.folder = self.container.rootFolder;
-           contentsLoaded = YES;
-           [self.tableView reloadData];                           
-           [[NSNotificationCenter defaultCenter] removeObserver:successObserver];
-           [activityIndicatorView removeFromSuperviewAndRelease];
-       }];
-
-    failureObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"renameServerSucceeded" object:self.container
-                                                                         queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) 
-       {
-           [self.tableView reloadData];                           
-           [[NSNotificationCenter defaultCenter] removeObserver:failureObserver];
-           [activityIndicatorView removeFromSuperviewAndRelease];
-       }];
-    
 }
 
 - (void)viewWillDisappear:(BOOL)animated {
 }
 
 - (IBAction)homeButtonPressed:(id)sender {
-    [self.navigationController popToRootViewControllerAnimated:YES];
+    [self.navigationController popToViewController:containersViewController animated:YES];
+}
+
+- (IBAction)refreshButtonPressed:(id)sender {
+    activityIndicatorView = [[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:@"Loading..."] text:@"Loading..."];
+    [activityIndicatorView addToView:self.view];
+        
+    [self.account.manager getObjects:self.container];
+    
+    
+    successObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getObjectsSucceeded" object:self.container
+                                                                         queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) 
+                       {   
+                           contentsLoaded = YES;
+                           [self reloadFolders];
+                           [[NSNotificationCenter defaultCenter] removeObserver:successObserver];
+                           [activityIndicatorView removeFromSuperviewAndRelease];
+                       }];
+    
+    failureObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"renameServerSucceeded" object:self.container
+                                                                         queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) 
+                       {
+                           [self.tableView reloadData];                           
+                           [[NSNotificationCenter defaultCenter] removeObserver:failureObserver];
+                           [activityIndicatorView removeFromSuperviewAndRelease];
+                       }];
+    
+    
+}
+
+- (void)reloadFolders
+{
+    NSArray *viewControllers = [self.navigationController viewControllers];
+    int rootFolderControllerIndex = [viewControllers indexOfObject:self.containersViewController] + 1;
+    FolderViewController *rootFolderViewController = [viewControllers objectAtIndex:rootFolderControllerIndex];
+    rootFolderViewController.folder = self.container.rootFolder;
+    [rootFolderViewController.tableView reloadData];
+    
+    for (int i = rootFolderControllerIndex + 1; i < [viewControllers count]; i++) {
+        FolderViewController *folderViewController = [viewControllers objectAtIndex:i];
+        Folder *parentFolder = folderViewController.parentFolderViewController.folder;
+        
+        folderViewController.folder = [parentFolder.folders objectForKey:folderViewController.folder.name];
+        if (!folderViewController.folder)
+            [self.navigationController popViewControllerAnimated:YES];
+        else
+            [folderViewController.tableView reloadData];
+    }
+    
+    [self.containersViewController refreshButtonPressed:nil];
 }
 
 #pragma mark -
 #pragma mark Table view data source
 
-- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView {
     return 1;
 }
 
 
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
     return MAX(contentsLoaded ? 1 : 0, [folder.objects count] + [folder.folders count]);
 }
 
             vc.contentsLoaded = YES;
             vc.selectedFolderIndexPath = indexPath;
             vc.parentFolderViewController = self;
+            vc.containersViewController = self.containersViewController;
             [self.navigationController pushViewController:vc animated:YES];
             [vc release];
             [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
index 1bb6c30..8676cbe 100755 (executable)
                                                <int key="NSvFlags">266</int>
                                                <string key="NSFrame">{{0, 416}, {320, 44}}</string>
                                                <reference key="NSSuperview" ref="228054471"/>
-                                               <reference key="NSNextKeyView"/>
                                                <bool key="IBUIOpaque">NO</bool>
                                                <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+                                               <int key="IBUIBarStyle">1</int>
                                                <object class="NSMutableArray" key="IBUIItems">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBUIBarButtonItem" id="1009870905">
-                                                               <string key="IBUITitle">Home</string>
+                                                       <object class="IBUIBarButtonItem" id="187093173">
                                                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-                                                               <int key="IBUIStyle">1</int>
                                                                <reference key="IBUIToolbar" ref="599029925"/>
+                                                               <int key="IBUISystemItemIdentifier">13</int>
+                                                       </object>
+                                                       <object class="IBUIBarButtonItem" id="133076782">
+                                                               <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+                                                               <reference key="IBUIToolbar" ref="599029925"/>
+                                                               <int key="IBUISystemItemIdentifier">5</int>
                                                        </object>
-                                               </object>
-                                               <object class="NSColor" key="IBUITintColor">
-                                                       <int key="NSColorSpace">2</int>
-                                                       <bytes key="NSRGB">MC44MDc4NDMyMDgzIDAuMjAwMDAwMDE3OSAwLjE0OTAxOTYxMzkAA</bytes>
                                                </object>
                                        </object>
                                        <object class="IBUITableView" id="173989330">
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBCocoaTouchOutletConnection" key="connection">
-                                               <string key="label">tableView</string>
-                                               <reference key="source" ref="372490531"/>
-                                               <reference key="destination" ref="173989330"/>
-                                       </object>
-                                       <int key="connectionID">12</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBCocoaTouchOutletConnection" key="connection">
                                                <string key="label">toolbar</string>
                                                <reference key="source" ref="372490531"/>
                                                <reference key="destination" ref="599029925"/>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBCocoaTouchEventConnection" key="connection">
-                                               <string key="label">homeButtonPressed:</string>
-                                               <reference key="source" ref="1009870905"/>
+                                               <string key="label">refreshButtonPressed:</string>
+                                               <reference key="source" ref="187093173"/>
                                                <reference key="destination" ref="372490531"/>
                                        </object>
-                                       <int key="connectionID">19</int>
+                                       <int key="connectionID">26</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBCocoaTouchOutletConnection" key="connection">
-                                               <string key="label">homeButton</string>
+                                               <string key="label">tableView</string>
                                                <reference key="source" ref="372490531"/>
-                                               <reference key="destination" ref="1009870905"/>
+                                               <reference key="destination" ref="173989330"/>
                                        </object>
-                                       <int key="connectionID">20</int>
+                                       <int key="connectionID">27</int>
                                </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                                <int key="objectID">10</int>
                                                <reference key="object" ref="173989330"/>
                                                <reference key="parent" ref="228054471"/>
+                                               <string key="objectName">Table View</string>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">13</int>
                                                <reference key="object" ref="599029925"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="1009870905"/>
+                                                       <reference ref="187093173"/>
+                                                       <reference ref="133076782"/>
                                                </object>
                                                <reference key="parent" ref="228054471"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">14</int>
-                                               <reference key="object" ref="1009870905"/>
+                                               <int key="objectID">22</int>
+                                               <reference key="object" ref="187093173"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                               </object>
+                                               <reference key="parent" ref="599029925"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">24</int>
+                                               <reference key="object" ref="133076782"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                               </object>
                                                <reference key="parent" ref="599029925"/>
                                        </object>
                                </object>
                                        <string>-2.CustomClassName</string>
                                        <string>10.IBPluginDependency</string>
                                        <string>13.IBPluginDependency</string>
-                                       <string>14.IBPluginDependency</string>
                                        <string>9.IBPluginDependency</string>
                                </object>
                                <object class="NSMutableArray" key="dict.values">
                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                                       <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="unlocalizedProperties">
                                <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">20</int>
+                       <int key="maxID">27</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
index bd5a637..3c3af94 100755 (executable)
@@ -18,6 +18,8 @@
     UIBarButtonItem *barButtonItem;
     RootViewController *rootViewController;
     id serviceUnavailableObserver;
+    
+    NSString *loginURLPrefix;
 }
 
 @property (nonatomic, retain) IBOutlet UIWindow *window;
@@ -27,6 +29,8 @@
 @property (nonatomic, retain) UIBarButtonItem *barButtonItem;
 @property (nonatomic, retain) RootViewController *rootViewController;
 
+@property (nonatomic, readonly) NSString *loginURLPrefix;
+
 - (void) setupDependencies;
 
 @end
index 89c6ab4..18f5e54 100755 (executable)
@@ -30,6 +30,7 @@
 #import "UIViewController+Conveniences.h"
 #import "HTNotifier.h"
 #import "Analytics.h"
+#import "ProvidersViewController.h"
 
 @implementation OpenStackAppDelegate
 
@@ -39,6 +40,7 @@
 @synthesize masterNavigationController;
 @synthesize barButtonItem;
 @synthesize rootViewController;
+@synthesize loginURLPrefix;
 
 - (void)loadSettingsDefaults {
     
         [[NSNotificationCenter defaultCenter] removeObserver:serviceUnavailableObserver];
     }];
     
+    loginURLPrefix = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"PithosLoginURLPrefix"];
+    if (!loginURLPrefix) {
+        loginURLPrefix = [NSString stringWithString:@"https://pithos.dev.grnet.gr/login"];
+    } 
+    
+    [loginURLPrefix retain];
+    
     return YES;
 }
 
     TrackViewController(viewController);
 }
 
+- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
+    if (!url)
+        return NO;
+
+    NSString *host = [url host];
+       NSString *query = [url query];
+
+    NSProcessInfo *processInfo = [NSProcessInfo processInfo];
+    if ([host hasPrefix:[NSString stringWithFormat:@"%@", [processInfo processName]]] && query) {
+        // user=
+        NSString *authUser;
+        NSRange userRange = [query rangeOfString:@"user=" options:NSCaseInsensitiveSearch];
+        if (userRange.length == 0)
+            // XXX maybe show an error message?
+            return NO;
+        NSUInteger authUserStartLocation = userRange.location + userRange.length;
+        NSRange userEndRange = [query rangeOfString:@"-" options:NSCaseInsensitiveSearch 
+                                              range:NSMakeRange(authUserStartLocation, [query length] - authUserStartLocation)];
+        if (userEndRange.length) {
+            authUser = [[query substringWithRange:NSMakeRange(authUserStartLocation, userEndRange.location - authUserStartLocation)]
+                        stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        } else {
+            authUser = [[query substringFromIndex:authUserStartLocation]
+                        stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        }
+        // token=
+        NSString *authToken;
+        NSRange tokenRange = [query rangeOfString:@"token=" options:NSCaseInsensitiveSearch];
+        if (tokenRange.length == 0)
+            // XXX maybe show an error message?
+            return NO;
+        NSUInteger authTokenStartLocation = tokenRange.location + tokenRange.length;
+        NSRange tokenEndRange = [query rangeOfString:@"&" options:NSCaseInsensitiveSearch 
+                                               range:NSMakeRange(authTokenStartLocation, [query length] - authTokenStartLocation)];
+        if (tokenEndRange.length) {
+            authToken = [[query substringWithRange:NSMakeRange(authTokenStartLocation, tokenEndRange.location - authTokenStartLocation)]
+                         stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        } else {
+            authToken = [[query substringFromIndex:authTokenStartLocation]
+                         stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        }
+        
+        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+            [masterNavigationController.visibleViewController setValue:authToken forKey:@"apiKey"];
+            [masterNavigationController.visibleViewController setValue:authUser forKey:@"userName"];
+            [((UITableViewController *)masterNavigationController.visibleViewController).tableView reloadData];        
+        } else {
+            [navigationController.visibleViewController setValue:authToken forKey:@"apiKey"];
+            [navigationController.visibleViewController setValue:authUser forKey:@"userName"];
+            [((UITableViewController *)navigationController.visibleViewController).tableView reloadData];        
+        }
+    }
+    // XXX else maybe show an error message?
+    
+    return YES;
+}
+
 
 #pragma mark -
 #pragma mark Memory management
index 19b3ae1..4a4837f 100755 (executable)
@@ -91,6 +91,7 @@
 - (BOOL)isRackspace;
 - (BOOL)isRackspaceUS;
 - (BOOL)isRackspaceUK;
+- (BOOL)isGRNet;
 
 @property (nonatomic, retain) NSString *name;
 @property (nonatomic, retain) NSURL *authEndpointURL;
index 3658a1a..4d21cad 100755 (executable)
@@ -106,6 +106,9 @@ static NSArray *providers = nil;
     return [self.authEndpointURL.host isEqualToString:@"lon.auth.api.rackspacecloud.com"];
 }
 
+- (BOOL)isGRNet {
+    return [self.authEndpointURL.host hasPrefix:@"pithos.dev.grnet.gr"];
+}
 
 #pragma mark -
 #pragma mark Memory Management
index 5ee96ea..dc8c1e2 100755 (executable)
@@ -7,6 +7,7 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "AccountDetailsViewController.h"
 
 @class Provider, RootViewController;
 
@@ -16,4 +17,6 @@
 
 @property (nonatomic, retain) RootViewController *rootViewController;
 
+- (void)restoreAccountDetailsViewController:(AccountDetailsViewController *)accountDetailsViewController;
+
 @end
index 19a7bcf..b6a7a1c 100755 (executable)
@@ -8,7 +8,6 @@
 
 #import "ProvidersViewController.h"
 #import "Provider.h"
-#import "AccountDetailsViewController.h"
 #import "RootViewController.h"
 #import "UIViewController+Conveniences.h"
 
 
 @synthesize rootViewController;
 
+- (void)restoreAccountDetailsViewController:(AccountDetailsViewController *)accountDetailsViewController {
+    [self.navigationController pushViewController:accountDetailsViewController animated:NO];
+}
+
 #pragma mark -
 #pragma mark View lifecycle
 
@@ -53,7 +56,7 @@
     if (section == 0) {
         return 0;
     } else {
-        return [[Provider providers] count] + 1;
+        return 2;
     }
 }
 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
     
     if (indexPath.row == [[Provider providers] count]) {
-        cell.textLabel.textAlignment = UITextAlignmentCenter;
         cell.textLabel.text = @"Other";
-        cell.detailTextLabel.text = @"Custom API Configuration";
-        cell.imageView.image = [UIImage imageNamed:@"openstack-icon.png"];
+        cell.imageView.image = [UIImage imageNamed:@"pithos-solo-smallest.png"];
     } else {
         Provider *provider = [[Provider providers] objectAtIndex:indexPath.row];
         cell.textLabel.text = provider.name;
-        cell.detailTextLabel.text = [provider.authEndpointURL host];
-        cell.imageView.image = [UIImage imageNamed:@"rackspacecloud_icon.png"];
+        cell.detailTextLabel.text = [provider.authEndpointURL absoluteString];
+        cell.imageView.image = [UIImage imageNamed:@"pithos-solo-smallest.png"];
     }
     
     return cell;
index 68ea978..ea785ca 100755 (executable)
@@ -7,19 +7,27 @@
 //
 
 #import "OpenStackViewController.h"
+#import "AccountDetailsViewController.h"
+#import "AccountSettingsViewController.h"
 
 @interface RootViewController : OpenStackViewController <UITableViewDelegate, UITableViewDataSource, UIPopoverControllerDelegate, UISplitViewControllerDelegate> {
     IBOutlet UITableView *tableView;
 
     UIPopoverController *popoverController;
     id detailItem;    
+    
+    BOOL restoreAccountView;
 }
 
 @property (nonatomic, retain) IBOutlet UITableView *tableView;
 
 @property (nonatomic, retain) id detailItem;
 @property (nonatomic, retain) UIPopoverController *popoverController;
+@property (nonatomic, assign) BOOL restoreAccountView;
 
+- (void)addButtonPressed:(id)sender;
 - (void)settingsButtonPressed:(id)sender;
+- (void)restoreProviderView:(AccountDetailsViewController *)accountDetailsViewController;
+- (void)restoreAccountView:(AccountSettingsViewController *)accountSettingsViewController;
 
 @end
index 8de0b96..39e8df5 100755 (executable)
@@ -8,7 +8,6 @@
 
 #import "RootViewController.h"
 #import "ProvidersViewController.h"
-#import "AccountHomeViewController.h"
 #import "OpenStackAccount.h"
 #import "Provider.h"
 #import "Archiver.h"
 #import "Keychain.h"
 #import "PasscodeViewController.h"
 #import "OpenStackAppDelegate.h"
+#import "AccountHomeViewController.h"
 
 
 @implementation RootViewController
 
 @synthesize tableView, popoverController, detailItem;
+@synthesize restoreAccountView;
 
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
 }
 
+- (void)restoreProviderView:(AccountDetailsViewController *)accountDetailsViewController {
+    OpenStackAppDelegate *app = [[UIApplication sharedApplication] delegate];
+    ProvidersViewController *vc = [[ProvidersViewController alloc] initWithNibName:@"ProvidersViewController" bundle:nil];
+    vc.rootViewController = self;
+    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+        vc.modalPresentationStyle = UIModalPresentationFormSheet;
+        if (app.rootViewController.popoverController != nil) {
+            [app.rootViewController.popoverController dismissPopoverAnimated:YES];
+        }
+    }   
+    [self presentModalViewControllerWithNavigation:vc animated:NO];
+    [vc restoreAccountDetailsViewController:accountDetailsViewController];
+    [vc release];    
+}
+
+- (void)restoreAccountView:(AccountSettingsViewController *)accountSettingsViewController {
+    AccountHomeViewController *vc = [[AccountHomeViewController alloc] initWithNibName:@"AccountHomeViewController" bundle:nil];
+    vc.account = accountSettingsViewController.account;
+    vc.account.hasBeenRefreshed = NO;
+    vc.rootViewController = self;
+    [self.navigationController pushViewController:vc animated:YES];
+    [vc release];
+}
+
 #pragma mark -
 #pragma mark Split view support
 
     if (account.provider.logoURLs && [account.provider.logoURLs objectForKey:@"provider_icon"]) {
         cell.imageView.image = [UIImage imageNamed:[account.provider.logoURLs objectForKey:@"provider_icon"]];
     } else {
-        cell.imageView.image = [UIImage imageNamed:@"openstack-icon.png"];
+        cell.imageView.image = [UIImage imageNamed:@"pithos-solo-smallest.png"];
     }
 
     return cell;
index 412e50d..c5126a2 100755 (executable)
                </object>
                <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <string>IBUIBarButtonItem</string>
-                       <string>IBUITableView</string>
-                       <string>IBUIToolbar</string>
-                       <string>IBUIView</string>
                        <string>IBProxyObject</string>
+                       <string>IBUIView</string>
+                       <string>IBUITableView</string>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                <int key="NSvFlags">292</int>
                                <object class="NSMutableArray" key="NSSubviews">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                       <object class="IBUIToolbar" id="1005676445">
-                                               <reference key="NSNextResponder" ref="177554816"/>
-                                               <int key="NSvFlags">266</int>
-                                               <string key="NSFrame">{{0, 416}, {320, 44}}</string>
-                                               <reference key="NSSuperview" ref="177554816"/>
-                                               <reference key="NSWindow"/>
-                                               <bool key="IBUIOpaque">NO</bool>
-                                               <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
-                                               <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-                                               <object class="NSMutableArray" key="IBUIItems">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBUIBarButtonItem" id="633811851">
-                                                               <string key="IBUITitle">Home</string>
-                                                               <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-                                                               <int key="IBUIStyle">1</int>
-                                                               <reference key="IBUIToolbar" ref="1005676445"/>
-                                                       </object>
-                                                       <object class="IBUIBarButtonItem" id="745680141">
-                                                               <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-                                                               <reference key="IBUIToolbar" ref="1005676445"/>
-                                                               <int key="IBUISystemItemIdentifier">5</int>
-                                                       </object>
-                                                       <object class="IBUIBarButtonItem" id="742760193">
-                                                               <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-                                                               <reference key="IBUIToolbar" ref="1005676445"/>
-                                                               <int key="IBUISystemItemIdentifier">5</int>
-                                                       </object>
-                                               </object>
-                                               <object class="NSColor" key="IBUITintColor">
-                                                       <int key="NSColorSpace">2</int>
-                                                       <bytes key="NSRGB">MC44MDc4NDMyMDgzIDAuMjAwMDAwMDE3OSAwLjE0OTAxOTYxMzkAA</bytes>
-                                               </object>
-                                       </object>
                                        <object class="IBUITableView" id="875748033">
                                                <reference key="NSNextResponder" ref="177554816"/>
                                                <int key="NSvFlags">274</int>
-                                               <string key="NSFrameSize">{320, 416}</string>
+                                               <string key="NSFrameSize">{320, 460}</string>
                                                <reference key="NSSuperview" ref="177554816"/>
-                                               <reference key="NSWindow"/>
                                                <object class="NSColor" key="IBUIBackgroundColor">
                                                        <int key="NSColorSpace">10</int>
                                                        <object class="NSImage" key="NSImage">
@@ -132,7 +96,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                </object>
                                <string key="NSFrameSize">{320, 460}</string>
                                <reference key="NSSuperview"/>
-                               <reference key="NSWindow"/>
                                <object class="NSColor" key="IBUIBackgroundColor">
                                        <int key="NSColorSpace">3</int>
                                        <bytes key="NSWhite">MQA</bytes>
@@ -156,14 +119,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBCocoaTouchOutletConnection" key="connection">
-                                               <string key="label">toolbar</string>
-                                               <reference key="source" ref="372490531"/>
-                                               <reference key="destination" ref="1005676445"/>
-                                       </object>
-                                       <int key="connectionID">14</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBCocoaTouchOutletConnection" key="connection">
                                                <string key="label">tableView</string>
                                                <reference key="source" ref="372490531"/>
                                                <reference key="destination" ref="875748033"/>
@@ -186,22 +141,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                        </object>
                                        <int key="connectionID">17</int>
                                </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBCocoaTouchEventConnection" key="connection">
-                                               <string key="label">homeButtonPressed:</string>
-                                               <reference key="source" ref="633811851"/>
-                                               <reference key="destination" ref="372490531"/>
-                                       </object>
-                                       <int key="connectionID">28</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBCocoaTouchOutletConnection" key="connection">
-                                               <string key="label">homeButton</string>
-                                               <reference key="source" ref="372490531"/>
-                                               <reference key="destination" ref="633811851"/>
-                                       </object>
-                                       <int key="connectionID">29</int>
-                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
@@ -229,7 +168,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference ref="875748033"/>
-                                                       <reference ref="1005676445"/>
                                                </object>
                                                <reference key="parent" ref="0"/>
                                        </object>
@@ -238,32 +176,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                                <reference key="object" ref="875748033"/>
                                                <reference key="parent" ref="177554816"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">10</int>
-                                               <reference key="object" ref="1005676445"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="742760193"/>
-                                                       <reference ref="745680141"/>
-                                                       <reference ref="633811851"/>
-                                               </object>
-                                               <reference key="parent" ref="177554816"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">11</int>
-                                               <reference key="object" ref="742760193"/>
-                                               <reference key="parent" ref="1005676445"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">12</int>
-                                               <reference key="object" ref="745680141"/>
-                                               <reference key="parent" ref="1005676445"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">27</int>
-                                               <reference key="object" ref="633811851"/>
-                                               <reference key="parent" ref="1005676445"/>
-                                       </object>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="flattenedProperties">
@@ -272,12 +184,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <string>-1.CustomClassName</string>
                                        <string>-2.CustomClassName</string>
-                                       <string>10.IBEditorWindowLastContentRect</string>
-                                       <string>10.IBPluginDependency</string>
-                                       <string>10.IBViewBoundsToFrameTransform</string>
-                                       <string>11.IBPluginDependency</string>
-                                       <string>12.IBPluginDependency</string>
-                                       <string>27.IBPluginDependency</string>
                                        <string>8.IBEditorWindowLastContentRect</string>
                                        <string>8.IBPluginDependency</string>
                                        <string>9.IBEditorWindowLastContentRect</string>
@@ -288,14 +194,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <string>StorageObjectViewController</string>
                                        <string>UIResponder</string>
-                                       <string>{{0, 1101}, {320, 44}}</string>
-                                       <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                                       <object class="NSAffineTransform">
-                                               <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw+UAAA</bytes>
-                                       </object>
-                                       <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                                       <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                                       <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                                        <string>{{823, 674}, {320, 460}}</string>
                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                                        <string>{{329, 504}, {320, 480}}</string>
@@ -319,81 +217,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                        <nil key="sourceID"/>
                        <int key="maxID">29</int>
                </object>
-               <object class="IBClassDescriber" key="IBDocument.Classes">
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptions">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">OpenStackViewController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <string key="NS.key.0">toolbar</string>
-                                               <string key="NS.object.0">UIToolbar</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <string key="NS.key.0">toolbar</string>
-                                               <object class="IBToOneOutletInfo" key="NS.object.0">
-                                                       <string key="name">toolbar</string>
-                                                       <string key="candidateClassName">UIToolbar</string>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/OpenStackViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">StorageObjectViewController</string>
-                                       <string key="superclassName">OpenStackViewController</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <string key="NS.key.0">homeButtonPressed:</string>
-                                               <string key="NS.object.0">id</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <string key="NS.key.0">homeButtonPressed:</string>
-                                               <object class="IBActionInfo" key="NS.object.0">
-                                                       <string key="name">homeButtonPressed:</string>
-                                                       <string key="candidateClassName">id</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>homeButton</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>UIBarButtonItem</string>
-                                                       <string>UITableView</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>homeButton</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">homeButton</string>
-                                                               <string key="candidateClassName">UIBarButtonItem</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">tableView</string>
-                                                               <string key="candidateClassName">UITableView</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/StorageObjectViewController.h</string>
-                                       </object>
-                               </object>
-                       </object>
-               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
                <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
diff --git a/HomeFolderIcon.png b/HomeFolderIcon.png
new file mode 100644 (file)
index 0000000..507bdf4
Binary files /dev/null and b/HomeFolderIcon.png differ
index caf813b..3812211 100755 (executable)
@@ -2,17 +2,23 @@
 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
        <data>
                <int key="IBDocument.SystemTarget">1024</int>
-               <string key="IBDocument.SystemVersion">10F569</string>
-               <string key="IBDocument.InterfaceBuilderVersion">804</string>
-               <string key="IBDocument.AppKitVersion">1038.29</string>
+               <string key="IBDocument.SystemVersion">10K549</string>
+               <string key="IBDocument.InterfaceBuilderVersion">1306</string>
+               <string key="IBDocument.AppKitVersion">1038.36</string>
                <string key="IBDocument.HIToolboxVersion">461.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                       <string key="NS.object.0">123</string>
+                       <string key="NS.object.0">301</string>
                </object>
-               <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+               <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <integer value="13"/>
+                       <string>IBProxyObject</string>
+                       <string>IBUINavigationController</string>
+                       <string>IBUIViewController</string>
+                       <string>IBUICustomObject</string>
+                       <string>IBUIWindow</string>
+                       <string>IBUINavigationBar</string>
+                       <string>IBUINavigationItem</string>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -23,9 +29,7 @@
                        <object class="NSArray" key="dict.sortedKeys" id="0">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                        </object>
-                       <object class="NSMutableArray" key="dict.values">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                       </object>
+                       <reference key="dict.values" ref="0"/>
                </object>
                <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        </object>
                        <object class="IBUIWindow" id="380026005">
-                               <nil key="NSNextResponder"/>
+                               <reference key="NSNextResponder"/>
                                <int key="NSvFlags">1316</int>
                                <object class="NSPSMatrix" key="NSFrameMatrix"/>
                                <string key="NSFrameSize">{320, 480}</string>
+                               <reference key="NSSuperview"/>
                                <object class="NSColor" key="IBUIBackgroundColor">
                                        <int key="NSColorSpace">10</int>
                                        <object class="NSImage" key="NSImage">
@@ -9897,6 +9902,7 @@ AAEAAQABA</bytes>
                        <object class="IBUINavigationController" id="701001926">
                                <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                       <int key="IBUIInterfaceOrientation">1</int>
                                        <int key="interfaceOrientation">1</int>
                                </object>
                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@@ -9915,13 +9921,13 @@ AAEAAQABA</bytes>
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <object class="IBUIViewController" id="619226028">
                                                <object class="IBUINavigationItem" key="IBUINavigationItem" id="394667715">
-                                                       <reference key="IBUINavigationBar"/>
                                                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                                                </object>
                                                <reference key="IBUIParentViewController" ref="701001926"/>
                                                <string key="IBUINibName">RootViewController</string>
                                                <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
                                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                                       <int key="IBUIInterfaceOrientation">1</int>
                                                        <int key="interfaceOrientation">1</int>
                                                </object>
                                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@@ -10052,9 +10058,7 @@ AAEAAQABA</bytes>
                                        <object class="NSMutableDictionary">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <reference key="dict.sortedKeys" ref="0"/>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                               </object>
+                                               <reference key="dict.values" ref="0"/>
                                        </object>
                                        <string>{{673, 376}, {320, 480}}</string>
                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@@ -10067,391 +10071,18 @@ AAEAAQABA</bytes>
                        <object class="NSMutableDictionary" key="unlocalizedProperties">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <reference key="dict.sortedKeys" ref="0"/>
-                               <object class="NSMutableArray" key="dict.values">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                               </object>
+                               <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="activeLocalization"/>
                        <object class="NSMutableDictionary" key="localizations">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <reference key="dict.sortedKeys" ref="0"/>
-                               <object class="NSMutableArray" key="dict.values">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                               </object>
+                               <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="sourceID"/>
                        <int key="maxID">21</int>
                </object>
-               <object class="IBClassDescriber" key="IBDocument.Classes">
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptions">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/NSObject+Conveniences.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/NSObject+SBJSON.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/SBJsonWriter.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">OpenStackAppDelegate</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>navigationController</string>
-                                                       <string>window</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>UINavigationController</string>
-                                                       <string>UIWindow</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>navigationController</string>
-                                                       <string>window</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">navigationController</string>
-                                                               <string key="candidateClassName">UINavigationController</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">window</string>
-                                                               <string key="candidateClassName">UIWindow</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/OpenStackAppDelegate.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">OpenStackViewController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <string key="NS.key.0">toolbar</string>
-                                               <string key="NS.object.0">UIToolbar</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <string key="NS.key.0">toolbar</string>
-                                               <object class="IBToOneOutletInfo" key="NS.object.0">
-                                                       <string key="name">toolbar</string>
-                                                       <string key="candidateClassName">UIToolbar</string>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/OpenStackViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">RootViewController</string>
-                                       <string key="superclassName">OpenStackViewController</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <string key="NS.key.0">settingsButtonPressed:</string>
-                                               <string key="NS.object.0">id</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <string key="NS.key.0">settingsButtonPressed:</string>
-                                               <object class="IBActionInfo" key="NS.object.0">
-                                                       <string key="name">settingsButtonPressed:</string>
-                                                       <string key="candidateClassName">id</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <string key="NS.key.0">tableView</string>
-                                               <string key="NS.object.0">UITableView</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <string key="NS.key.0">tableView</string>
-                                               <object class="IBToOneOutletInfo" key="NS.object.0">
-                                                       <string key="name">tableView</string>
-                                                       <string key="candidateClassName">UITableView</string>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/RootViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/UIViewController+Conveniences.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIWindow</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBUserSource</string>
-                                               <string key="minorKey"/>
-                                       </object>
-                               </object>
-                       </object>
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="48103097">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIApplication</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIBarButtonItem</string>
-                                       <string key="superclassName">UIBarItem</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIBarItem</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationBar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="193736137">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="720195805">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationItem</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <reference key="sourceIdentifier" ref="193736137"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIResponder</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <reference key="sourceIdentifier" ref="48103097"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIScrollView</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISearchBar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISearchDisplayController</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UITableView</string>
-                                       <string key="superclassName">UIScrollView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIToolbar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIToolbar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <reference key="sourceIdentifier" ref="720195805"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIWindow</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
-                                       </object>
-                               </object>
-                       </object>
-               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
                <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
@@ -10463,8 +10094,7 @@ AAEAAQABA</bytes>
                        <integer value="3100" key="NS.object.0"/>
                </object>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
-               <string key="IBDocument.LastKnownRelativeProjectPath">OpenStack.xcodeproj</string>
                <int key="IBDocument.defaultPropertyAccessControl">3</int>
-               <string key="IBCocoaTouchPluginVersion">123</string>
+               <string key="IBCocoaTouchPluginVersion">301</string>
        </data>
 </archive>
index a12aff2..76e93e5 100755 (executable)
@@ -2,17 +2,23 @@
 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
        <data>
                <int key="IBDocument.SystemTarget">1056</int>
-               <string key="IBDocument.SystemVersion">10J567</string>
-               <string key="IBDocument.InterfaceBuilderVersion">823</string>
-               <string key="IBDocument.AppKitVersion">1038.35</string>
-               <string key="IBDocument.HIToolboxVersion">462.00</string>
+               <string key="IBDocument.SystemVersion">10K549</string>
+               <string key="IBDocument.InterfaceBuilderVersion">1306</string>
+               <string key="IBDocument.AppKitVersion">1038.36</string>
+               <string key="IBDocument.HIToolboxVersion">461.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                       <string key="NS.object.0">132</string>
+                       <string key="NS.object.0">301</string>
                </object>
-               <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+               <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <integer value="9"/>
+                       <string>IBProxyObject</string>
+                       <string>IBUINavigationController</string>
+                       <string>IBUIViewController</string>
+                       <string>IBUICustomObject</string>
+                       <string>IBUIWindow</string>
+                       <string>IBUINavigationBar</string>
+                       <string>IBUINavigationItem</string>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -23,9 +29,7 @@
                        <object class="NSArray" key="dict.sortedKeys" id="0">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                        </object>
-                       <object class="NSMutableArray" key="dict.values">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                       </object>
+                       <reference key="dict.values" ref="0"/>
                </object>
                <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        </object>
                        <object class="IBUIWindow" id="380026005">
-                               <nil key="NSNextResponder"/>
+                               <reference key="NSNextResponder"/>
                                <int key="NSvFlags">1316</int>
                                <object class="NSPSMatrix" key="NSFrameMatrix"/>
                                <string key="NSFrameSize">{320, 480}</string>
+                               <reference key="NSSuperview"/>
+                               <reference key="NSWindow"/>
                                <object class="NSColor" key="IBUIBackgroundColor">
                                        <int key="NSColorSpace">10</int>
                                        <object class="NSImage" key="NSImage">
@@ -9895,6 +9901,7 @@ AAEAAQABA</bytes>
                        <object class="IBUINavigationController" id="701001926">
                                <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                       <int key="IBUIInterfaceOrientation">1</int>
                                        <int key="interfaceOrientation">1</int>
                                </object>
                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@@ -9908,10 +9915,6 @@ AAEAAQABA</bytes>
                                        <bool key="IBUIMultipleTouchEnabled">YES</bool>
                                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                                        <int key="IBUIBarStyle">1</int>
-                                       <object class="NSColor" key="IBUITintColor">
-                                               <int key="NSColorSpace">2</int>
-                                               <bytes key="NSRGB">MC44MDc4NDMyMDgzIDAuMjAwMDAwMDE3OSAwLjE0OTAxOTYxMzkAA</bytes>
-                                       </object>
                                </object>
                                <object class="NSMutableArray" key="IBUIViewControllers">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -9924,6 +9927,7 @@ AAEAAQABA</bytes>
                                                <string key="IBUINibName">RootViewController</string>
                                                <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
                                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                                       <int key="IBUIInterfaceOrientation">1</int>
                                                        <int key="interfaceOrientation">1</int>
                                                </object>
                                                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@@ -10054,9 +10058,7 @@ AAEAAQABA</bytes>
                                        <object class="NSMutableDictionary">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <reference key="dict.sortedKeys" ref="0"/>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                               </object>
+                                               <reference key="dict.values" ref="0"/>
                                        </object>
                                        <string>{{673, 376}, {320, 480}}</string>
                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@@ -10069,17 +10071,13 @@ AAEAAQABA</bytes>
                        <object class="NSMutableDictionary" key="unlocalizedProperties">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <reference key="dict.sortedKeys" ref="0"/>
-                               <object class="NSMutableArray" key="dict.values">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                               </object>
+                               <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="activeLocalization"/>
                        <object class="NSMutableDictionary" key="localizations">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <reference key="dict.sortedKeys" ref="0"/>
-                               <object class="NSMutableArray" key="dict.values">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                               </object>
+                               <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="sourceID"/>
                        <int key="maxID">21</int>
@@ -10088,27 +10086,6 @@ AAEAAQABA</bytes>
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/NSObject+Conveniences.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/NSObject+SBJSON.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/SBJsonWriter.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
                                        <string key="className">OpenStackAppDelegate</string>
                                        <string key="superclassName">NSObject</string>
                                        <object class="NSMutableDictionary" key="outlets">
@@ -10116,14 +10093,12 @@ AAEAAQABA</bytes>
                                                <object class="NSArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>navigationController</string>
-                                                       <string>serviceUnavailableObserver</string>
                                                        <string>splitViewController</string>
                                                        <string>window</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>UINavigationController</string>
-                                                       <string>id</string>
                                                        <string>UISplitViewController</string>
                                                        <string>UIWindow</string>
                                                </object>
@@ -10133,7 +10108,6 @@ AAEAAQABA</bytes>
                                                <object class="NSArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>navigationController</string>
-                                                       <string>serviceUnavailableObserver</string>
                                                        <string>splitViewController</string>
                                                        <string>window</string>
                                                </object>
@@ -10144,10 +10118,6 @@ AAEAAQABA</bytes>
                                                                <string key="candidateClassName">UINavigationController</string>
                                                        </object>
                                                        <object class="IBToOneOutletInfo">
-                                                               <string key="name">serviceUnavailableObserver</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
                                                                <string key="name">splitViewController</string>
                                                                <string key="candidateClassName">UISplitViewController</string>
                                                        </object>
@@ -10159,7 +10129,7 @@ AAEAAQABA</bytes>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/OpenStackAppDelegate.h</string>
+                                               <string key="minorKey">./Classes/OpenStackAppDelegate.h</string>
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
@@ -10178,346 +10148,26 @@ AAEAAQABA</bytes>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/OpenStackViewController.h</string>
+                                               <string key="minorKey">./Classes/OpenStackViewController.h</string>
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
                                        <string key="className">RootViewController</string>
                                        <string key="superclassName">OpenStackViewController</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <string key="NS.key.0">settingsButtonPressed:</string>
-                                               <string key="NS.object.0">id</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <string key="NS.key.0">settingsButtonPressed:</string>
-                                               <object class="IBActionInfo" key="NS.object.0">
-                                                       <string key="name">settingsButtonPressed:</string>
-                                                       <string key="candidateClassName">id</string>
-                                               </object>
-                                       </object>
                                        <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>detailItem</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>id</string>
-                                                       <string>UITableView</string>
-                                               </object>
+                                               <string key="NS.key.0">tableView</string>
+                                               <string key="NS.object.0">UITableView</string>
                                        </object>
                                        <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>detailItem</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">detailItem</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">tableView</string>
-                                                               <string key="candidateClassName">UITableView</string>
-                                                       </object>
+                                               <string key="NS.key.0">tableView</string>
+                                               <object class="IBToOneOutletInfo" key="NS.object.0">
+                                                       <string key="name">tableView</string>
+                                                       <string key="candidateClassName">UITableView</string>
                                                </object>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/RootViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/UIViewController+Conveniences.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIWindow</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBUserSource</string>
-                                               <string key="minorKey"/>
-                                       </object>
-                               </object>
-                       </object>
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="48103097">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIApplication</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIBarButtonItem</string>
-                                       <string key="superclassName">UIBarItem</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIBarItem</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationBar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="193736137">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="720195805">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationItem</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <reference key="sourceIdentifier" ref="193736137"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIResponder</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <reference key="sourceIdentifier" ref="48103097"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIScrollView</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISearchBar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISearchDisplayController</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISplitViewController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="842355836">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UITableView</string>
-                                       <string key="superclassName">UIScrollView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIToolbar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIToolbar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">MediaPlayer.framework/Headers/MPMoviePlayerViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <reference key="sourceIdentifier" ref="720195805"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <reference key="sourceIdentifier" ref="842355836"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIWindow</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+                                               <string key="minorKey">./Classes/RootViewController.h</string>
                                        </object>
                                </object>
                        </object>
@@ -10533,8 +10183,7 @@ AAEAAQABA</bytes>
                        <integer value="3100" key="NS.object.0"/>
                </object>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
-               <string key="IBDocument.LastKnownRelativeProjectPath">OpenStack.xcodeproj</string>
                <int key="IBDocument.defaultPropertyAccessControl">3</int>
-               <string key="IBCocoaTouchPluginVersion">132</string>
+               <string key="IBCocoaTouchPluginVersion">301</string>
        </data>
 </archive>
diff --git a/Metadata.gif b/Metadata.gif
deleted file mode 100644 (file)
index f9614cd..0000000
Binary files a/Metadata.gif and /dev/null differ
index fe686f7..8638128 100755 (executable)
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleURLTypes</key>
-       <array/>
+       <array>
+               <dict>
+                       <key>CFBundleURLName</key>
+                       <string>gr.grnet.pithos-ios</string>
+                       <key>CFBundleURLSchemes</key>
+                       <array>
+                               <string>pithos</string>
+                       </array>
+               </dict>
+       </array>
        <key>CFBundleVersion</key>
        <string>1.0</string>
        <key>LSRequiresIPhoneOS</key>
        <string>MainWindow</string>
        <key>NSMainNibFile~ipad</key>
        <string>MainWindow-iPad</string>
+       <key>PithosLoginURLPrefix</key>
+       <string>https://pithos.dev.grnet.gr/login</string>
        <key>UIApplicationExitsOnSuspend</key>
-       <true/>
+       <false/>
        <key>UIFileSharingEnabled</key>
        <true/>
        <key>UISupportedInterfaceOrientations~ipad</key>
index 5d54a6c..49b5802 100755 (executable)
@@ -9,6 +9,8 @@
 /* Begin PBXBuildFile section */
                1D3623260D0F684500981E51 /* OpenStackAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* OpenStackAppDelegate.m */; };
                1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+               243EB0A8145570700081D12A /* pithos-solo-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 243EB0A7145570700081D12A /* pithos-solo-small.png */; };
+               243EB0AA145570E70081D12A /* pithos-solo-smallest.png in Resources */ = {isa = PBXBuildFile; fileRef = 243EB0A9145570E70081D12A /* pithos-solo-smallest.png */; };
                2485477B1446D36800E48921 /* EditPermissionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 248547791446D36800E48921 /* EditPermissionsViewController.m */; };
                2485477C1446D36800E48921 /* EditPermissionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2485477A1446D36800E48921 /* EditPermissionsViewController.xib */; };
                2485478914473CBB00E48921 /* EditPolicyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2485478714473CBA00E48921 /* EditPolicyViewController.m */; };
@@ -24,8 +26,8 @@
                24AD830A144ED91E000BF73A /* pithos-logo-large.png in Resources */ = {isa = PBXBuildFile; fileRef = 24AD8309144ED91E000BF73A /* pithos-logo-large.png */; };
                24AD830E144EDD20000BF73A /* PithosImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 24AD830C144EDD20000BF73A /* PithosImageViewController.m */; };
                24AD830F144EDD20000BF73A /* PithosImageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 24AD830D144EDD20000BF73A /* PithosImageViewController.xib */; };
-               24AD832814502B0D000BF73A /* Metadata.gif in Resources */ = {isa = PBXBuildFile; fileRef = 24AD832714502B0D000BF73A /* Metadata.gif */; };
                24E040051442FB3C0065E8DB /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 24E040041442FB3C0065E8DB /* libz.dylib */; };
+               24ED1B5E1455A893005A4634 /* HomeFolderIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 24ED1B5D1455A893005A4634 /* HomeFolderIcon.png */; };
                2705F3EB12E7FA5900949131 /* RSTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2705F3E912E7FA5900949131 /* RSTextFieldCell.m */; };
                2705F3ED12E7FA5900949131 /* RSTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2705F3E912E7FA5900949131 /* RSTextFieldCell.m */; };
                270878F213282104006D4EE3 /* NSObject+NSCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 270878F013282104006D4EE3 /* NSObject+NSCoding.m */; };
                1D3623240D0F684500981E51 /* OpenStackAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenStackAppDelegate.h; sourceTree = "<group>"; };
                1D3623250D0F684500981E51 /* OpenStackAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenStackAppDelegate.m; sourceTree = "<group>"; };
                1D6058910D05DD3D006BFB54 /* OpenStack.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenStack.app; sourceTree = BUILT_PRODUCTS_DIR; };
+               243EB0A7145570700081D12A /* pithos-solo-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pithos-solo-small.png"; sourceTree = "<group>"; };
+               243EB0A9145570E70081D12A /* pithos-solo-smallest.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pithos-solo-smallest.png"; sourceTree = "<group>"; };
                248547781446D36700E48921 /* EditPermissionsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditPermissionsViewController.h; sourceTree = "<group>"; };
                248547791446D36800E48921 /* EditPermissionsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditPermissionsViewController.m; sourceTree = "<group>"; };
                2485477A1446D36800E48921 /* EditPermissionsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EditPermissionsViewController.xib; sourceTree = "<group>"; };
                24AD830B144EDD20000BF73A /* PithosImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PithosImageViewController.h; sourceTree = "<group>"; };
                24AD830C144EDD20000BF73A /* PithosImageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PithosImageViewController.m; sourceTree = "<group>"; };
                24AD830D144EDD20000BF73A /* PithosImageViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PithosImageViewController.xib; sourceTree = "<group>"; };
-               24AD832714502B0D000BF73A /* Metadata.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Metadata.gif; sourceTree = "<group>"; };
                24E040041442FB3C0065E8DB /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+               24ED1B5D1455A893005A4634 /* HomeFolderIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HomeFolderIcon.png; sourceTree = "<group>"; };
                2705F3E812E7FA5900949131 /* RSTextFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RSTextFieldCell.h; sourceTree = "<group>"; };
                2705F3E912E7FA5900949131 /* RSTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RSTextFieldCell.m; sourceTree = "<group>"; };
                270878EF13282104006D4EE3 /* NSObject+NSCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+NSCoding.h"; sourceTree = "<group>"; };
                        name = Products;
                        sourceTree = "<group>";
                };
+               243EB0A6145570550081D12A /* Pithos */ = {
+                       isa = PBXGroup;
+                       children = (
+                               243EB0A7145570700081D12A /* pithos-solo-small.png */,
+                               243EB0A9145570E70081D12A /* pithos-solo-smallest.png */,
+                       );
+                       name = Pithos;
+                       sourceTree = "<group>";
+               };
                24AD82FF144ED6C9000BF73A /* Pithos */ = {
                        isa = PBXGroup;
                        children = (
                                2768678C1368D39700B04AF3 /* rss-feeds-icon.png */,
                                2768678D1368D39700B04AF3 /* rss-feeds-icon@2x.png */,
                                24AD8309144ED91E000BF73A /* pithos-logo-large.png */,
-                               24AD832714502B0D000BF73A /* Metadata.gif */,
+                               24ED1B5D1455A893005A4634 /* HomeFolderIcon.png */,
                        );
                        name = "Account Home";
                        sourceTree = "<group>";
                2798A89F125E600400E02475 /* Logos */ = {
                        isa = PBXGroup;
                        children = (
+                               243EB0A6145570550081D12A /* Pithos */,
                                27828C7D125A9D1500004D33 /* OpenStack */,
                                2798A8A8125E606600E02475 /* Rackspace Cloud */,
                        );
                                248547BC144C614D00E48921 /* EditAccountGroupsViewController.xib in Resources */,
                                24AD830A144ED91E000BF73A /* pithos-logo-large.png in Resources */,
                                24AD830F144EDD20000BF73A /* PithosImageViewController.xib in Resources */,
-                               24AD832814502B0D000BF73A /* Metadata.gif in Resources */,
+                               243EB0A8145570700081D12A /* pithos-solo-small.png in Resources */,
+                               243EB0AA145570E70081D12A /* pithos-solo-smallest.png in Resources */,
+                               24ED1B5E1455A893005A4634 /* HomeFolderIcon.png in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index da092e4..579fd54 100755 (executable)
@@ -2,16 +2,25 @@
 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
        <data>
                <int key="IBDocument.SystemTarget">1056</int>
-               <string key="IBDocument.SystemVersion">10J567</string>
-               <string key="IBDocument.InterfaceBuilderVersion">823</string>
-               <string key="IBDocument.AppKitVersion">1038.35</string>
-               <string key="IBDocument.HIToolboxVersion">462.00</string>
+               <string key="IBDocument.SystemVersion">10K549</string>
+               <string key="IBDocument.InterfaceBuilderVersion">1306</string>
+               <string key="IBDocument.AppKitVersion">1038.36</string>
+               <string key="IBDocument.HIToolboxVersion">461.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-                       <string key="NS.object.0">132</string>
+                       <string key="NS.object.0">301</string>
                </object>
-               <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+               <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
+                       <string>IBProxyObject</string>
+                       <string>IBUINavigationController</string>
+                       <string>IBUIViewController</string>
+                       <string>IBUICustomObject</string>
+                       <string>IBUISplitViewController</string>
+                       <string>IBUIWindow</string>
+                       <string>IBUINavigationBar</string>
+                       <string>IBUINavigationItem</string>
+                       <string>IBUITableViewController</string>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -22,9 +31,7 @@
                        <object class="NSArray" key="dict.sortedKeys" id="0">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                        </object>
-                       <object class="NSMutableArray" key="dict.values">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                       </object>
+                       <reference key="dict.values" ref="0"/>
                </object>
                <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                <string key="targetRuntimeIdentifier">IBIPadFramework</string>
                        </object>
                        <object class="IBUIWindow" id="380026005">
-                               <nil key="NSNextResponder"/>
+                               <reference key="NSNextResponder"/>
                                <int key="NSvFlags">1316</int>
                                <object class="NSPSMatrix" key="NSFrameMatrix"/>
                                <string key="NSFrameSize">{768, 1024}</string>
+                               <reference key="NSSuperview"/>
+                               <reference key="NSWindow"/>
                                <object class="NSColor" key="IBUIBackgroundColor">
                                        <int key="NSColorSpace">10</int>
                                        <object class="NSImage" key="NSImage">
@@ -9896,6 +9905,7 @@ AAEAAQABA</bytes>
                        <object class="IBUINavigationController" id="701001926">
                                <reference key="IBUISimulatedStatusBarMetrics" ref="138706558"/>
                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                       <int key="IBUIInterfaceOrientation">1</int>
                                        <int key="interfaceOrientation">1</int>
                                </object>
                                <string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -9908,21 +9918,20 @@ AAEAAQABA</bytes>
                                        <bool key="IBUIClipsSubviews">YES</bool>
                                        <bool key="IBUIMultipleTouchEnabled">YES</bool>
                                        <string key="targetRuntimeIdentifier">IBIPadFramework</string>
-                                       <object class="NSColor" key="IBUITintColor">
-                                               <int key="NSColorSpace">2</int>
-                                               <bytes key="NSRGB">MC44MDc4NDMyMDgzIDAuMjAwMDAwMDE3OSAwLjE0OTAxOTYxMzkAA</bytes>
-                                       </object>
+                                       <int key="IBUIBarStyle">1</int>
                                </object>
                                <object class="NSMutableArray" key="IBUIViewControllers">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <object class="IBUIViewController" id="619226028">
                                                <object class="IBUINavigationItem" key="IBUINavigationItem" id="394667715">
+                                                       <reference key="IBUINavigationBar"/>
                                                        <string key="targetRuntimeIdentifier">IBIPadFramework</string>
                                                </object>
                                                <reference key="IBUIParentViewController" ref="701001926"/>
                                                <string key="IBUINibName">RootViewController</string>
                                                <reference key="IBUISimulatedStatusBarMetrics" ref="138706558"/>
                                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                                       <int key="IBUIInterfaceOrientation">1</int>
                                                        <int key="interfaceOrientation">1</int>
                                                </object>
                                                <string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -9936,6 +9945,7 @@ AAEAAQABA</bytes>
                                        <int key="IBUIStatusBarStyle">2</int>
                                </object>
                                <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                       <int key="IBUIInterfaceOrientation">3</int>
                                        <int key="interfaceOrientation">3</int>
                                </object>
                                <string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -9946,6 +9956,7 @@ AAEAAQABA</bytes>
                                                <int key="IBUIStatusBarStyle">2</int>
                                        </object>
                                        <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                               <int key="IBUIInterfaceOrientation">1</int>
                                                <int key="interfaceOrientation">1</int>
                                        </object>
                                        <string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -9971,6 +9982,7 @@ AAEAAQABA</bytes>
                                                                <int key="IBUIStatusBarStyle">2</int>
                                                        </object>
                                                        <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                                               <int key="IBUIInterfaceOrientation">1</int>
                                                                <int key="interfaceOrientation">1</int>
                                                        </object>
                                                        <string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -9984,6 +9996,7 @@ AAEAAQABA</bytes>
                                        <reference key="IBUIParentViewController" ref="834134633"/>
                                        <string key="IBUINibName">AboutViewController</string>
                                        <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+                                               <int key="IBUIInterfaceOrientation">1</int>
                                                <int key="interfaceOrientation">1</int>
                                        </object>
                                        <string key="targetRuntimeIdentifier">IBIPadFramework</string>
@@ -10197,9 +10210,7 @@ AAEAAQABA</bytes>
                                        <object class="NSMutableDictionary">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <reference key="dict.sortedKeys" ref="0"/>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                               </object>
+                                               <reference key="dict.values" ref="0"/>
                                        </object>
                                        <string>{{129, 132}, {768, 1024}}</string>
                                        <object class="NSMutableDictionary">
@@ -10229,17 +10240,13 @@ AAEAAQABA</bytes>
                        <object class="NSMutableDictionary" key="unlocalizedProperties">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <reference key="dict.sortedKeys" ref="0"/>
-                               <object class="NSMutableArray" key="dict.values">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                               </object>
+                               <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="activeLocalization"/>
                        <object class="NSMutableDictionary" key="localizations">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <reference key="dict.sortedKeys" ref="0"/>
-                               <object class="NSMutableArray" key="dict.values">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                               </object>
+                               <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="sourceID"/>
                        <int key="maxID">36</int>
@@ -10248,27 +10255,6 @@ AAEAAQABA</bytes>
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/NSObject+Conveniences.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/NSObject+SBJSON.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/SBJsonWriter.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
                                        <string key="className">OpenStackAppDelegate</string>
                                        <string key="superclassName">NSObject</string>
                                        <object class="NSMutableDictionary" key="outlets">
@@ -10276,14 +10262,12 @@ AAEAAQABA</bytes>
                                                <object class="NSArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>navigationController</string>
-                                                       <string>serviceUnavailableObserver</string>
                                                        <string>splitViewController</string>
                                                        <string>window</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>UINavigationController</string>
-                                                       <string>id</string>
                                                        <string>UISplitViewController</string>
                                                        <string>UIWindow</string>
                                                </object>
@@ -10293,7 +10277,6 @@ AAEAAQABA</bytes>
                                                <object class="NSArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>navigationController</string>
-                                                       <string>serviceUnavailableObserver</string>
                                                        <string>splitViewController</string>
                                                        <string>window</string>
                                                </object>
@@ -10304,10 +10287,6 @@ AAEAAQABA</bytes>
                                                                <string key="candidateClassName">UINavigationController</string>
                                                        </object>
                                                        <object class="IBToOneOutletInfo">
-                                                               <string key="name">serviceUnavailableObserver</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
                                                                <string key="name">splitViewController</string>
                                                                <string key="candidateClassName">UISplitViewController</string>
                                                        </object>
@@ -10319,7 +10298,7 @@ AAEAAQABA</bytes>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/OpenStackAppDelegate.h</string>
+                                               <string key="minorKey">./Classes/OpenStackAppDelegate.h</string>
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
@@ -10338,354 +10317,26 @@ AAEAAQABA</bytes>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/OpenStackViewController.h</string>
+                                               <string key="minorKey">./Classes/OpenStackViewController.h</string>
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
                                        <string key="className">RootViewController</string>
                                        <string key="superclassName">OpenStackViewController</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <string key="NS.key.0">settingsButtonPressed:</string>
-                                               <string key="NS.object.0">id</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <string key="NS.key.0">settingsButtonPressed:</string>
-                                               <object class="IBActionInfo" key="NS.object.0">
-                                                       <string key="name">settingsButtonPressed:</string>
-                                                       <string key="candidateClassName">id</string>
-                                               </object>
-                                       </object>
                                        <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>detailItem</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>id</string>
-                                                       <string>UITableView</string>
-                                               </object>
+                                               <string key="NS.key.0">tableView</string>
+                                               <string key="NS.object.0">UITableView</string>
                                        </object>
                                        <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>detailItem</string>
-                                                       <string>tableView</string>
-                                               </object>
-                                               <object class="NSMutableArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">detailItem</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">tableView</string>
-                                                               <string key="candidateClassName">UITableView</string>
-                                                       </object>
+                                               <string key="NS.key.0">tableView</string>
+                                               <object class="IBToOneOutletInfo" key="NS.object.0">
+                                                       <string key="name">tableView</string>
+                                                       <string key="candidateClassName">UITableView</string>
                                                </object>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/RootViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">Classes/UIViewController+Conveniences.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIWindow</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBUserSource</string>
-                                               <string key="minorKey"/>
-                                       </object>
-                               </object>
-                       </object>
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="48103097">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIApplication</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIBarButtonItem</string>
-                                       <string key="superclassName">UIBarItem</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIBarItem</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationBar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="193736137">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="720195805">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UINavigationItem</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <reference key="sourceIdentifier" ref="193736137"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIResponder</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <reference key="sourceIdentifier" ref="48103097"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIScrollView</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISearchBar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISearchDisplayController</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UISplitViewController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="746463391">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UITableView</string>
-                                       <string key="superclassName">UIScrollView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UITableViewController</string>
-                                       <string key="superclassName">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIToolbar</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIToolbar.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIView</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">MediaPlayer.framework/Headers/MPMoviePlayerViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <reference key="sourceIdentifier" ref="720195805"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <reference key="sourceIdentifier" ref="746463391"/>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIViewController</string>
-                                       <string key="superclassName">UIResponder</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">UIWindow</string>
-                                       <string key="superclassName">UIView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBFrameworkSource</string>
-                                               <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+                                               <string key="minorKey">./Classes/RootViewController.h</string>
                                        </object>
                                </object>
                        </object>
@@ -10701,8 +10352,7 @@ AAEAAQABA</bytes>
                        <integer value="3100" key="NS.object.0"/>
                </object>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
-               <string key="IBDocument.LastKnownRelativeProjectPath">../OpenStack.xcodeproj</string>
                <int key="IBDocument.defaultPropertyAccessControl">3</int>
-               <string key="IBCocoaTouchPluginVersion">132</string>
+               <string key="IBCocoaTouchPluginVersion">301</string>
        </data>
 </archive>
index b9c367a..f6d9571 100755 (executable)
@@ -1,64 +1,7 @@
 { "providers": [
     {
-        "name": "Rackspace Cloud (US)", 
-        "auth_endpoint_url": "https://auth.api.rackspacecloud.com/v1.0",
-        "auth_help_message": "Your API Key is available at manage.rackspacecloud.com",
-        "bar_style": "black",
-        "rss_feeds": [        
-            { "name": "Cloud Servers Status", "url": "feed://status.rackspacecloud.com/cloudservers/rss.xml", "logo": "cloud-servers-icon.png" },
-            { "name": "Cloud Files Status", "url": "feed://status.clouddrive.com/?feed=rss2", "logo": "cloud-files-icon.png" }
-        ],
-        "contact_urls": [
-            { "name": "US Phone Support", "url": "tel://8779340407" },
-            { "name": "UK Phone Support", "url": "tel://08000833012" },
-            { "name": "Rackspace on Twitter", "url": "http://twitter.com/rackspace" }
-        ],
-        "product_names": {
-            "compute": "Cloud Servers",
-            "compute_short_plural": "servers",
-            "compute_short_singular": "server",
-            "storage": "Cloud Files"
-        },
-        "logos": {
-            "provider_icon": "rackspacecloud_icon.png",
-            "provider_icon_2x": "rackspacecloud_icon@2x.png",
-            "provider_large": "url to 1000x1000 logo",
-            "compute_icon": "35x35 compute logo",
-            "compute_icon_2x": "70x70 compute logo",
-            "compute_logo": "1000x1000 compute logo",
-            "storage_icon": "35x35 storage logo",
-            "storage_icon_2x": "70x70 storage logo",
-            "storage_logo": "1000x1000 storage logo"
-        }
-    },
-    {
-        "name": "Rackspace Cloud (UK)", 
-        "auth_endpoint_url": "https://lon.auth.api.rackspacecloud.com/v1.0",
-        "auth_help_message": "Your API Key is available at lon.manage.rackspacecloud.com",
-        "bar_style": "black",
-        "rss_feeds": [
-            { "name": "Cloud Servers Status", "url": "feed://status.rackspacecloud.com/cloudservers/rss.xml", "logo": "cloud-servers-icon.png" },
-            { "name": "Cloud Files Status", "url": "feed://status.clouddrive.com/?feed=rss2", "logo": "cloud-files-icon.png" }
-        ],
-        "contact_urls": [
-            { "name": "UK Phone Support", "url": "tel://08000833012" },
-            { "name": "US Phone Support", "url": "tel://8779340407" },
-            { "name": "Rackspace on Twitter", "url": "http://twitter.com/rackspace" }
-        ],
-        "product_names": {
-            "compute": "Cloud Servers",
-            "storage": "Cloud Files"
-        },
-        "logos": {
-            "provider_icon": "rackspacecloud_icon.png",
-            "provider_icon_2x": "rackspacecloud_icon@2x.png",
-            "provider_large": "url to 1000x1000 logo",
-            "compute_icon": "35x35 compute logo",
-            "compute_icon_2x": "70x70 compute logo",
-            "compute_logo": "1000x1000 compute logo",
-            "storage_icon": "35x35 storage logo",
-            "storage_icon_2x": "70x70 storage logo",
-            "storage_logo": "1000x1000 storage logo"
-        }
+        "name": "GRNet", 
+        "auth_endpoint_url": "https://pithos.dev.grnet.gr/v1",
+        "bar_style": "black"
     }
 ] }
\ No newline at end of file
diff --git a/pithos-solo-small.png b/pithos-solo-small.png
new file mode 100644 (file)
index 0000000..2b76dd5
Binary files /dev/null and b/pithos-solo-small.png differ
diff --git a/pithos-solo-smallest.png b/pithos-solo-smallest.png
new file mode 100644 (file)
index 0000000..53fb99e
Binary files /dev/null and b/pithos-solo-smallest.png differ