_builder.append("#import \"QDateTimeInlineElement.h\"");
_builder.newLine();
_builder.append("#import \"QButtonElement.h\"");
_builder.newLine();
_builder.append("#import \"");
Entity _resourceType = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _entityDataAccessCategoryHeaderFileName = this._dataAccessClassExtensions.entityDataAccessCategoryHeaderFileName(_resourceType);
_builder.append(_entityDataAccessCategoryHeaderFileName, "");
_builder.append("\"");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("@interface ");
String _controllerClassName = this._defaultDetailsScreenClassExtensions.controllerClassName(it);
_builder.append(_controllerClassName, "");
_builder.append(" ()");
_builder.newLineIfNotEmpty();
_builder.append("@property(nonatomic) enum DetailsViewMode mode;");
_builder.newLine();
_builder.append("@property(nonatomic, copy) void (^doneBlock)(");
Entity _resourceType_1 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName = this._typeExtensions.typeName(_resourceType_1);
_builder.append(_typeName, "");
_builder.append(" *);");
_builder.newLineIfNotEmpty();
_builder.append("@end");
_builder.newLine();
_builder.newLine();
_builder.append("@implementation ");
String _controllerClassName_1 = this._defaultDetailsScreenClassExtensions.controllerClassName(it);
_builder.append(_controllerClassName_1, "");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("enum DetailsViewMode {");
_builder.newLine();
_builder.append("\t");
_builder.append("DetailsViewModeAdd,");
_builder.newLine();
_builder.append("\t");
_builder.append("DetailsViewModeEdit,");
_builder.newLine();
_builder.append("};");
_builder.newLine();
_builder.append("typedef enum DetailsViewMode DetailsViewMode;");
_builder.newLine();
_builder.newLine();
_builder.append("+ (void)presentForAddingNewItemFromParent:(UIViewController *)parent onDone:(void (^)(");
Entity _resourceType_2 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_1 = this._typeExtensions.typeName(_resourceType_2);
_builder.append(_typeName_1, "");
_builder.append(" *item))doneBlock");
_builder.newLineIfNotEmpty();
_builder.append("{");
_builder.newLine();
_builder.append("\t");
String _controllerClassName_2 = this._defaultDetailsScreenClassExtensions.controllerClassName(it);
_builder.append(_controllerClassName_2, " ");
_builder.append(" *detailsViewController = [[");
String _controllerClassName_3 = this._defaultDetailsScreenClassExtensions.controllerClassName(it);
_builder.append(_controllerClassName_3, " ");
_builder.append(" alloc] initWithMode:DetailsViewModeAdd];");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("detailsViewController.item = [[");
Entity _resourceType_3 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_2 = this._typeExtensions.typeName(_resourceType_3);
_builder.append(_typeName_2, " ");
_builder.append(" alloc] init];");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("detailsViewController.doneBlock = ^(");
Entity _resourceType_4 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_3 = this._typeExtensions.typeName(_resourceType_4);
_builder.append(_typeName_3, " ");
_builder.append(" *editedItem)");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("{");
_builder.newLine();
_builder.append("\t\t");
_builder.append("[parent dismissViewControllerAnimated:YES completion:nil];");
_builder.newLine();
_builder.append("\t\t");
_builder.append("if (doneBlock) {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("doneBlock(editedItem);");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("};");
_builder.newLine();
_builder.append("\t");
_builder.append("UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:detailsViewController];");
_builder.newLine();
_builder.append("\t");
_builder.append("[parent presentViewController:navigationController animated:YES completion:nil];");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("+ (void)presentForEditingItem:(");
Entity _resourceType_5 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_4 = this._typeExtensions.typeName(_resourceType_5);
_builder.append(_typeName_4, "");
_builder.append(" *)item fromParent:(UIViewController *)parent onDone:(void (^)(");
Entity _resourceType_6 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_5 = this._typeExtensions.typeName(_resourceType_6);
_builder.append(_typeName_5, "");
_builder.append(" *editedItem))doneBlock");
_builder.newLineIfNotEmpty();
_builder.append("{");
_builder.newLine();
_builder.append("\t");
String _controllerClassName_4 = this._defaultDetailsScreenClassExtensions.controllerClassName(it);
_builder.append(_controllerClassName_4, " ");
_builder.append(" *detailsViewController = [[");
String _controllerClassName_5 = this._defaultDetailsScreenClassExtensions.controllerClassName(it);
_builder.append(_controllerClassName_5, " ");
_builder.append(" alloc] initWithMode:DetailsViewModeEdit];");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("detailsViewController.item = item;");
_builder.newLine();
_builder.append("\t");
_builder.append("detailsViewController.doneBlock = ^(");
Entity _resourceType_7 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_6 = this._typeExtensions.typeName(_resourceType_7);
_builder.append(_typeName_6, " ");
_builder.append(" *editedItem)");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("{");
_builder.newLine();
_builder.append("\t\t");
_builder.append("[parent.navigationController popViewControllerAnimated:YES];");
_builder.newLine();
_builder.append("\t\t");
_builder.append("if (doneBlock) {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("doneBlock(editedItem);");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("};");
_builder.newLine();
_builder.append("\t");
_builder.append("[parent.navigationController pushViewController:detailsViewController animated:YES];");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("- (id)initWithMode:(DetailsViewMode)mode");
_builder.newLine();
_builder.append("{");
_builder.newLine();
_builder.append("\t");
_builder.append("self = [super initWithRoot:[self createForm]];");
_builder.newLine();
_builder.append("\t");
_builder.append("if (self) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("self.mode = mode;");
_builder.newLine();
_builder.append("\t\t");
_builder.append("[self createActionButtons];");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("return self;");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("- (void)createActionButtons");
_builder.newLine();
_builder.append("{");
_builder.newLine();
_builder.append("\t");
_builder.append("if (self.mode == DetailsViewModeAdd) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel");
_builder.newLine();
_builder.append("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ");
_builder.append("target:self");
_builder.newLine();
_builder.append("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ");
_builder.append("action:@selector(onCancel)];");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone");
_builder.newLine();
_builder.append("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ");
_builder.append("target:self");
_builder.newLine();
_builder.append("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ");
_builder.append("action:@selector(onDone)];");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("- (void)onDone");
_builder.newLine();
_builder.append("{");
_builder.newLine();
_builder.append("\t");
_builder.append("[self.root fetchValueUsingBindingsIntoObject:self.item];");
_builder.newLine();
_builder.append("\t");
_builder.append("if (self.mode == DetailsViewModeAdd) {");
_builder.newLine();
_builder.append("\t\t");
CharSequence _compileCreateNewItemFragment = this.compileCreateNewItemFragment(it);
_builder.append(_compileCreateNewItemFragment, " ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("else {");
_builder.newLine();
_builder.append("\t\t");
CharSequence _compileUpdateItemFragment = this.compileUpdateItemFragment(it);
_builder.append(_compileUpdateItemFragment, " ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("- (void)onCancel");
_builder.newLine();
_builder.append("{");
_builder.newLine();
_builder.append("\t");
_builder.append("[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("- (void)setItem:(");
Entity _resourceType_8 = this._defaultDetailsScreenClassExtensions.resourceType(it);
String _typeName_7 = this._typeExtensions.typeName(_resourceType_8);
_builder.append(_typeName_7, "");
_builder.append(" *)item");
_builder.newLineIfNotEmpty();
_builder.append("{");