Bug fixes.
authorMiltiadis Vasilakis <mvasilak@gmail.com>
Thu, 8 Dec 2011 11:57:33 +0000 (13:57 +0200)
committerMiltiadis Vasilakis <mvasilak@gmail.com>
Thu, 8 Dec 2011 11:57:33 +0000 (13:57 +0200)
Classes/EditMetadataViewController.m
Classes/EditPermissionsViewController.m
Classes/FolderViewController.h
Classes/FolderViewController.m
Classes/OpenStackAppDelegate.m
Classes/RootViewController.m

index 5e73100..2030656 100644 (file)
             [object.metadata setObject:newMetadataValue forKey:newMetadataKey];
             
             if (objectIsFolder && ![PithosUtilities isContentTypeDirectory:object.contentType]) {
-                if ([folderViewController.folder.objects objectForKey:object.name]) {
+                if (((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) &&
+                     [folderViewController.parentFolderViewController.folder.objects objectForKey:object.name]) || 
+                    ((UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) &&
+                     [folderViewController.folder.objects objectForKey:object.name])) {
                     NSString *alertMessage = [NSString stringWithFormat:@"In order to apply the changes in '%@', the object at the same path must be replaced. Continue?",object.name];
                     NSString *alertTitle = @"Apply changes";
                     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertTitle
                                     }
                                     else {
                                         self.folderViewController.needsRefreshing = YES;
+                                        self.folderViewController.refreshWhenAppeared = YES;
                                     }
                                     [[NSNotificationCenter defaultCenter] removeObserver:addFolderSuccessObserver];
                                 }];
