diff --git a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate index 6357e97f0c763da8619029307aa7bafb2f520e62..998c90556fb07dc7c49edf82981a8546cbdf8422 100644 Binary files a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate and b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h index 0ff265b163aaa82c3d2379107d98dcb25ac460e7..245d5ddba823aec5e95eb8904c1af8b3d766518d 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h @@ -31,7 +31,7 @@ @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; -@property (readonly, strong, nonatomic) CISDOBOpenBisModel *openBisModel; +@property (readonly, strong, nonatomic) CISDOBOpenBisModel *rootOpenBisModel; - (void)saveContext; - (NSURL *)applicationDocumentsDirectory; diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m index 6bbbfa69db87c53f6f107e7ad2d7d749d63576a7..897e82afe5e07fe4322a93335d8bb4e588551156 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m @@ -31,7 +31,7 @@ @synthesize managedObjectContext = _managedObjectContext; @synthesize managedObjectModel = _managedObjectModel; @synthesize persistentStoreCoordinator = _persistentStoreCoordinator; -@synthesize openBisModel = _openBisModel; +@synthesize rootOpenBisModel = _rootOpenBisModel; - (CISDOBMasterViewController *)masterViewController { @@ -55,7 +55,7 @@ { // Initialize the controller CISDOBMasterViewController *controller = [self masterViewController]; - controller.openBisModel = self.openBisModel; + controller.openBisModel = self.rootOpenBisModel; return YES; } @@ -147,14 +147,14 @@ return _persistentStoreCoordinator; } -- (CISDOBOpenBisModel *)openBisModel +- (CISDOBOpenBisModel *)rootOpenBisModel { - if (_openBisModel != nil) return _openBisModel; + if (_rootOpenBisModel != nil) return _rootOpenBisModel; - _openBisModel = [[CISDOBOpenBisModel alloc] init]; - _openBisModel.managedObjectContext = self.managedObjectContext; + _rootOpenBisModel = [[CISDOBOpenBisModel alloc] init]; + _rootOpenBisModel.managedObjectContext = self.managedObjectContext; - return _openBisModel; + return _rootOpenBisModel; } #pragma mark - Application's Documents directory diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m index 5c20e1456486c22f854bf1e252ea85a5553fa65b..9cb05c326da9586974f128f8a233723a7b42c676 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m @@ -162,7 +162,7 @@ - (void)initializeDrillDownFrom:(CISDOBMasterViewController *)parent { - self.openBisModel = parent.openBisModel; + self.openBisModel = [[CISDOBOpenBisModel alloc] initWithParentModel: parent.openBisModel]; self.title = self.openBisModel.selectedObject.summaryHeader; } diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h index e1b5e6334f5de4c51ea20e630276701fc86d2565..30341231f423e39c333f846094e392eda3eea9cb 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h @@ -30,12 +30,17 @@ */ @interface CISDOBOpenBisModel : NSObject <NSFetchedResultsControllerDelegate> { CISDOBIpadEntity *_selectedObject; + CISDOBOpenBisModel *_parentModel; } @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; @property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate; -@property (readonly) CISDOBIpadEntity *selectedObject; + +@property (readonly) CISDOBOpenBisModel *parentModel; + +// Initialize +- (id)initWithParentModel:(CISDOBOpenBisModel *)parentModel; // Model - (NSInteger)numberOfSections; //!< Get the number of categories for the current selection @@ -44,6 +49,8 @@ - (CISDOBIpadEntity *)objectAtIndexPath:(NSIndexPath *)indexPath; // Selection +@property (readonly) CISDOBIpadEntity *selectedObject; + //! Select the object and return it - (CISDOBIpadEntity *)selectObjectAtIndexPath:(NSIndexPath *)indexPath; - (BOOL)isSelectionGroup; //!< Return YES if the selected object is a group (has children) diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m index 317edfe395633357f5489596384c0aaa06a7497c..3bf0b6283ff5371152b6400a3adb9f84ae374698 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m @@ -23,8 +23,28 @@ #import "CISDOBOpenBisModel.h" #import "CISDOBIpadEntity.h" +@interface CISDOBOpenBisModel (CISDOBOpenBisModelPrivate) +@property (weak, nonatomic) CISDOBOpenBisModel *parentModel; +@end + @implementation CISDOBOpenBisModel +#pragma mark - Initialize +- (id)initWithParentModel:(CISDOBOpenBisModel *)parentModel +{ + if (!(self = [super init])) return nil; + + _parentModel = parentModel; + _selectedObject = nil; + + if (_parentModel) { + self.fetchedResultsController = parentModel.fetchedResultsController; + self.managedObjectContext = parentModel.managedObjectContext; + } + + return self; +} + #pragma mark - Model - (NSInteger)numberOfSections {