diff --git a/arkXtest/uitest/src/main/ets/test/uitest.test.ets b/arkXtest/uitest/src/main/ets/test/uitest.test.ets index 6520fcc95ab41cb12afd39265aae1639c3cb418a..e0a3c39e8614c782be18c6f44363bc63e61076b0 100644 --- a/arkXtest/uitest/src/main/ets/test/uitest.test.ets +++ b/arkXtest/uitest/src/main/ets/test/uitest.test.ets @@ -658,6 +658,7 @@ export default function UiTest() { await driver.delayMs(waitUiReadyMs) let button = await driver.findComponent(BY.text('jump')) await button.click() + await driver.delayMs(waitUiReadyMs) let image1 = await driver.findComponent(BY.type('Image')) let bounds1 = await image1.getBounds() await image1.pinchIn(0.5); @@ -684,6 +685,7 @@ export default function UiTest() { await driver.delayMs(waitUiReadyMs) let button = await driver.findComponent(BY.text('jump')) await button.click() + await driver.delayMs(waitUiReadyMs) let image1 = await driver.findComponent(BY.type('Image')) let bounds1 = await image1.getBounds() let pointer = PointerMatrix.create(2,11) @@ -897,17 +899,19 @@ export default function UiTest() { /* * @tc.number: uiTest_4400 - * @tc.name: testWindowFocus + * @tc.name: testWindowAttr * @tc.desc: set the focused status of this UiWindow. */ - it('testWindowFocus', 0, async function () { + it('testWindowAttr', 0, async function () { await startAbility('com.uitestScene.acts', 'com.uitestScene.acts.MainAbility') let driver = UiDriver.create() await driver.delayMs(waitUiReadyMs) let window = await driver.findWindow({bundleName:'com.uitestScene.acts',focused:true,actived:true}) await window.focus() let isFocused = await window.isFocused() + let isActived = await window.isActived() expect(isFocused == true).assertTrue() + expect(isActived == true).assertTrue() await stopApplication('com.uitestScene.acts') }) @@ -1113,5 +1117,49 @@ export default function UiTest() { expect(idled = true).assertTrue() await stopApplication('com.uitestScene.acts') }) + + /* + * @tc.number: uiTest_5600 + * @tc.name: testDrag + * @tc.desc: drag on the screen between the specified points. + */ + it('testDrag', 0, async function () { + await startAbility('com.uitestScene.acts', 'com.uitestScene.acts.MainAbility') + let driver = UiDriver.create() + await driver.delayMs(waitUiReadyMs) + let button = await driver.findComponent(BY.text('jump')) + await button.longClick() + await driver.delayMs(waitUiReadyMs) + let text1 = await driver.findComponent(BY.text('orange')) + let text2 = await driver.findComponent(BY.text('one')) + let point1 = await text1.getBoundsCenter() + let point2 = await text2.getBoundsCenter() + await driver.drag(point1.X, point1.Y, point2.X, point2.Y) + await driver.delayMs(waitUiReadyMs) + let text = await driver.findComponent(BY.text('four')) + expect(text == null).assertTrue() + await stopApplication('com.uitestScene.acts') + }) + + /* + * @tc.number: uiTest_5700 + * @tc.name: testDragTos + * @tc.desc: drag this UiComponent to the bounds rect of target UiComponent. + */ + it('testDragTo', 0, async function () { + await startAbility('com.uitestScene.acts', 'com.uitestScene.acts.MainAbility') + let driver = UiDriver.create() + await driver.delayMs(waitUiReadyMs) + let button = await driver.findComponent(BY.text('jump')) + await button.longClick() + await driver.delayMs(waitUiReadyMs) + let text1 = await driver.findComponent(BY.text('orange')) + let text2 = await driver.findComponent(BY.text('one')) + await text1.dragTo(text2) + await driver.delayMs(waitUiReadyMs) + let text = await driver.findComponent(BY.text('four')) + expect(text == null).assertTrue() + await stopApplication('com.uitestScene.acts') + }) }) } \ No newline at end of file diff --git a/arkXtest/uitestScene/src/main/config.json b/arkXtest/uitestScene/src/main/config.json index eda00378bc047b58ca90d30e6d287620c9f4692c..9da2814a4d1250579e0bc6fe635df9995703baa8 100644 --- a/arkXtest/uitestScene/src/main/config.json +++ b/arkXtest/uitestScene/src/main/config.json @@ -63,7 +63,8 @@ "pages/second", "pages/third", "pages/fourth", - "pages/screen" + "pages/screen", + "pages/drag" ], "name": ".MainAbility", "window": { diff --git a/arkXtest/uitestScene/src/main/ets/MainAbility/pages/drag.ets b/arkXtest/uitestScene/src/main/ets/MainAbility/pages/drag.ets new file mode 100644 index 0000000000000000000000000000000000000000..4cc5dbbcec59dbab8f5039d30ea2631a14fb1ef7 --- /dev/null +++ b/arkXtest/uitestScene/src/main/ets/MainAbility/pages/drag.ets @@ -0,0 +1,118 @@ +/** + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct DragExample { + @State numbers: string[] = ['one', 'two', 'three', 'four', 'five', 'six'] + @State text: string = '' + @State bool: boolean = false + @State bool1: boolean = false + @State appleVisible: Visibility = Visibility.Visible + @State orangeVisible: Visibility = Visibility.Visible + @State bananaVisible: Visibility = Visibility.Visible + @State select: number = 0 + + @Builder pixelMapBuilder() { + Column() { + Text(this.text) + .width('50%').height(60).fontSize(16).borderRadius(10) + .textAlign(TextAlign.Center).backgroundColor(Color.Yellow) + } + } + + build() { + Column() { + Text('There are three Text elements here') + .fontSize(12).fontColor(0xCCCCCC).width('90%') + .textAlign(TextAlign.Start).margin(5) + Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceAround }) { + Text('apple').width('25%').height(35).fontSize(16) + .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE) + .visibility(this.appleVisible) + .onDragStart(() => { + this.bool = true + this.text = 'apple' + this.appleVisible = Visibility.Hidden + return this.pixelMapBuilder + }) + Text('orange').width('25%').height(35).fontSize(16) + .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE) + .visibility(this.orangeVisible) + .onDragStart(() => { + this.bool = true + this.text = 'orange' + this.orangeVisible = Visibility.Hidden + return this.pixelMapBuilder + }) + Text('banana').width('25%').height(35).fontSize(16) + .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE) + .visibility(this.bananaVisible) + .onDragStart((event: DragEvent, extraParams: string) => { + console.log('Text onDragStarts, ' + extraParams) + this.bool = true + this.text = 'banana' + this.bananaVisible = Visibility.Hidden + return this.pixelMapBuilder + }) + }.border({ width: 1 }).width('90%').padding({ top: 10, bottom: 10 }).margin(10) + + Text('This is a List element').fontSize(12) + .fontColor(0xCCCCCC).width('90%') + .textAlign(TextAlign.Start).margin(15) + List({ space: 20, initialIndex: 0 }) { + ForEach(this.numbers, (item) => { + ListItem() { + Text('' + item) + .width('100%').height(80).fontSize(16).borderRadius(10) + .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE) + } + .onDragStart((event: DragEvent, extraParams: string) => { + console.log('ListItem onDragStarts, ' + extraParams) + var jsonString = JSON.parse(extraParams) + this.bool1 = true + this.text = this.numbers[jsonString.selectedIndex] + this.select = jsonString.selectedIndex + return this.pixelMapBuilder + }) + }, item => item) + } + .editMode(true) + .height('50%').width('90%').border({ width: 1 }) + .divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) + .onDragEnter((event: DragEvent, extraParams: string) => { + console.log('List onDragEnter, ' + extraParams) + }) + .onDragMove((event: DragEvent, extraParams: string) => { + console.log('List onDragMove, ' + extraParams) + }) + .onDragLeave((event: DragEvent, extraParams: string) => { + console.log('List onDragLeave, ' + extraParams) + }) + .onDrop((event: DragEvent, extraParams: string) => { + var jsonString = JSON.parse(extraParams) + if (this.bool) { + this.numbers.splice(jsonString.insertIndex, 0, this.text) + this.bool = false + } else if (this.bool1) { + this.numbers.splice(jsonString.selectedIndex, 1) + this.numbers.splice(jsonString.insertIndex, 0, this.text) + this.bool = false + this.bool1 = false + } + }) + }.width('100%').height('100%').padding({ top: 20 }).margin({ top: 20 }) + } +} \ No newline at end of file diff --git a/arkXtest/uitestScene/src/main/ets/MainAbility/pages/index.ets b/arkXtest/uitestScene/src/main/ets/MainAbility/pages/index.ets index 30ad95ebd61572ae6eac5e65a404413c8ae20b1c..b8609d4003cf5d22f8cd8789793f1761c4f8d23a 100644 --- a/arkXtest/uitestScene/src/main/ets/MainAbility/pages/index.ets +++ b/arkXtest/uitestScene/src/main/ets/MainAbility/pages/index.ets @@ -69,6 +69,12 @@ struct ScrollExample { .onClick(() => { router.push({ uri: 'pages/screen' }) }) + .gesture( + LongPressGesture({ repeat: false }) + .onAction((event: GestureEvent) => { + router.push({ uri: 'pages/drag' }) + }) + ) Checkbox({ name: 'hi' }) .size({ width: 30, height: 30 }) TextInput({ placeholder: 'welcome', text: 'Hello World' })