#import "EditMetadataViewController.h"
#import "EditPermissionsViewController.h"
#import "StorageObject.h"
+#import "APICallback.h"
+#import "AccountManager.h"
+#import "UIViewController+Conveniences.h"
+#import "NSString+Conveniences.h"
#define kOverview 0
#define kMetadata 1
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
+ if (folder.metadata == nil) {
+ [self reloadMetadataSection];
+ }
}
- (void)viewWillDisappear:(BOOL)animated
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
- if (section == kOverview)
+ if (section == kOverview) {
return 2;
- else if (section == kPermissions) {
- if (account.sharingAccount)
+ } else if (section == kPermissions) {
+ if (account.sharingAccount) {
return [permissions count];
- else
+ } else {
return 1 + [permissions count];
+ }
+ } else if (section == kMetadata) {
+ if (folderIsReadOnly) {
+ return [folder.metadata count];
+ } else {
+ return 1 + [folder.metadata count];
+ }
}
- else if (section == kMetadata)
- if (folderIsReadOnly)
- return [object.metadata count];
- else
- return 1 + [object.metadata count];
- return 0;
+ return 0;
}
- (CGFloat)findLabelHeight:(NSString*)text font:(UIFont *)font {
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
- CGFloat result = tableView.rowHeight;
+ CGFloat result;
if (indexPath.section == kOverview) {
if (indexPath.row == 0) {
cell.accessoryView = nil;
if (indexPath.row == [permissions count]) {
- cell.textLabel.text = @"Add Permissions";
+ cell.textLabel.text = @"Share";
cell.detailTextLabel.text = @"";
}
else {
if (indexPath.row == [permissions count]) {
user = @"";
vc.removePermissionsEnabled = NO;
- vc.navigationItem.title = @"Add Permissions";
+ vc.navigationItem.title = @"Share";
}
else {
user = [[permissions allKeys] objectAtIndex:indexPath.row];
vc.writePermissionSelected = NO;
vc.removePermissionsEnabled = YES;
- vc.navigationItem.title = @"Edit Permissions";
+ vc.navigationItem.title = @"Edit Sharing";
}
vc.user = user;
}
}
+#pragma mark -
+#pragma mark Helper functions
+
+- (void)reloadMetadataSection {
+ NSString *activityMessage = @"Loading metadata...";
+ ActivityIndicatorView *activityIndicatorView = [[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:activityMessage] text:activityMessage];
+ [activityIndicatorView addToView:self.view];
+ [[self.account.manager getObjectInfo:container object:object version:nil]
+ success:^(OpenStackRequest *request) {
+ [activityIndicatorView removeFromSuperviewAndRelease];
+ folder.metadata = [NSMutableDictionary dictionary];
+ for (NSString *header in request.responseHeaders) {
+ NSString *metadataKey;
+ NSString *metadataValue;
+ if ([header rangeOfString:@"X-Object-Meta-"].location != NSNotFound) {
+ metadataKey = [NSString decodeFromPercentEscape:[header substringFromIndex:14]];
+ metadataValue = [NSString decodeFromPercentEscape:[request.responseHeaders objectForKey:header]];
+ [folder.metadata setObject:metadataValue forKey:metadataKey];
+ }
+ }
+ object.metadata = folder.metadata;
+ NSIndexSet *metadataSections = [NSIndexSet indexSetWithIndex:kMetadata];
+ [self.tableView reloadSections:metadataSections withRowAnimation:UITableViewRowAnimationFade];
+ }
+ failure:^(OpenStackRequest *request) {
+ [activityIndicatorView removeFromSuperviewAndRelease];
+ [self alert:@"There was a problem retrieving the object's metadata." request:request];
+ }];
+}
+
@end