}
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];
@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];
}];