Added login functionality.
RootViewController *rootViewController;
ProvidersViewController *providersViewController;
+ NSString *userName;
+ NSString *apiKey;
BOOL customProvider;
NSInteger authenticationSection;
NSInteger providerSection;
+ NSInteger getTokenSection;
BOOL tableShrunk;
@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
#import "NSString+Conveniences.h"
#import "ActivityIndicatorView.h"
#import "APILogger.h"
+#import "OpenStackAppDelegate.h"
#define kUsername 0
@implementation AccountDetailsViewController
@synthesize provider, rootViewController, providersViewController, activityIndicatorView;
+@synthesize userName, apiKey;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
[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."];
}
}
[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];
}
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 {
<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>
<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>
<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>
//
#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
#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];
}
[self alert:nil message:@"Please enter a name."];
[nameTextField becomeFirstResponder];
} else {
+ [self.containersViewController hideToolbarInfoMessage];
[self.containersViewController showToolbarActivityMessage:@"Creating container..."];
Container *container = [[Container alloc] init];
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;
@implementation ContainersViewController
-@synthesize tableView, account;
+@synthesize tableView, account, accountUsageInfo;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
{
[self hideToolbarActivityMessage];
+ [self showToolbarInfoMessage:accountUsageInfo];
[self.tableView reloadData];
}];
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];
<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>
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
{
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];
}
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];
}
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];
}
@property (nonatomic, assign) BOOL contentsLoaded;
@property (nonatomic, retain) IBOutlet UITableView *tableView;
+- (void)reloadFolders;
- (IBAction)homeButtonPressed:(id)sender;
+- (IBAction)refreshButtonPressed:(id)sender;
@end
[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];
<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>
UIBarButtonItem *barButtonItem;
RootViewController *rootViewController;
id serviceUnavailableObserver;
+
+ NSString *loginURLPrefix;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UIBarButtonItem *barButtonItem;
@property (nonatomic, retain) RootViewController *rootViewController;
+@property (nonatomic, readonly) NSString *loginURLPrefix;
+
- (void) setupDependencies;
@end
#import "UIViewController+Conveniences.h"
#import "HTNotifier.h"
#import "Analytics.h"
+#import "ProvidersViewController.h"
@implementation OpenStackAppDelegate
@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
- (BOOL)isRackspace;
- (BOOL)isRackspaceUS;
- (BOOL)isRackspaceUK;
+- (BOOL)isGRNet;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSURL *authEndpointURL;
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
//
#import <UIKit/UIKit.h>
+#import "AccountDetailsViewController.h"
@class Provider, RootViewController;
@property (nonatomic, retain) RootViewController *rootViewController;
+- (void)restoreAccountDetailsViewController:(AccountDetailsViewController *)accountDetailsViewController;
+
@end
#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
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;
//
#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
#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;
</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">
</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>
</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"/>
</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">
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="875748033"/>
- <reference ref="1005676445"/>
</object>
<reference key="parent" ref="0"/>
</object>
<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">
<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>
<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>
<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">
<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>
<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">
<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>
<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>
<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>
<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">
<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>
<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>
<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">
<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>
<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>
<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>
<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>
<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 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">
<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>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>navigationController</string>
- <string>serviceUnavailableObserver</string>
<string>splitViewController</string>
<string>window</string>
</object>
<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>
</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">
</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>
<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>
<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>
/* 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 */; };
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;
};
<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>
<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">
<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>
<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>
<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>
<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>
<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>
<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>
<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">
<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>
<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">
<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>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>navigationController</string>
- <string>serviceUnavailableObserver</string>
<string>splitViewController</string>
<string>window</string>
</object>
<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>
</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">
</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>
<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>
{ "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