diff --git a/src/Catty/ViewController/Continue&New/SceneTableViewController.m b/src/Catty/ViewController/Continue&New/SceneTableViewController.m index 157ca42b3a..923e7595af 100644 --- a/src/Catty/ViewController/Continue&New/SceneTableViewController.m +++ b/src/Catty/ViewController/Continue&New/SceneTableViewController.m @@ -101,41 +101,8 @@ - (void)addObjectAction:(id)sender { [self.tableView setEditing:false animated:YES]; - [[[[[[[AlertControllerBuilder textFieldAlertWithTitle:kLocalizedAddObject message:[NSString stringWithFormat:@"%@:", kLocalizedObjectName]] - placeholder:kLocalizedEnterYourObjectNameHere] - addCancelActionWithTitle:kLocalizedCancel handler:^{ - [self cancelAddingObjectFromScriptEditor]; - }] - addDefaultActionWithTitle:kLocalizedOK handler:^(NSString *name) { - [self addObjectActionWithName:name]; - }] - valueValidator:^InputValidationResult *(NSString *name) { - InputValidationResult *result = [Util validationResultWithName:name - minLength:kMinNumOfObjectNameCharacters - maxlength:kMaxNumOfObjectNameCharacters]; - if (!result.valid) { - return result; - } - // Alert for Objects with same name - if ([[self.scene allObjectNames] containsObject:name]) { - return [InputValidationResult invalidInputWithLocalizedMessage:kLocalizedObjectNameAlreadyExistsDescription]; - } - return [InputValidationResult validInput]; - }] build] - showWithController:self]; -} - --(void)cancelAddingObjectFromScriptEditor -{ - if (self.afterSafeBlock) { - self.afterSafeBlock(nil); - } -} - -- (void)addObjectActionWithName:(NSString*)objectName -{ [self showLoadingView]; - [self.scene addObjectWithName:[Util uniqueName:objectName existingNames:[self.scene allObjectNames]]]; + [self.scene addObjectWithName:[Util uniqueName:kLocalizedLook existingNames:[self.scene allObjectNames]]]; NSInteger numberOfRowsInLastSection = [self tableView:self.tableView numberOfRowsInSection:kObjectSectionIndex]; NSIndexPath *indexPath = [NSIndexPath indexPathForRow:(numberOfRowsInLastSection - 1) inSection:kObjectSectionIndex]; [self.tableView insertRowsAtIndexPaths:@[indexPath] @@ -147,12 +114,47 @@ - (void)addObjectActionWithName:(NSString*)objectName ltvc.showAddLookActionSheetAtStartForScriptEditor = NO; ltvc.afterSafeBlock = ^(Look* look) { [self.navigationController popViewControllerAnimated:YES]; + NSString *initialText = @""; + if (look) { + if (![look.name isEqual: @"look"]) { + initialText = look.name; + } + [[[[[[[[AlertControllerBuilder textFieldAlertWithTitle:kLocalizedAddObject message:[NSString stringWithFormat:@"%@:", kLocalizedObjectName]] + placeholder:kLocalizedEnterYourObjectNameHere] + initialText:initialText] + addCancelActionWithTitle:kLocalizedCancel handler:^{ + NSUInteger index = kBackgroundObjectIndex + indexPath.section + indexPath.row; + SpriteObject *object = (SpriteObject*)[self.scene.objects objectAtIndex:index]; + [self.scene removeObject:object]; + [self.scene.project saveToDiskWithNotification:NO]; + [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:((indexPath.row != 0) ? UITableViewRowAnimationTop : UITableViewRowAnimationFade)]; + [self cancelAddingObjectFromScriptEditor]; + }] + addDefaultActionWithTitle:kLocalizedOK handler:^(NSString *name) { + [self renameObjectActionToName:name spriteObject:(SpriteObject*)[self.scene.objects objectAtIndex:(kBackgroundObjectIndex + indexPath.section + indexPath.row)]]; + }] + valueValidator:^InputValidationResult *(NSString *name) { + InputValidationResult *result = [Util validationResultWithName:name + minLength:kMinNumOfObjectNameCharacters + maxlength:kMaxNumOfObjectNameCharacters]; + if (!result.valid) { + return result; + } + // Alert for Objects with same name + if ([[self.scene allObjectNames] containsObject:name]) { + return [InputValidationResult invalidInputWithLocalizedMessage:kLocalizedObjectNameAlreadyExistsDescription]; + } + return [InputValidationResult validInput]; + }] build] + showWithController:self]; + } if (!look) { - NSUInteger index = (kBackgroundObjects + indexPath.row); + NSUInteger index = kBackgroundObjectIndex + indexPath.row; SpriteObject *object = (SpriteObject*)[self.scene.objects objectAtIndex:index]; [self.scene removeObject:object]; [self.scene.project saveToDiskWithNotification:NO]; [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:((indexPath.row != 0) ? UITableViewRowAnimationTop : UITableViewRowAnimationFade)]; + [self cancelAddingObjectFromScriptEditor]; } if (self.afterSafeBlock && look ) { NSInteger numberOfRowsInLastSection = [self tableView:self.tableView numberOfRowsInSection:kObjectSectionIndex]; @@ -162,10 +164,16 @@ - (void)addObjectActionWithName:(NSString*)objectName self.afterSafeBlock(nil); } [self showPlaceHolder:!(BOOL)[self.scene numberOfNormalObjects]]; + [self hideLoadingView]; + [self showPlaceHolder:!(BOOL)[self.scene numberOfNormalObjects]]; }; - [self.navigationController pushViewController:ltvc animated:NO]; - [self showPlaceHolder:!(BOOL)[self.scene numberOfNormalObjects]]; - [self hideLoadingView]; + [self.navigationController pushViewController:ltvc animated:NO];} + +-(void)cancelAddingObjectFromScriptEditor +{ + if (self.afterSafeBlock) { + self.afterSafeBlock(nil); + } } - (void)renameProjectActionForProjectWithName:(NSString*)newProjectName diff --git a/src/CattyUITests/Extensions/XCTestCaseExtension.swift b/src/CattyUITests/Extensions/XCTestCaseExtension.swift index 6784944a27..1a121cb651 100644 --- a/src/CattyUITests/Extensions/XCTestCaseExtension.swift +++ b/src/CattyUITests/Extensions/XCTestCaseExtension.swift @@ -72,10 +72,6 @@ extension XCTestCase { func addObjectAndDrawNewImage(name: String, in app: XCUIApplication) { app.toolbars.buttons[kLocalizedUserListAdd].tap() - let alert = waitForElementToAppear(app.alerts[kLocalizedAddObject]) - alert.textFields[kLocalizedEnterYourObjectNameHere].typeText(name) - alert.buttons[kLocalizedOK].tap() - waitForElementToAppear(app.buttons[kLocalizedDrawNewImage]).tap() XCTAssertNotNil(waitForElementToAppear(app.navigationBars[kLocalizedPaintPocketPaint])) @@ -83,6 +79,10 @@ extension XCTestCase { app.navigationBars.buttons[kLocalizedBack].tap() waitForElementToAppear(app.sheets.firstMatch).buttons[kLocalizedSaveChanges].tap() + let alert = waitForElementToAppear(app.alerts[kLocalizedAddObject]) + alert.textFields[kLocalizedEnterYourObjectNameHere].tap() + alert.textFields[kLocalizedEnterYourObjectNameHere].typeText(name) + alert.buttons[kLocalizedOK].tap() XCTAssertNotNil(waitForElementToAppear(app.navigationBars.buttons[kLocalizedPocketCode])) } diff --git a/src/CattyUITests/ProjectTVCTests.swift b/src/CattyUITests/ProjectTVCTests.swift index 510d6618e8..8914a22df9 100644 --- a/src/CattyUITests/ProjectTVCTests.swift +++ b/src/CattyUITests/ProjectTVCTests.swift @@ -54,10 +54,20 @@ class ProjectTVCTests: XCTestCase { app.alerts[kLocalizedNewProject].buttons[kLocalizedOK].tap() XCTAssertNotNil(waitForElementToAppear(app.navigationBars[projectName])) - //Add new Object + //Add new Object app.toolbars.buttons[kLocalizedUserListAdd].tap() - app.alerts[kLocalizedAddObject].textFields[kLocalizedEnterYourObjectNameHere].typeText(objectName) - app.alerts[kLocalizedAddObject].buttons[kLocalizedOK].tap() + + waitForElementToAppear(app.buttons[kLocalizedDrawNewImage]).tap() + XCTAssertNotNil(waitForElementToAppear(app.navigationBars[kLocalizedPaintPocketPaint])) + + app.tap() + app.navigationBars.buttons[kLocalizedBack].tap() + + waitForElementToAppear(app.sheets.firstMatch).buttons[kLocalizedSaveChanges].tap() + let alert = waitForElementToAppear(app.alerts[kLocalizedAddObject]) + alert.textFields[kLocalizedEnterYourObjectNameHere].tap() + alert.textFields[kLocalizedEnterYourObjectNameHere].typeText(objectName) + alert.buttons[kLocalizedOK].tap() XCTAssert(waitForElementToAppear(app.alerts[kLocalizedPocketCode]).exists) }