index 833a5b1..cca08b7 100644 (file)
@@ -91,6 +91,7 @@
                                     }
                                     else {
                                         self.folderViewController.needsRefreshing = YES;
+                                        self.folderViewController.refreshWhenAppeared = YES;
                                     }
             
                                     [[NSNotificationCenter defaultCenter] removeObserver:addFolderSuccessObserver];
         object.sharing = [self buildPermissionsString];
         
         if (objectIsFolder && ![PithosUtilities isContentTypeDirectory:object.contentType]) {
-            if ([folderViewController.folder.objects objectForKey:object.name]) {
+            if (((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) &&
+                [folderViewController.parentFolderViewController.folder.objects objectForKey:object.name]) || 
+                ((UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) &&
+                 [folderViewController.folder.objects objectForKey:object.name])) {
                 NSString *alertMessage = [NSString stringWithFormat:@"In order to apply the changes in '%@', the object at the same path must be replaced. Continue?",object.name];
                 NSString *alertTitle = @"Apply changes";
                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertTitle
                                [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
                                if (objectIsFolder || (account.shared && ![oldPermissionsString isEqualToString:object.sharing])) {
                                    self.folderViewController.needsRefreshing = YES;
-                                   if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+                                   if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
                                        [self.folderViewController refreshButtonPressed:nil];
-                                   }
+                                   else
+                                       self.folderViewController.refreshWhenAppeared = YES;
                                }
                                
                                [[NSNotificationCenter defaultCenter] removeObserver:successObserver];
index fe6a984..0de4486 100755 (executable)
@@ -27,6 +27,7 @@
     BOOL contentsLoaded;
     BOOL needsRefreshing;
     BOOL folderHasBeenRemoved;
+    BOOL refreshWhenAppeared;
     UIActionSheet *deleteActionSheet;
     
     IBOutlet UITableView *tableView;
@@ -43,6 +44,7 @@
 @property (nonatomic, assign) BOOL contentsLoaded;
 @property (nonatomic, assign) BOOL needsRefreshing;
 @property (nonatomic, assign) BOOL folderHasBeenRemoved;
+@property (nonatomic, assign) BOOL refreshWhenAppeared;
 @property (nonatomic, retain) IBOutlet UITableView *tableView;
 
 - (void)reloadFolderViewControllers;
index baa0b19..becd226 100755 (executable)
@@ -29,7 +29,7 @@
 
 @implementation FolderViewController
 
-@synthesize account, container, folder, containersViewController, selectedContainerIndexPath, contentsLoaded, parentFolderViewController, selectedFolderIndexPath, tableView, needsRefreshing, folderHasBeenRemoved;
+@synthesize account, container, folder, containersViewController, selectedContainerIndexPath, contentsLoaded, parentFolderViewController, selectedFolderIndexPath, tableView, needsRefreshing, folderHasBeenRemoved, refreshWhenAppeared;
 
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
 
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
-    
     if (folder.name && ![@"" isEqualToString:folder.name]) {
         self.navigationItem.title = self.folder.name;
     } else {
         self.navigationItem.title = self.container.name;
     }
+
 }
 
 - (void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     if (!self.folder) {
-        if (folderHasBeenRemoved)
+        if (folderHasBeenRemoved) {
+            if (needsRefreshing) 
+                self.parentFolderViewController.needsRefreshing = YES;
             [self.navigationController popViewControllerAnimated:YES];
+        }
         else
             [self refreshButtonPressed:nil];
     } else {
-        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
-            [self setDetailViewController];
-        if (needsRefreshing) {
+        if (self.needsRefreshing) {
+            self.parentFolderViewController.needsRefreshing = YES;
+            if (refreshWhenAppeared) {
                 [self refreshButtonPressed:nil];
+                refreshWhenAppeared = NO;
+            }
+            if (account.shared && ([folder.folders count] + [folder.objects count] == 0)) {
+                [self.navigationController popViewControllerAnimated:YES];
+            }
         }
     }
 }
 
 - (void)viewWillDisappear:(BOOL)animated {
     [super viewWillDisappear:animated];
-    
+    if (![self.navigationController.viewControllers containsObject:self]) {
+        if (self.parentViewController && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
+            [parentFolderViewController setDetailViewController];
+    }
     if (!(folder.name && ![@"" isEqualToString:folder.name])) {
 //        [self.containersViewController.tableView deselectRowAtIndexPath:self.selectedContainerIndexPath animated:YES];
     }
 
 - (void)reloadFolderViewControllers
 {
-    [self.containersViewController refreshButtonPressed:nil];
-
     NSArray *viewControllers = [self.navigationController viewControllers];
+    
     int rootFolderControllerIndex = [viewControllers indexOfObject:self.containersViewController] + 1;
     FolderViewController *rootFolderViewController = [viewControllers objectAtIndex:rootFolderControllerIndex];
     rootFolderViewController.folder = self.container.rootFolder;
         Folder *parentFolder = folderViewController.parentFolderViewController.folder;
         
         folderViewController.folder = [parentFolder.folders objectForKey:folderViewController.folder.name];
-        if (folderViewController.folder) 
+        if (folderViewController.folder) {
             [folderViewController.tableView reloadData];
-        else 
+        }
+        else {
             folderViewController.folderHasBeenRemoved = YES;
+        }
     }
     if (!self.folder || (account.shared && [folder.folders count] + [folder.objects count] == 0)) {
-        if (needsRefreshing && self.parentFolderViewController)
+        if (needsRefreshing && self.parentFolderViewController) {
             self.parentFolderViewController.needsRefreshing = YES;
+        }
         [self.navigationController popViewControllerAnimated:YES];
     } else {
         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && account.shared)
             vc.parentFolderViewController = self;
             vc.containersViewController = self.containersViewController;
             [self.navigationController pushViewController:vc animated:YES];
-            [vc release];
             [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
             if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
                 Folder *folderForDetailView;
                 folderDetailViewController.account = account;
                 folderDetailViewController.container = container;
                 folderDetailViewController.folder = folderForDetailView;
-                folderDetailViewController.folderViewController = self;
+                folderDetailViewController.folderViewController = vc;
                 [self presentPrimaryViewController:folderDetailViewController];
                 [folderDetailViewController release];
             }
+            [vc release];
         } else if ([[item class] isEqual:[StorageObject class]]) {
             StorageObjectViewController *vc = [[StorageObjectViewController alloc] initWithNibName:@"StorageObjectViewController" bundle:nil];
             vc.account = self.account;
     successObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"getObjectsSucceeded" object:self.container
                                                                          queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) 
                        {   
+                           [activityIndicatorView removeFromSuperviewAndRelease];
                            contentsLoaded = YES;
+                           [self.containersViewController refreshButtonPressed:nil];
                            [self reloadFolderViewControllers];
                            needsRefreshing = NO;
-                           [activityIndicatorView removeFromSuperviewAndRelease];
                            [[NSNotificationCenter defaultCenter] removeObserver:successObserver];
                        }];
     
index dbb2b4b..8cb4d9c 100755 (executable)
         }
         
         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
-            [masterNavigationController.visibleViewController setValue:authToken forKey:@"apiKey"];
-            [masterNavigationController.visibleViewController setValue:authUser forKey:@"userName"];
+            if (authToken)
+                [masterNavigationController.visibleViewController setValue:authToken forKey:@"apiKey"];
+            if (authUser)
+                [masterNavigationController.visibleViewController setValue:authUser forKey:@"userName"];
             [((UITableViewController *)masterNavigationController.visibleViewController).tableView reloadData];        
         } else {
-            [navigationController.visibleViewController setValue:authToken forKey:@"apiKey"];
-            [navigationController.visibleViewController setValue:authUser forKey:@"userName"];
+            if (authToken)
+                [navigationController.visibleViewController setValue:authToken forKey:@"apiKey"];
+            if (authUser)
+                [navigationController.visibleViewController setValue:authUser forKey:@"userName"];
             [((UITableViewController *)navigationController.visibleViewController).tableView reloadData];        
         }
     }
index 29ae5a5..af7fe50 100755 (executable)
@@ -18,6 +18,7 @@
 #import "PasscodeViewController.h"
 #import "OpenStackAppDelegate.h"
 #import "AccountHomeViewController.h"
+#import "PithosImageViewController.h"
 
 
 @implementation RootViewController
 
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
-    [self.tableView reloadData];    
+    [self.tableView reloadData];
+    
+    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+        PithosImageViewController *vc = [[PithosImageViewController alloc] initWithNibName:@"PithosImageViewController" bundle:nil];
+        [self.navigationController presentPrimaryViewController:vc];
+        [vc release];
+    }
 }
 
 - (void)viewDidAppear:(BOOL)animated {