Hide or show keyboard, accordingly, on rotation when folder filter is active
[pithos-ios] / Classes / FolderDetailViewController.m
index 7491083..394d75c 100644 (file)
 #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