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 90b853ce2aee4e36e9b026d16e6b77b5e5c93dbb..0202be35a164aa776ec32b7a689a5db0108646b1 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/CISDOBMasterViewController.m b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m index f60006503765e68eebc3be92d3d2a985da5cc11f..20b36ba17791f98ecfd372ea87ef3469161aa52b 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m @@ -29,6 +29,7 @@ @interface CISDOBMasterViewController () - (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath; +- (void)initializeDrillDownFrom:(CISDOBMasterViewController *)parent; @end @implementation CISDOBMasterViewController @@ -126,14 +127,13 @@ // Segue to the detail view unless we are on the ipad if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPad) return; - CISDOBIpadEntity *object = [self.openBisModel objectAtIndexPath: indexPath]; - if ([object.childrenPermIds count] > 0) { + CISDOBIpadEntity *object = [self.openBisModel selectObjectAtIndexPath: indexPath]; + if ([self.openBisModel isSelectionGroup]) { UIStoryboard *storyboard = self.storyboard; - CISDOBMasterViewController *controller = [storyboard instantiateViewControllerWithIdentifier: @"Master"]; - controller.openBisModel = self.openBisModel; - controller.title = object.summaryHeader; + CISDOBMasterViewController *child = [storyboard instantiateViewControllerWithIdentifier: @"Master"]; + [child initializeDrillDownFrom: self]; - [self.navigationController pushViewController: controller animated: YES]; + [self.navigationController pushViewController: child animated: YES]; } else { self.detailViewController.detailItem = object; } @@ -161,6 +161,12 @@ } } +- (void)initializeDrillDownFrom:(CISDOBMasterViewController *)parent +{ + self.openBisModel = parent.openBisModel; + self.title = self.openBisModel.selectedObject.summaryHeader; +} + #pragma mark - Fetched results controller - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h index f5175614ecedcaa440212b20ebac2a6c634d3b9c..865c2ee0364eb7be8f81a647bdc3b69fff04c494 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h @@ -28,20 +28,25 @@ * \brief A model for the interaction with openBIS. */ @interface CISDOBOpenBisModel : NSObject <NSFetchedResultsControllerDelegate> { - + CISDOBIpadEntity *_selectedObject; } @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; @property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate; +@property (readonly) CISDOBIpadEntity *selectedObject; // Model - - (NSInteger)numberOfSections; //!< Get the number of categories for the current selection - (NSInteger)numberOfEntitiesInSection:(NSInteger)section; - (NSString *)titleForHeaderInSection:(NSInteger)section; - (CISDOBIpadEntity *)objectAtIndexPath:(NSIndexPath *)indexPath; +// Selection +//! Select the object and return it +- (CISDOBIpadEntity *)selectObjectAtIndexPath:(NSIndexPath *)indexPath; +- (BOOL)isSelectionGroup; //!< Return YES if the selected object is a group (has children) + // Actions - (BOOL)insertNewObjectOrError:(NSError **)error; //!< Return YES if operation succeeded - (BOOL)deleteObjectAtIndexPath:(NSIndexPath *)indexPath error:(NSError **)error; //!< Return YES if operation succeeded diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m index 3cb5409924c0a59a8db033f0396cd46c4b2bf500..33da2d3f605a68d3e2084504b7aafae8022f5fb9 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m @@ -51,6 +51,18 @@ return [self.fetchedResultsController objectAtIndexPath:indexPath]; } +#pragma mark - Selection +- (CISDOBIpadEntity *)selectObjectAtIndexPath:(NSIndexPath *)indexPath +{ + _selectedObject = [self objectAtIndexPath: indexPath]; + return _selectedObject; +} + +- (BOOL)isSelectionGroup +{ + return [_selectedObject.childrenPermIds count] > 0; +} + #pragma mark - Actions - (BOOL)insertNewObjectOrError:(NSError **)error {