From 1a330b2a90072da7795eaae8304dbbdf9e7fba52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E5=A4=A7=E4=BE=A0?= <794397348@qq.com> Date: Wed, 21 May 2025 16:56:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=B8=BF=E8=92=99=E4=B8=96=E7=95=8C?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 64 ++++++++++ .idea/.gitignore | 3 + verificationcodescenariolibrary/.gitignore | 6 + .../BuildProfile.ets | 17 +++ verificationcodescenariolibrary/Index.ets | 1 + .../build-profile.json5 | 31 +++++ .../consumer-rules.txt | 0 verificationcodescenariolibrary/hvigorfile.ts | 6 + .../obfuscation-rules.txt | 23 ++++ .../oh-package.json5 | 9 ++ .../src/main/ets/common/Constants.ets | 0 .../main/ets/common/GlobalBuilderContext.ets | 10 +- .../ets/common/utils/BreakpointSystem.ets | 118 ++++++++++++++++++ .../src/main/ets/common/utils/WindowUtil.ets | 76 +++++++++++ .../main/ets/pages/BackgroundColorChange.ets | 2 +- .../src/main/ets/pages/BottomWithBar.ets | 2 +- .../main/ets/pages/SelectVerificationCode.ets | 2 +- .../main/ets/pages/SliderVerificationCode.ets | 2 +- .../src/main/ets/pages/TextBoxShowCursor.ets | 2 +- .../pages/VerificationCodeScenarioPage.ets | 19 +++ .../main/ets/viewmodel/NavDestinationItem.ets | 0 .../src/main/module.json5 | 11 ++ .../main/resources/base/element/color.json | 0 .../main/resources/base/element/float.json | 0 .../main/resources/base/element/string.json | 0 .../main/resources/base/media/background.png | Bin .../src/main/resources/base/media/button.png | Bin .../main/resources/base/media/foreground.png | Bin .../src/main/resources/base/media/img_1.png | Bin .../resources/base/media/layered_image.json | 0 .../src/main/resources/base/media/slider.png | Bin .../resources/base/media/sliderBackground.png | Bin .../main/resources/base/media/startIcon.png | Bin .../main/resources/en_US/element/string.json | 0 .../main/resources/zh_CN/element/string.json | 0 .../build-profile.json5 | 0 .../hvigorfile.ts | 0 .../obfuscation-rules.txt | 0 .../oh-package-lock.json5 | 18 +++ .../oh-package.json5 | 2 +- .../verificationcodescenariosampleAbility.ets | 0 .../src/main/ets/pages/Index.ets | 0 .../src/main/module.json5 | 4 +- .../resources/base/profile/main_pages.json | 0 44 files changed, 415 insertions(+), 13 deletions(-) create mode 100644 .clang-format create mode 100644 .idea/.gitignore create mode 100644 verificationcodescenariolibrary/.gitignore create mode 100644 verificationcodescenariolibrary/BuildProfile.ets create mode 100644 verificationcodescenariolibrary/Index.ets create mode 100644 verificationcodescenariolibrary/build-profile.json5 create mode 100644 verificationcodescenariolibrary/consumer-rules.txt create mode 100644 verificationcodescenariolibrary/hvigorfile.ts create mode 100644 verificationcodescenariolibrary/obfuscation-rules.txt create mode 100644 verificationcodescenariolibrary/oh-package.json5 rename {entry => verificationcodescenariolibrary}/src/main/ets/common/Constants.ets (100%) rename {entry => verificationcodescenariolibrary}/src/main/ets/common/GlobalBuilderContext.ets (73%) create mode 100644 verificationcodescenariolibrary/src/main/ets/common/utils/BreakpointSystem.ets create mode 100644 verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets rename {entry => verificationcodescenariolibrary}/src/main/ets/pages/BackgroundColorChange.ets (98%) rename {entry => verificationcodescenariolibrary}/src/main/ets/pages/BottomWithBar.ets (97%) rename {entry => verificationcodescenariolibrary}/src/main/ets/pages/SelectVerificationCode.ets (99%) rename {entry => verificationcodescenariolibrary}/src/main/ets/pages/SliderVerificationCode.ets (98%) rename {entry => verificationcodescenariolibrary}/src/main/ets/pages/TextBoxShowCursor.ets (99%) create mode 100644 verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets rename {entry => verificationcodescenariolibrary}/src/main/ets/viewmodel/NavDestinationItem.ets (100%) create mode 100644 verificationcodescenariolibrary/src/main/module.json5 rename {entry => verificationcodescenariolibrary}/src/main/resources/base/element/color.json (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/element/float.json (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/element/string.json (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/background.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/button.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/foreground.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/img_1.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/layered_image.json (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/slider.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/sliderBackground.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/base/media/startIcon.png (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/en_US/element/string.json (100%) rename {entry => verificationcodescenariolibrary}/src/main/resources/zh_CN/element/string.json (100%) rename {entry => verificationcodescenariosample}/build-profile.json5 (100%) rename {entry => verificationcodescenariosample}/hvigorfile.ts (100%) rename {entry => verificationcodescenariosample}/obfuscation-rules.txt (100%) create mode 100644 verificationcodescenariosample/oh-package-lock.json5 rename {entry => verificationcodescenariosample}/oh-package.json5 (77%) rename entry/src/main/ets/entryability/EntryAbility.ets => verificationcodescenariosample/src/main/ets/entryability/verificationcodescenariosampleAbility.ets (100%) rename {entry => verificationcodescenariosample}/src/main/ets/pages/Index.ets (100%) rename {entry => verificationcodescenariosample}/src/main/module.json5 (92%) rename {entry => verificationcodescenariosample}/src/main/resources/base/profile/main_pages.json (100%) diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..48439ed --- /dev/null +++ b/.clang-format @@ -0,0 +1,64 @@ +Language: Cpp +# BasedOnStyle: LLVM +ColumnLimit: 120 +SortIncludes: CaseSensitive +TabWidth: 4 +IndentWidth: 4 +UseTab: Never +AccessModifierOffset: -4 +ContinuationIndentWidth: 4 +IndentCaseBlocks: false +IndentCaseLabels: false +IndentGotoLabels: true +IndentWrappedFunctionNames: false +SortUsingDeclarations: false +NamespaceIndentation: None +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +AlignTrailingComments: true +AlignAfterOpenBracket: true +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: true +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +InsertBraces: false +IndentExternBlock: NoIndent +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false +ReflowComments: true +MaxEmptyLinesToKeep: 2 \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..359bb53 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml diff --git a/verificationcodescenariolibrary/.gitignore b/verificationcodescenariolibrary/.gitignore new file mode 100644 index 0000000..e2713a2 --- /dev/null +++ b/verificationcodescenariolibrary/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/verificationcodescenariolibrary/BuildProfile.ets b/verificationcodescenariolibrary/BuildProfile.ets new file mode 100644 index 0000000..3a501e5 --- /dev/null +++ b/verificationcodescenariolibrary/BuildProfile.ets @@ -0,0 +1,17 @@ +/** + * Use these variables when you tailor your ArkTS code. They must be of the const type. + */ +export const HAR_VERSION = '1.0.0'; +export const BUILD_MODE_NAME = 'debug'; +export const DEBUG = true; +export const TARGET_NAME = 'default'; + +/** + * BuildProfile Class is used only for compatibility purposes. + */ +export default class BuildProfile { + static readonly HAR_VERSION = HAR_VERSION; + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; + static readonly DEBUG = DEBUG; + static readonly TARGET_NAME = TARGET_NAME; +} \ No newline at end of file diff --git a/verificationcodescenariolibrary/Index.ets b/verificationcodescenariolibrary/Index.ets new file mode 100644 index 0000000..42bf416 --- /dev/null +++ b/verificationcodescenariolibrary/Index.ets @@ -0,0 +1 @@ +export { MainPage } from './src/main/ets/components/MainPage'; diff --git a/verificationcodescenariolibrary/build-profile.json5 b/verificationcodescenariolibrary/build-profile.json5 new file mode 100644 index 0000000..e6773f9 --- /dev/null +++ b/verificationcodescenariolibrary/build-profile.json5 @@ -0,0 +1,31 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} diff --git a/verificationcodescenariolibrary/consumer-rules.txt b/verificationcodescenariolibrary/consumer-rules.txt new file mode 100644 index 0000000..e69de29 diff --git a/verificationcodescenariolibrary/hvigorfile.ts b/verificationcodescenariolibrary/hvigorfile.ts new file mode 100644 index 0000000..4218707 --- /dev/null +++ b/verificationcodescenariolibrary/hvigorfile.ts @@ -0,0 +1,6 @@ +import { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/verificationcodescenariolibrary/obfuscation-rules.txt b/verificationcodescenariolibrary/obfuscation-rules.txt new file mode 100644 index 0000000..272efb6 --- /dev/null +++ b/verificationcodescenariolibrary/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/verificationcodescenariolibrary/oh-package.json5 b/verificationcodescenariolibrary/oh-package.json5 new file mode 100644 index 0000000..7b64a65 --- /dev/null +++ b/verificationcodescenariolibrary/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "name": "verificationcodescenariolibrary", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/entry/src/main/ets/common/Constants.ets b/verificationcodescenariolibrary/src/main/ets/common/Constants.ets similarity index 100% rename from entry/src/main/ets/common/Constants.ets rename to verificationcodescenariolibrary/src/main/ets/common/Constants.ets diff --git a/entry/src/main/ets/common/GlobalBuilderContext.ets b/verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets similarity index 73% rename from entry/src/main/ets/common/GlobalBuilderContext.ets rename to verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets index 8674f1b..7fd63ef 100644 --- a/entry/src/main/ets/common/GlobalBuilderContext.ets +++ b/verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets @@ -13,11 +13,11 @@ * limitations under the License. */ -import { wrappedBuilderShowCursor } from '../pages/TextBoxShowCursor'; -import { wrappedBuilderBottomWithBar } from '../pages/BottomWithBar'; -import { wrappedBuilderColorChange } from '../pages/BackgroundColorChange'; -import { wrappedBuilderVerificationCode } from '../pages/SelectVerificationCode'; -import { wrappedBuilderSliderVerification } from '../pages/SliderVerificationCode'; +import { wrappedBuilderShowCursor } from 'verificationcodescenariosample/src/main/ets/pages/TextBoxShowCursor'; +import { wrappedBuilderBottomWithBar } from 'verificationcodescenariosample/src/main/ets/pages/BottomWithBar'; +import { wrappedBuilderColorChange } from 'verificationcodescenariosample/src/main/ets/pages/BackgroundColorChange'; +import { wrappedBuilderVerificationCode } from 'verificationcodescenariosample/src/main/ets/pages/SelectVerificationCode'; +import { wrappedBuilderSliderVerification } from 'verificationcodescenariosample/src/main/ets/pages/SliderVerificationCode'; export class GlobalBuilderContext { private static instance: GlobalBuilderContext; diff --git a/verificationcodescenariolibrary/src/main/ets/common/utils/BreakpointSystem.ets b/verificationcodescenariolibrary/src/main/ets/common/utils/BreakpointSystem.ets new file mode 100644 index 0000000..aa7581b --- /dev/null +++ b/verificationcodescenariolibrary/src/main/ets/common/utils/BreakpointSystem.ets @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2024 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. + */ + +import { window } from '@kit.ArkUI'; +import type { BusinessError } from '@kit.BasicServicesKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; + +const TAG: string = '[BreakpointSystem]'; + +export enum BreakpointTypeEnum { + XS = 'xs', + SM = 'sm', + MD = 'md', + LG = 'lg', + XL = 'xl', +} + +export interface BreakpointTypes { + xs?: T; + sm: T; + md: T; + lg: T; + xl?: T; +} + +export class BreakpointType { + private xs: T; + private sm: T; + private md: T; + private lg: T; + private xl: T; + + public constructor(param: BreakpointTypes) { + this.xs = param.xs || param.sm; + this.sm = param.sm; + this.md = param.md; + this.lg = param.lg; + this.xl = param.xl || param.lg; + } + + public getValue(currentBreakpoint: string): T { + if (currentBreakpoint === BreakpointTypeEnum.XS) { + return this.xs; + } + if (currentBreakpoint === BreakpointTypeEnum.SM) { + return this.sm; + } + if (currentBreakpoint === BreakpointTypeEnum.MD) { + return this.md; + } + if (currentBreakpoint === BreakpointTypeEnum.XL) { + return this.xl; + } + return this.lg; + } +} + +export class BreakpointSystem { + private static instance: BreakpointSystem; + private currentBreakpoint: BreakpointTypeEnum = BreakpointTypeEnum.MD; + + private constructor() { + } + + public static getInstance(): BreakpointSystem { + if (!BreakpointSystem.instance) { + BreakpointSystem.instance = new BreakpointSystem(); + } + return BreakpointSystem.instance; + } + + public updateCurrentBreakpoint(breakpoint: BreakpointTypeEnum): void { + if (this.currentBreakpoint !== breakpoint) { + this.currentBreakpoint = breakpoint; + AppStorage.setOrCreate('currentBreakpoint', this.currentBreakpoint); + } + } + + public onWindowSizeChange(window: window.Window): void { + this.updateWidthBp(window); + } + + public updateWidthBp(window: window.Window): void { + try { + const mainWindow: window.WindowProperties = window.getWindowProperties(); + const windowWidth: number = mainWindow.windowRect.width; + const windowWidthVp = px2vp(windowWidth); + let widthBp: BreakpointTypeEnum = BreakpointTypeEnum.MD; + if (windowWidthVp < 320) { + widthBp = BreakpointTypeEnum.XS; + } else if (windowWidthVp >= 320 && windowWidthVp < 600) { + widthBp = BreakpointTypeEnum.SM; + } else if (windowWidthVp >= 600 && windowWidthVp < 840) { + widthBp = BreakpointTypeEnum.MD; + } else if (windowWidthVp >= 840 && windowWidthVp < 1440) { + widthBp = BreakpointTypeEnum.LG; + } else { + widthBp = BreakpointTypeEnum.XL; + } + this.updateCurrentBreakpoint(widthBp); + } catch (error) { + const err: BusinessError = error as BusinessError; + hilog.error(0x0000, TAG, `UpdateBreakpoint fail, error code: ${err.code}, message: ${err.message}`); + } + } +} \ No newline at end of file diff --git a/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets b/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets new file mode 100644 index 0000000..0e99803 --- /dev/null +++ b/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2024 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. + */ + +import { window } from '@kit.ArkUI'; +import type { BusinessError } from '@kit.BasicServicesKit'; +import { BreakpointSystem } from './BreakpointSystem'; +import { hilog } from '@kit.PerformanceAnalysisKit'; + +const TAG: string = '[WindowUtil]'; + +export class WindowUtil { + public static requestFullScreen(windowStage: window.WindowStage): void { + windowStage.getMainWindow((err: BusinessError, data: window.Window) => { + if (err.code) { + return; + } + const windowClass: window.Window = data; + // Realize the immersive effect. + try { + const promise: Promise = windowClass.setWindowLayoutFullScreen(true); + promise.then(() => { + hilog.info(0x0000, TAG, 'Succeeded in setting the window layout to full-screen mode.'); + }).catch((err: BusinessError) => { + hilog.info(0x0000, TAG, + `Failed to set the window layout to full-screen mode. Cause: ${err.code}, ${err.message}`); + }); + } catch { + hilog.error(0x0000, TAG, 'Failed to set the window layout to full-screen mode. '); + } + }); + } + + public static registerBreakPoint(windowStage: window.WindowStage) { + windowStage.getMainWindow((err: BusinessError, data: window.Window) => { + if (err.code) { + hilog.error(0x0000, TAG, `Failed to get main window: ${err.message}`); + return; + } + let avoidArea = data.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR); + let bottomRectHeight = avoidArea.bottomRect.height; + AppStorage.setOrCreate('bottomRectHeight', bottomRectHeight); + avoidArea = data.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); + let topRectHeight = avoidArea.topRect.height; + AppStorage.setOrCreate('topRectHeight', topRectHeight); + BreakpointSystem.getInstance().updateWidthBp(data); + data.on('windowSizeChange', () => BreakpointSystem.getInstance().onWindowSizeChange(data)); + data.on('avoidAreaChange', (avoidAreaOption) => { + if (avoidAreaOption.type === window.AvoidAreaType.TYPE_SYSTEM || + avoidAreaOption.type === window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR) { + WindowUtil.setAvoidArea(avoidAreaOption.type, avoidAreaOption.area); + } + }); + }) + } + + // Get status bar height and indicator height. + public static setAvoidArea(type: window.AvoidAreaType, area: window.AvoidArea) { + if (type === window.AvoidAreaType.TYPE_SYSTEM) { + AppStorage.setOrCreate('statusBarHeight', px2vp(area.topRect.height)); + } else { + AppStorage.setOrCreate('naviIndicatorHeight', px2vp(area.bottomRect.height)); + } + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/BackgroundColorChange.ets b/verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets similarity index 98% rename from entry/src/main/ets/pages/BackgroundColorChange.ets rename to verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets index dd844c2..189fc62 100644 --- a/entry/src/main/ets/pages/BackgroundColorChange.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets @@ -17,7 +17,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { inputMethod } from '@kit.IMEKit'; import { window } from '@kit.ArkUI'; -import Constants, { BreakpointType } from '../common/Constants'; +import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; @Extend(Text) function verifyCodeUnitStyle() { diff --git a/entry/src/main/ets/pages/BottomWithBar.ets b/verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets similarity index 97% rename from entry/src/main/ets/pages/BottomWithBar.ets rename to verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets index 1638cd7..1e59279 100644 --- a/entry/src/main/ets/pages/BottomWithBar.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import Constants, { BreakpointType } from '../common/Constants'; +import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; @Entry @Component diff --git a/entry/src/main/ets/pages/SelectVerificationCode.ets b/verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets similarity index 99% rename from entry/src/main/ets/pages/SelectVerificationCode.ets rename to verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets index 230b16f..8eb046d 100644 --- a/entry/src/main/ets/pages/SelectVerificationCode.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import Constants, { BreakpointType } from '../common/Constants'; +import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; @Extend(Text) function word() { diff --git a/entry/src/main/ets/pages/SliderVerificationCode.ets b/verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets similarity index 98% rename from entry/src/main/ets/pages/SliderVerificationCode.ets rename to verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets index f7858d3..579dfe8 100644 --- a/entry/src/main/ets/pages/SliderVerificationCode.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import Constants, { BreakpointType } from '../common/Constants'; +import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; @Entry @Component diff --git a/entry/src/main/ets/pages/TextBoxShowCursor.ets b/verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets similarity index 99% rename from entry/src/main/ets/pages/TextBoxShowCursor.ets rename to verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets index f1cc4be..914873f 100644 --- a/entry/src/main/ets/pages/TextBoxShowCursor.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets @@ -17,7 +17,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { inputMethod } from '@kit.IMEKit'; import { window } from '@kit.ArkUI'; -import Constants, { BreakpointType } from '../common/Constants'; +import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; @Extend(Text) function verifyCodeUnitStyle() { diff --git a/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets b/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets new file mode 100644 index 0000000..9de5eb3 --- /dev/null +++ b/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets @@ -0,0 +1,19 @@ +@Component +export struct MainPage { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + .onClick(() => { + this.message = 'Welcome'; + }) + } + .width('100%') + } + .height('100%') + } +} diff --git a/entry/src/main/ets/viewmodel/NavDestinationItem.ets b/verificationcodescenariolibrary/src/main/ets/viewmodel/NavDestinationItem.ets similarity index 100% rename from entry/src/main/ets/viewmodel/NavDestinationItem.ets rename to verificationcodescenariolibrary/src/main/ets/viewmodel/NavDestinationItem.ets diff --git a/verificationcodescenariolibrary/src/main/module.json5 b/verificationcodescenariolibrary/src/main/module.json5 new file mode 100644 index 0000000..f319c26 --- /dev/null +++ b/verificationcodescenariolibrary/src/main/module.json5 @@ -0,0 +1,11 @@ +{ + "module": { + "name": "verificationcodescenariolibrary", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ] + } +} diff --git a/entry/src/main/resources/base/element/color.json b/verificationcodescenariolibrary/src/main/resources/base/element/color.json similarity index 100% rename from entry/src/main/resources/base/element/color.json rename to verificationcodescenariolibrary/src/main/resources/base/element/color.json diff --git a/entry/src/main/resources/base/element/float.json b/verificationcodescenariolibrary/src/main/resources/base/element/float.json similarity index 100% rename from entry/src/main/resources/base/element/float.json rename to verificationcodescenariolibrary/src/main/resources/base/element/float.json diff --git a/entry/src/main/resources/base/element/string.json b/verificationcodescenariolibrary/src/main/resources/base/element/string.json similarity index 100% rename from entry/src/main/resources/base/element/string.json rename to verificationcodescenariolibrary/src/main/resources/base/element/string.json diff --git a/entry/src/main/resources/base/media/background.png b/verificationcodescenariolibrary/src/main/resources/base/media/background.png similarity index 100% rename from entry/src/main/resources/base/media/background.png rename to verificationcodescenariolibrary/src/main/resources/base/media/background.png diff --git a/entry/src/main/resources/base/media/button.png b/verificationcodescenariolibrary/src/main/resources/base/media/button.png similarity index 100% rename from entry/src/main/resources/base/media/button.png rename to verificationcodescenariolibrary/src/main/resources/base/media/button.png diff --git a/entry/src/main/resources/base/media/foreground.png b/verificationcodescenariolibrary/src/main/resources/base/media/foreground.png similarity index 100% rename from entry/src/main/resources/base/media/foreground.png rename to verificationcodescenariolibrary/src/main/resources/base/media/foreground.png diff --git a/entry/src/main/resources/base/media/img_1.png b/verificationcodescenariolibrary/src/main/resources/base/media/img_1.png similarity index 100% rename from entry/src/main/resources/base/media/img_1.png rename to verificationcodescenariolibrary/src/main/resources/base/media/img_1.png diff --git a/entry/src/main/resources/base/media/layered_image.json b/verificationcodescenariolibrary/src/main/resources/base/media/layered_image.json similarity index 100% rename from entry/src/main/resources/base/media/layered_image.json rename to verificationcodescenariolibrary/src/main/resources/base/media/layered_image.json diff --git a/entry/src/main/resources/base/media/slider.png b/verificationcodescenariolibrary/src/main/resources/base/media/slider.png similarity index 100% rename from entry/src/main/resources/base/media/slider.png rename to verificationcodescenariolibrary/src/main/resources/base/media/slider.png diff --git a/entry/src/main/resources/base/media/sliderBackground.png b/verificationcodescenariolibrary/src/main/resources/base/media/sliderBackground.png similarity index 100% rename from entry/src/main/resources/base/media/sliderBackground.png rename to verificationcodescenariolibrary/src/main/resources/base/media/sliderBackground.png diff --git a/entry/src/main/resources/base/media/startIcon.png b/verificationcodescenariolibrary/src/main/resources/base/media/startIcon.png similarity index 100% rename from entry/src/main/resources/base/media/startIcon.png rename to verificationcodescenariolibrary/src/main/resources/base/media/startIcon.png diff --git a/entry/src/main/resources/en_US/element/string.json b/verificationcodescenariolibrary/src/main/resources/en_US/element/string.json similarity index 100% rename from entry/src/main/resources/en_US/element/string.json rename to verificationcodescenariolibrary/src/main/resources/en_US/element/string.json diff --git a/entry/src/main/resources/zh_CN/element/string.json b/verificationcodescenariolibrary/src/main/resources/zh_CN/element/string.json similarity index 100% rename from entry/src/main/resources/zh_CN/element/string.json rename to verificationcodescenariolibrary/src/main/resources/zh_CN/element/string.json diff --git a/entry/build-profile.json5 b/verificationcodescenariosample/build-profile.json5 similarity index 100% rename from entry/build-profile.json5 rename to verificationcodescenariosample/build-profile.json5 diff --git a/entry/hvigorfile.ts b/verificationcodescenariosample/hvigorfile.ts similarity index 100% rename from entry/hvigorfile.ts rename to verificationcodescenariosample/hvigorfile.ts diff --git a/entry/obfuscation-rules.txt b/verificationcodescenariosample/obfuscation-rules.txt similarity index 100% rename from entry/obfuscation-rules.txt rename to verificationcodescenariosample/obfuscation-rules.txt diff --git a/verificationcodescenariosample/oh-package-lock.json5 b/verificationcodescenariosample/oh-package-lock.json5 new file mode 100644 index 0000000..a4eddf9 --- /dev/null +++ b/verificationcodescenariosample/oh-package-lock.json5 @@ -0,0 +1,18 @@ +{ + "meta": { + "stableOrder": true + }, + "lockfileVersion": 3, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "verificationcodescenariolibrary@../verificationcodescenariolibrary": "verificationcodescenariolibrary@../verificationcodescenariolibrary" + }, + "packages": { + "verificationcodescenariolibrary@../verificationcodescenariolibrary": { + "name": "verificationcodescenariolibrary", + "version": "1.0.0", + "resolved": "../verificationcodescenariolibrary", + "registryType": "local" + } + } +} \ No newline at end of file diff --git a/entry/oh-package.json5 b/verificationcodescenariosample/oh-package.json5 similarity index 77% rename from entry/oh-package.json5 rename to verificationcodescenariosample/oh-package.json5 index 803b252..a50aa99 100644 --- a/entry/oh-package.json5 +++ b/verificationcodescenariosample/oh-package.json5 @@ -1,5 +1,5 @@ { - "name": "entry", + "name": "verificationcodescenariosample", "version": "1.0.0", "description": "Please describe the basic information.", "main": "", diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/verificationcodescenariosample/src/main/ets/entryability/verificationcodescenariosampleAbility.ets similarity index 100% rename from entry/src/main/ets/entryability/EntryAbility.ets rename to verificationcodescenariosample/src/main/ets/entryability/verificationcodescenariosampleAbility.ets diff --git a/entry/src/main/ets/pages/Index.ets b/verificationcodescenariosample/src/main/ets/pages/Index.ets similarity index 100% rename from entry/src/main/ets/pages/Index.ets rename to verificationcodescenariosample/src/main/ets/pages/Index.ets diff --git a/entry/src/main/module.json5 b/verificationcodescenariosample/src/main/module.json5 similarity index 92% rename from entry/src/main/module.json5 rename to verificationcodescenariosample/src/main/module.json5 index b2b33b8..8950fd9 100644 --- a/entry/src/main/module.json5 +++ b/verificationcodescenariosample/src/main/module.json5 @@ -1,6 +1,6 @@ { "module": { - "name": "entry", + "name": "verificationcodescenariosample", "type": "entry", "description": "$string:module_desc", "mainElement": "EntryAbility", @@ -21,7 +21,7 @@ "label": "$string:EntryAbility_label", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", - "exported": false, + "exported": true, "skills": [ { "entities": [ diff --git a/entry/src/main/resources/base/profile/main_pages.json b/verificationcodescenariosample/src/main/resources/base/profile/main_pages.json similarity index 100% rename from entry/src/main/resources/base/profile/main_pages.json rename to verificationcodescenariosample/src/main/resources/base/profile/main_pages.json -- Gitee From 60b76afa45508b4304f252ebe4055c6f7dd86140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E5=A4=A7=E4=BE=A0?= <794397348@qq.com> Date: Sat, 24 May 2025 16:27:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 - build-profile.json5 | 8 ++- verificationcodescenariolibrary/Index.ets | 3 +- .../build-profile.json5 | 5 +- .../main/ets/common/GlobalBuilderContext.ets | 10 +-- .../src/main/ets/common/utils/WindowUtil.ets | 12 +--- .../main/ets/pages/BackgroundColorChange.ets | 4 +- .../src/main/ets/pages/BottomWithBar.ets | 4 +- .../main/ets/pages/SelectVerificationCode.ets | 12 ++-- .../main/ets/pages/SliderVerificationCode.ets | 4 +- .../src/main/ets/pages/TextBoxShowCursor.ets | 4 +- .../pages/VerificationCodeScenarioPage.ets | 72 ++++++++++++++++--- .../oh-package.json5 | 4 +- ...ariosampleAbility.ets => EntryAbility.ets} | 61 ++-------------- .../src/main/ets/pages/Index.ets | 72 ++----------------- .../src/main/module.json5 | 2 +- 16 files changed, 109 insertions(+), 171 deletions(-) delete mode 100644 .idea/.gitignore rename verificationcodescenariosample/src/main/ets/entryability/{verificationcodescenariosampleAbility.ets => EntryAbility.ets} (45%) diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 359bb53..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml diff --git a/build-profile.json5 b/build-profile.json5 index c033ce4..e891c02 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -20,8 +20,8 @@ }, "modules": [ { - "name": "entry", - "srcPath": "./entry", + "name": "verificationcodescenariosample", + "srcPath": "./verificationcodescenariosample", "targets": [ { "name": "default", @@ -30,6 +30,10 @@ ] } ] + }, + { + "name": "verificationcodescenariolibrary", + "srcPath": "./verificationcodescenariolibrary", } ] } \ No newline at end of file diff --git a/verificationcodescenariolibrary/Index.ets b/verificationcodescenariolibrary/Index.ets index 42bf416..64a59f4 100644 --- a/verificationcodescenariolibrary/Index.ets +++ b/verificationcodescenariolibrary/Index.ets @@ -1 +1,2 @@ -export { MainPage } from './src/main/ets/components/MainPage'; +export { VerificationCodeScenarioPage } from './src/main/ets/pages/VerificationCodeScenarioPage'; +export { WindowUtil } from './src/main/ets/common/utils/WindowUtil'; \ No newline at end of file diff --git a/verificationcodescenariolibrary/build-profile.json5 b/verificationcodescenariolibrary/build-profile.json5 index e6773f9..312d38e 100644 --- a/verificationcodescenariolibrary/build-profile.json5 +++ b/verificationcodescenariolibrary/build-profile.json5 @@ -8,7 +8,7 @@ "arkOptions": { "obfuscation": { "ruleOptions": { - "enable": false, + "enable": true, "files": [ "./obfuscation-rules.txt" ] @@ -23,9 +23,6 @@ "targets": [ { "name": "default" - }, - { - "name": "ohosTest" } ] } diff --git a/verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets b/verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets index 7fd63ef..8674f1b 100644 --- a/verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets +++ b/verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext.ets @@ -13,11 +13,11 @@ * limitations under the License. */ -import { wrappedBuilderShowCursor } from 'verificationcodescenariosample/src/main/ets/pages/TextBoxShowCursor'; -import { wrappedBuilderBottomWithBar } from 'verificationcodescenariosample/src/main/ets/pages/BottomWithBar'; -import { wrappedBuilderColorChange } from 'verificationcodescenariosample/src/main/ets/pages/BackgroundColorChange'; -import { wrappedBuilderVerificationCode } from 'verificationcodescenariosample/src/main/ets/pages/SelectVerificationCode'; -import { wrappedBuilderSliderVerification } from 'verificationcodescenariosample/src/main/ets/pages/SliderVerificationCode'; +import { wrappedBuilderShowCursor } from '../pages/TextBoxShowCursor'; +import { wrappedBuilderBottomWithBar } from '../pages/BottomWithBar'; +import { wrappedBuilderColorChange } from '../pages/BackgroundColorChange'; +import { wrappedBuilderVerificationCode } from '../pages/SelectVerificationCode'; +import { wrappedBuilderSliderVerification } from '../pages/SliderVerificationCode'; export class GlobalBuilderContext { private static instance: GlobalBuilderContext; diff --git a/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets b/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets index 0e99803..c60b494 100644 --- a/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets +++ b/verificationcodescenariolibrary/src/main/ets/common/utils/WindowUtil.ets @@ -48,13 +48,7 @@ export class WindowUtil { hilog.error(0x0000, TAG, `Failed to get main window: ${err.message}`); return; } - let avoidArea = data.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR); - let bottomRectHeight = avoidArea.bottomRect.height; - AppStorage.setOrCreate('bottomRectHeight', bottomRectHeight); - avoidArea = data.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); - let topRectHeight = avoidArea.topRect.height; - AppStorage.setOrCreate('topRectHeight', topRectHeight); - BreakpointSystem.getInstance().updateWidthBp(data); + AppStorage.setOrCreate('windowClass', data); data.on('windowSizeChange', () => BreakpointSystem.getInstance().onWindowSizeChange(data)); data.on('avoidAreaChange', (avoidAreaOption) => { if (avoidAreaOption.type === window.AvoidAreaType.TYPE_SYSTEM || @@ -68,9 +62,9 @@ export class WindowUtil { // Get status bar height and indicator height. public static setAvoidArea(type: window.AvoidAreaType, area: window.AvoidArea) { if (type === window.AvoidAreaType.TYPE_SYSTEM) { - AppStorage.setOrCreate('statusBarHeight', px2vp(area.topRect.height)); + AppStorage.setOrCreate('topRectHeight', px2vp(area.topRect.height)); } else { - AppStorage.setOrCreate('naviIndicatorHeight', px2vp(area.bottomRect.height)); + AppStorage.setOrCreate('bottomRectHeight', px2vp(area.bottomRect.height)); } } } \ No newline at end of file diff --git a/verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets b/verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets index 189fc62..54033fa 100644 --- a/verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/BackgroundColorChange.ets @@ -17,7 +17,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { inputMethod } from '@kit.IMEKit'; import { window } from '@kit.ArkUI'; -import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; +import Constants, { BreakpointType } from '../common/Constants'; @Extend(Text) function verifyCodeUnitStyle() { @@ -206,7 +206,7 @@ struct BackgroundColorChange { $r('sys.float.padding_level16')).GetValue(this.curBp), right: new BreakpointType($r('sys.float.padding_level8'), $r('sys.float.padding_level12'), $r('sys.float.padding_level16')).GetValue(this.curBp), - top: px2vp(this.topRectHeight) + top: this.topRectHeight }) .height(Constants.ONE_HUNDRED_PERCENT) .width(Constants.ONE_HUNDRED_PERCENT) diff --git a/verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets b/verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets index 1e59279..ceb96b0 100644 --- a/verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/BottomWithBar.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; +import Constants, { BreakpointType } from '../common/Constants'; @Entry @Component @@ -102,7 +102,7 @@ struct BottomWithBar { $r('sys.float.padding_level16')).GetValue(this.curBp), right: new BreakpointType($r('sys.float.padding_level8'), $r('sys.float.padding_level12'), $r('sys.float.padding_level16')).GetValue(this.curBp), - top: px2vp(this.topRectHeight) + top: this.topRectHeight }) .height(Constants.ONE_HUNDRED_PERCENT) .width(Constants.ONE_HUNDRED_PERCENT) diff --git a/verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets b/verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets index 8eb046d..267a16b 100644 --- a/verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/SelectVerificationCode.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; +import Constants, { BreakpointType } from '../common/Constants'; @Extend(Text) function word() { @@ -171,7 +171,7 @@ struct SelectVerificationCode { .translate({ x: this.oneX - (this.curBp === 'sm' ? Constants.PADDING_SM : this.curBp === 'md' ? Constants.PADDING_MD : Constants.PADDING_LG), - y: this.oneY - px2vp(this.topRectHeight) - Constants.BAR_HEIGHT + y: this.oneY - this.topRectHeight - Constants.BAR_HEIGHT }) .visibility(this.showNumberIcon[0]) Text(Constants.TWO.toString()) @@ -179,7 +179,7 @@ struct SelectVerificationCode { .translate({ x: this.twoX - (this.curBp === 'sm' ? Constants.PADDING_SM : this.curBp === 'md' ? Constants.PADDING_MD : Constants.PADDING_LG), - y: this.twoY - px2vp(this.topRectHeight) - Constants.BAR_HEIGHT + y: this.twoY - this.topRectHeight - Constants.BAR_HEIGHT }) .visibility(this.showNumberIcon[1]) Text(Constants.THREE.toString()) @@ -187,7 +187,7 @@ struct SelectVerificationCode { .translate({ x: this.threeX - (this.curBp === 'sm' ? Constants.PADDING_SM : this.curBp === 'md' ? Constants.PADDING_MD : Constants.PADDING_LG), - y: this.threeY - px2vp(this.topRectHeight) - Constants.BAR_HEIGHT + y: this.threeY - this.topRectHeight - Constants.BAR_HEIGHT }) .visibility(this.showNumberIcon[2]) @@ -196,7 +196,7 @@ struct SelectVerificationCode { .translate({ x: this.fourX - (this.curBp === 'sm' ? Constants.PADDING_SM : this.curBp === 'md' ? Constants.PADDING_MD : Constants.PADDING_LG), - y: this.fourY - px2vp(this.topRectHeight) - Constants.BAR_HEIGHT + y: this.fourY - this.topRectHeight - Constants.BAR_HEIGHT }) .visibility(this.showNumberIcon[3]) @@ -342,7 +342,7 @@ struct SelectVerificationCode { $r('sys.float.padding_level16')).GetValue(this.curBp), right: new BreakpointType($r('sys.float.padding_level8'), $r('sys.float.padding_level12'), $r('sys.float.padding_level16')).GetValue(this.curBp), - top: px2vp(this.topRectHeight) + top: this.topRectHeight }) .width(Constants.ONE_HUNDRED_PERCENT) .height(Constants.ONE_HUNDRED_PERCENT) diff --git a/verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets b/verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets index 579dfe8..c4e557c 100644 --- a/verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/SliderVerificationCode.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; +import Constants, { BreakpointType } from '../common/Constants'; @Entry @Component @@ -150,7 +150,7 @@ struct SliderVerificationCode { }) } .padding({ - top: px2vp(this.topRectHeight) + top: this.topRectHeight }) .width(Constants.ONE_HUNDRED_PERCENT) .height(Constants.ONE_HUNDRED_PERCENT) diff --git a/verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets b/verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets index 914873f..0aa7b1d 100644 --- a/verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/TextBoxShowCursor.ets @@ -17,7 +17,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { inputMethod } from '@kit.IMEKit'; import { window } from '@kit.ArkUI'; -import Constants, { BreakpointType } from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; +import Constants, { BreakpointType } from '../common/Constants'; @Extend(Text) function verifyCodeUnitStyle() { @@ -296,7 +296,7 @@ struct TextBoxShowCursor { $r('sys.float.padding_level16')).GetValue(this.curBp), right: new BreakpointType($r('sys.float.padding_level8'), $r('sys.float.padding_level12'), $r('sys.float.padding_level16')).GetValue(this.curBp), - top: px2vp(this.topRectHeight) + top: this.topRectHeight }) .height(Constants.ONE_HUNDRED_PERCENT) .width(Constants.ONE_HUNDRED_PERCENT) diff --git a/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets b/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets index 9de5eb3..a3cad0a 100644 --- a/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets +++ b/verificationcodescenariolibrary/src/main/ets/pages/VerificationCodeScenarioPage.ets @@ -1,19 +1,73 @@ +import Constants from "../common/Constants"; +import { GlobalBuilderContext } from "../common/GlobalBuilderContext"; +import { NavDestinationItem } from "../viewmodel/NavDestinationItem"; + @Component -export struct MainPage { - @State message: string = 'Hello World'; +export struct VerificationCodeScenarioPage { + private navDestinationData: NavDestinationItem[] = Constants.NAV_DESTINATION_DATA; + @Provide('pathInfos') pathInfos: NavPathStack = new NavPathStack(); + @StorageProp('currentBreakpoint') curBp: string = Constants.BREAKPOINTS[0]; + @StorageProp('bottomRectHeight') + bottomRectHeight: number = 0; + @StorageProp('topRectHeight') + topRectHeight: number = 0; + + @Builder + PagesMap(name: string) { + if ((GlobalBuilderContext.getContext().getObject(name)) !== undefined) { + (GlobalBuilderContext.getContext().getObject(name) as WrappedBuilder<[string, number]>) + .builder(name, Constants.ZERO); + } + } + + aboutToAppear(): void { + AppStorage.setOrCreate('listData', this.navDestinationData); + } build() { - Row() { + Navigation(this.pathInfos) { Column() { - Text(this.message) - .fontSize($r('app.float.page_text_font_size')) + Text($r('app.string.project_name')) .fontWeight(FontWeight.Bold) - .onClick(() => { - this.message = 'Welcome'; + .fontColor($r('sys.color.font_primary')) + .fontSize($r('sys.float.Title_L')) + .height(56) + .alignSelf(ItemAlign.Start) + .margin({ + left: this.curBp === 'sm' ? $r('sys.float.padding_level0') : + this.curBp === 'md' ? $r('sys.float.padding_level4') : $r('sys.float.padding_level8') }) + .padding({ top: $r('sys.float.padding_level8') }) + Column() { + ForEach(this.navDestinationData, (item: NavDestinationItem, index: number) => { + Button(item.detail) + .fontSize($r('sys.float.Subtitle_M')) + .fontColor($r('sys.color.font_on_primary')) + .width(this.curBp === 'sm' ? '100%' : $r('app.float.index_button_width_lg')) + .height($r('app.float.button_height')) + .margin({ top: $r('sys.float.padding_level6') }) + .backgroundColor($r('sys.color.comp_background_emphasize')) + .onClick(() => { + this.pathInfos.pushPathByName(item.name, Constants.ZERO); + }) + }, (item: NavDestinationItem) => JSON.stringify(item)) + } + .width(Constants.FULL_WIDTH) } - .width('100%') + .backgroundColor($r('sys.color.background_primary')) + .width(Constants.FULL_WIDTH) + .height(Constants.FULL_HEIGHT) + .alignItems(HorizontalAlign.Center) + .justifyContent(FlexAlign.SpaceBetween) + .padding({ + left: $r('sys.float.padding_level8'), + right: $r('sys.float.padding_level8'), + top: Constants.PADDING_TOP_INDEX + this.topRectHeight, + bottom: Constants.PADDING_BOTTOM_INDEX + this.bottomRectHeight + }) } - .height('100%') + .mode(NavigationMode.Stack) + .hideTitleBar(true) + .navDestination(this.PagesMap) } } diff --git a/verificationcodescenariosample/oh-package.json5 b/verificationcodescenariosample/oh-package.json5 index a50aa99..283d99f 100644 --- a/verificationcodescenariosample/oh-package.json5 +++ b/verificationcodescenariosample/oh-package.json5 @@ -5,5 +5,7 @@ "main": "", "author": "", "license": "", - "dependencies": {} + "dependencies": { + "verificationcodescenariolibrary": "file:../verificationcodescenariolibrary" + } } \ No newline at end of file diff --git a/verificationcodescenariosample/src/main/ets/entryability/verificationcodescenariosampleAbility.ets b/verificationcodescenariosample/src/main/ets/entryability/EntryAbility.ets similarity index 45% rename from verificationcodescenariosample/src/main/ets/entryability/verificationcodescenariosampleAbility.ets rename to verificationcodescenariosample/src/main/ets/entryability/EntryAbility.ets index 703915b..e15bcb0 100644 --- a/verificationcodescenariosample/src/main/ets/entryability/verificationcodescenariosampleAbility.ets +++ b/verificationcodescenariosample/src/main/ets/entryability/EntryAbility.ets @@ -14,9 +14,10 @@ */ import { ConfigurationConstant, UIAbility } from '@kit.AbilityKit'; -import { display, window } from '@kit.ArkUI'; +import { window } from '@kit.ArkUI'; import { hilog } from '@kit.PerformanceAnalysisKit'; -import { BusinessError } from '@kit.BasicServicesKit'; +import { WindowUtil } from 'verificationcodescenariolibrary'; + const TAG: string = '[EntryAbility]'; @@ -33,38 +34,8 @@ export default class EntryAbility extends UIAbility { } onWindowStageCreate(windowStage: window.WindowStage): void { - windowStage.getMainWindow().then((windowObj: window.Window) => { - try { - let type = window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR; - let avoidArea = windowObj.getWindowAvoidArea(type); - let bottomRectHeight = avoidArea.bottomRect.height; - AppStorage.setOrCreate('bottomRectHeight', bottomRectHeight); - type = window.AvoidAreaType.TYPE_SYSTEM; - avoidArea = windowObj.getWindowAvoidArea(type); - let topRectHeight = avoidArea.topRect.height; - AppStorage.setOrCreate('topRectHeight', topRectHeight); - this.updateBreakpoint(windowObj.getWindowProperties().windowRect.width); - - windowObj.on('windowSizeChange', (windowSize) => { - this.updateBreakpoint(windowSize.width); - }); - - windowObj.setWindowLayoutFullScreen(true).then(() => { - hilog.info(0x0000, TAG, '%{public}s', 'Succeeded in setting the window layout to full-screen mode.'); - }).catch((err: BusinessError) => { - hilog.error(0x0000, TAG, 'Failed to set the window layout to full-screen mode. Cause: %{public}s', - `the code is ${err.code}, the message is ${err.message}`); - }); - - AppStorage.setOrCreate('windowClass', windowObj); - } catch (error) { - const err: BusinessError = error as BusinessError; - hilog.error(0x0000, TAG, 'get window info catch err: Cause: %{public}s', - `the code is ${err.code}, the message is ${err.message}`); - } - }).catch((err: BusinessError) => { - hilog.error(0x0000, 'testTag', `Failed to get main window. Cause:`, err.message); - }); + WindowUtil.requestFullScreen(windowStage) + WindowUtil.registerBreakPoint(windowStage) windowStage.loadContent('pages/Index', (err, _data) => { if (err.code) { hilog.error(0x0000, TAG, 'Failed to load the content. Cause: %{public}s', @@ -89,26 +60,4 @@ export default class EntryAbility extends UIAbility { // Ability has back to background hilog.info(0x0000, TAG, '%{public}s', 'Ability onBackground'); } - - private updateBreakpoint(windowWidth: number): void { - try { - let windowWidthVp = windowWidth / display.getDefaultDisplaySync().densityPixels; - let newBp: string = ''; - if (windowWidthVp < 600) { - newBp = 'sm'; - } else if (windowWidthVp < 840) { - newBp = 'md'; - } else { - newBp = 'lg'; - } - if (this.curBp !== newBp) { - this.curBp = newBp; - AppStorage.setOrCreate('currentBreakpoint', this.curBp); - } - } catch (error) { - const err: BusinessError = error as BusinessError; - hilog.error(0x0000, TAG, '%{public}s', - `An unexpected error occurred. Code: ${err.code}, message: ${err.message}`); - } - } } diff --git a/verificationcodescenariosample/src/main/ets/pages/Index.ets b/verificationcodescenariosample/src/main/ets/pages/Index.ets index 9784443..6aaa500 100644 --- a/verificationcodescenariosample/src/main/ets/pages/Index.ets +++ b/verificationcodescenariosample/src/main/ets/pages/Index.ets @@ -13,77 +13,17 @@ * limitations under the License. */ -import Constants from '../common/Constants'; -import { NavDestinationItem } from '../viewmodel/NavDestinationItem'; -import { GlobalBuilderContext } from '../common/GlobalBuilderContext'; +import Constants from 'verificationcodescenariolibrary/src/main/ets/common/Constants'; +import { NavDestinationItem } from 'verificationcodescenariolibrary/src/main/ets/viewmodel/NavDestinationItem'; +import { GlobalBuilderContext } from 'verificationcodescenariolibrary/src/main/ets/common/GlobalBuilderContext'; +import { VerificationCodeScenarioPage } from 'verificationcodescenariolibrary'; @Entry @Component struct Index { - private navDestinationData: NavDestinationItem[] = Constants.NAV_DESTINATION_DATA; - @Provide('pathInfos') pathInfos: NavPathStack = new NavPathStack(); - @StorageProp('currentBreakpoint') curBp: string = Constants.BREAKPOINTS[0]; - @StorageProp('bottomRectHeight') - bottomRectHeight: number = 0; - @StorageProp('topRectHeight') - topRectHeight: number = 0; - - @Builder - PagesMap(name: string) { - if ((GlobalBuilderContext.getContext().getObject(name)) !== undefined) { - (GlobalBuilderContext.getContext().getObject(name) as WrappedBuilder<[string, number]>) - .builder(name, Constants.ZERO); - } - } - - aboutToAppear(): void { - AppStorage.setOrCreate('listData', this.navDestinationData); - } - build() { - Navigation(this.pathInfos) { - Column() { - Text($r('app.string.project_name')) - .fontWeight(FontWeight.Bold) - .fontColor($r('sys.color.font_primary')) - .fontSize($r('sys.float.Title_L')) - .height(56) - .alignSelf(ItemAlign.Start) - .margin({ - left: this.curBp === 'sm' ? $r('sys.float.padding_level0') : - this.curBp === 'md' ? $r('sys.float.padding_level4') : $r('sys.float.padding_level8') - }) - .padding({ top: $r('sys.float.padding_level8') }) - Column() { - ForEach(this.navDestinationData, (item: NavDestinationItem, index: number) => { - Button(item.detail) - .fontSize($r('sys.float.Subtitle_M')) - .fontColor($r('sys.color.font_on_primary')) - .width(this.curBp === 'sm' ? '100%' : $r('app.float.index_button_width_lg')) - .height($r('app.float.button_height')) - .margin({ top: $r('sys.float.padding_level6') }) - .backgroundColor($r('sys.color.comp_background_emphasize')) - .onClick(() => { - this.pathInfos.pushPathByName(item.name, Constants.ZERO); - }) - }, (item: NavDestinationItem) => JSON.stringify(item)) - } - .width(Constants.FULL_WIDTH) - } - .backgroundColor($r('sys.color.background_primary')) - .width(Constants.FULL_WIDTH) - .height(Constants.FULL_HEIGHT) - .alignItems(HorizontalAlign.Center) - .justifyContent(FlexAlign.SpaceBetween) - .padding({ - left: $r('sys.float.padding_level8'), - right: $r('sys.float.padding_level8'), - top: Constants.PADDING_TOP_INDEX + px2vp(this.topRectHeight), - bottom: Constants.PADDING_BOTTOM_INDEX + px2vp(this.bottomRectHeight) - }) + Stack() { + VerificationCodeScenarioPage() } - .mode(NavigationMode.Stack) - .hideTitleBar(true) - .navDestination(this.PagesMap) } } \ No newline at end of file diff --git a/verificationcodescenariosample/src/main/module.json5 b/verificationcodescenariosample/src/main/module.json5 index 8950fd9..e939754 100644 --- a/verificationcodescenariosample/src/main/module.json5 +++ b/verificationcodescenariosample/src/main/module.json5 @@ -14,7 +14,7 @@ "pages": "$profile:main_pages", "abilities": [ { - "name": "EntryAbility", + "name": "VerificationcodescenariosampleAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", "description": "$string:EntryAbility_desc", "icon": "$media:layered_image", -- Gitee