From d2090db97b8541eed7bad88a9f2a522ed02f5e8f Mon Sep 17 00:00:00 2001 From: cat404 <1196525525@qq.com> Date: Fri, 5 Dec 2025 17:15:31 +0800 Subject: [PATCH 01/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9UX=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=95=88=E6=9E=9C=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=8A=9F=E8=83=BD=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ntAdapter.ets => ImageZoomCompAdapter.ets} | 2 +- ...mponentAdapter.ets => TextCompAdapter.ets} | 2 +- .../src/main/ets/contants/CommonConstants.ets | 41 ++++++++++++++ entry/src/main/ets/pages/ActionBarScene.ets | 39 ++++++++++++++ .../src/main/ets/pages/ButtonDisplayScene.ets | 39 ++++++++++++++ entry/src/main/ets/pages/ImageZoomScene.ets | 39 ++++++++++++++ entry/src/main/ets/pages/Index.ets | 54 +++++++++++++++---- .../main/ets/pages/MarqueeDisplayScene.ets | 39 ++++++++++++++ entry/src/main/module.json5 | 1 + .../main/resources/base/element/color.json | 4 ++ .../main/resources/base/element/string.json | 20 +++++++ .../resources/base/profile/router_map.json | 36 +++++++++++++ .../main/resources/en_US/element/string.json | 36 +++++++++++++ .../main/resources/zh_CN/element/string.json | 36 +++++++++++++ 14 files changed, 377 insertions(+), 11 deletions(-) rename entry/src/main/ets/components/{ScrollComponentAdapter.ets => ImageZoomCompAdapter.ets} (97%) rename entry/src/main/ets/components/{TextComponentAdapter.ets => TextCompAdapter.ets} (97%) create mode 100644 entry/src/main/ets/contants/CommonConstants.ets create mode 100644 entry/src/main/ets/pages/ActionBarScene.ets create mode 100644 entry/src/main/ets/pages/ButtonDisplayScene.ets create mode 100644 entry/src/main/ets/pages/ImageZoomScene.ets create mode 100644 entry/src/main/ets/pages/MarqueeDisplayScene.ets create mode 100644 entry/src/main/resources/base/profile/router_map.json create mode 100644 entry/src/main/resources/en_US/element/string.json create mode 100644 entry/src/main/resources/zh_CN/element/string.json diff --git a/entry/src/main/ets/components/ScrollComponentAdapter.ets b/entry/src/main/ets/components/ImageZoomCompAdapter.ets similarity index 97% rename from entry/src/main/ets/components/ScrollComponentAdapter.ets rename to entry/src/main/ets/components/ImageZoomCompAdapter.ets index a33bad4..a8c3dbc 100644 --- a/entry/src/main/ets/components/ScrollComponentAdapter.ets +++ b/entry/src/main/ets/components/ImageZoomCompAdapter.ets @@ -30,7 +30,7 @@ class MyModifier implements AttributeModifier { @Component -export struct ScrollComponentAdapter { +export struct ImageZoomCompAdapter { adaptModifier: MyModifier = new MyModifier(); build() { diff --git a/entry/src/main/ets/components/TextComponentAdapter.ets b/entry/src/main/ets/components/TextCompAdapter.ets similarity index 97% rename from entry/src/main/ets/components/TextComponentAdapter.ets rename to entry/src/main/ets/components/TextCompAdapter.ets index b28c8ef..ac9069c 100644 --- a/entry/src/main/ets/components/TextComponentAdapter.ets +++ b/entry/src/main/ets/components/TextCompAdapter.ets @@ -27,7 +27,7 @@ class MyModifier implements AttributeModifier { } @Component -export struct TextComponentAdapter { +export struct TextCompAdapter { private message: string = 'This a a simple Code of Text Marquee'; private adaptModifier: MyModifier = new MyModifier(); diff --git a/entry/src/main/ets/contants/CommonConstants.ets b/entry/src/main/ets/contants/CommonConstants.ets new file mode 100644 index 0000000..0850576 --- /dev/null +++ b/entry/src/main/ets/contants/CommonConstants.ets @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2025 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. + */ + +/** + * Route type define + */ +export interface Route { + title: ResourceStr; + to: string; +} + +export const ROUTES: Route[] = [ + { + title: $r('app.string.action_bar_scene'), + to: 'ActionBarScene' + }, + { + title: $r('app.string.button_display_scene'), + to: 'ButtonDisplayScene' + }, + { + title: $r('app.string.image_zoom_scene'), + to: 'ImageZoomScene' + }, + { + title: $r('app.string.marquee_display_scene'), + to: 'MarqueeDisplayScene' + } +] \ No newline at end of file diff --git a/entry/src/main/ets/pages/ActionBarScene.ets b/entry/src/main/ets/pages/ActionBarScene.ets new file mode 100644 index 0000000..d14c46c --- /dev/null +++ b/entry/src/main/ets/pages/ActionBarScene.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 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 { ActionBarAdapter } from '../components/ActionBarAdapter' + +@Builder +export function ActionBarSceneBuilder(){ + ActionBarScene() +} + +@Component +struct ActionBarScene { + build() { + NavDestination() { + Column(){ + Row(){ + ActionBarAdapter() + } + } + .width('100%') + .height('100%') + } + .title($r('app.string.action_bar_scene')) + .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) + .backgroundColor($r('app.color.common_backgroundColor')) + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/ButtonDisplayScene.ets b/entry/src/main/ets/pages/ButtonDisplayScene.ets new file mode 100644 index 0000000..b133306 --- /dev/null +++ b/entry/src/main/ets/pages/ButtonDisplayScene.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 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 { NativeButtonAdapter } from '../components/NativeButtonAdapter' + +@Builder +export function ButtonDisplaySceneBuilder(){ + ButtonDisplayScene() +} + +@Component +struct ButtonDisplayScene { + build() { + NavDestination() { + Column(){ + Row(){ + NativeButtonAdapter() + } + } + .width('100%') + .height('100%') + } + .title($r('app.string.button_display_scene')) + .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) + .backgroundColor($r('app.color.common_backgroundColor')) + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/ImageZoomScene.ets b/entry/src/main/ets/pages/ImageZoomScene.ets new file mode 100644 index 0000000..9230c3e --- /dev/null +++ b/entry/src/main/ets/pages/ImageZoomScene.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 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 { ImageZoomCompAdapter } from '../components/ImageZoomCompAdapter' + +@Builder +export function ImageZoomSceneBuilder(){ + ImageZoomScene() +} + +@Component +struct ImageZoomScene { + build() { + NavDestination() { + Column(){ + Row(){ + ImageZoomCompAdapter() + } + } + .width('100%') + .height('100%') + } + .title($r('app.string.image_zoom_scene')) + .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) + .backgroundColor($r('app.color.common_backgroundColor')) + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index 90d1e6d..7de49ce 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -13,22 +13,58 @@ * limitations under the License. */ -import { ScrollComponentAdapter } from '../components/ScrollComponentAdapter'; -import { TextComponentAdapter } from '../components/TextComponentAdapter'; -import { ActionBarAdapter } from '../components/ActionBarAdapter'; -import { NativeButtonAdapter } from '../components/NativeButtonAdapter'; +import { Route, ROUTES } from '../contants/CommonConstants'; @Entry @Component struct Index { + private routes: Route[] = ROUTES; + private pageInfos: NavPathStack = new NavPathStack(); build() { - Column() { - ScrollComponentAdapter() - TextComponentAdapter() - ActionBarAdapter() - NativeButtonAdapter() + Navigation(this.pageInfos) { + Column() { + Column() { + ForEach(this.routes, (item: Route, index: number) => { + Column() { + Row() { + Text(item.title) + .width('91.1%') + .height(48) + .fontWeight(FontWeight.Medium) + .padding({ left: 12 }) + .fontSize('16fp') + SymbolGlyph($r('sys.symbol.chevron_forward')) + .fontSize($r('sys.float.padding_level12')) + .fontColor([$r('sys.color.font_tertiary')]) + } + + if (this.routes.length - 1 !== index) { + Row() + .height(0.5) + .backgroundColor('#0D000000') + .width('93%') + } + } + .onClick(() => { + this.pageInfos.pushPath({ + name: item.to + }) + }) + .width('91.1%') + .height(48) + }, (item: Route, index: number) => JSON.stringify(item) + index) + } + .borderRadius(15) + .backgroundColor(Color.White) + } + .alignItems(HorizontalAlign.Center) + .height('100%') + .width('100%') } .height('100%') .width('100%') + .title($r('app.string.index_label')) + .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) + .backgroundColor($r('app.color.common_backgroundColor')) } } diff --git a/entry/src/main/ets/pages/MarqueeDisplayScene.ets b/entry/src/main/ets/pages/MarqueeDisplayScene.ets new file mode 100644 index 0000000..1a84922 --- /dev/null +++ b/entry/src/main/ets/pages/MarqueeDisplayScene.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 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 { TextCompAdapter } from '../components/TextCompAdapter' + +@Builder +export function MarqueeDisplaySceneBuilder(){ + MarqueeDisplayScene() +} + +@Component +struct MarqueeDisplayScene { + build() { + NavDestination() { + Column(){ + Row(){ + TextCompAdapter() + } + } + .width('100%') + .height('100%') + } + .title($r('app.string.marquee_display_scene')) + .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) + .backgroundColor($r('app.color.common_backgroundColor')) + } +} \ No newline at end of file diff --git a/entry/src/main/module.json5 b/entry/src/main/module.json5 index 53024e8..5a40616 100644 --- a/entry/src/main/module.json5 +++ b/entry/src/main/module.json5 @@ -10,6 +10,7 @@ "deliveryWithInstall": true, "installationFree": false, "pages": "$profile:main_pages", + "routerMap": "$profile:router_map", "abilities": [ { "name": "EntryAbility", diff --git a/entry/src/main/resources/base/element/color.json b/entry/src/main/resources/base/element/color.json index 3c71296..886bf7b 100644 --- a/entry/src/main/resources/base/element/color.json +++ b/entry/src/main/resources/base/element/color.json @@ -3,6 +3,10 @@ { "name": "start_window_background", "value": "#FFFFFF" + }, + { + "name": "common_backgroundColor", + "value": "#F1F3F5" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index 720747a..d5e9207 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -11,6 +11,26 @@ { "name": "EntryAbility_label", "value": "APILevelAdapt" + }, + { + "name": "action_bar_scene", + "value": "Action Bar Scene" + }, + { + "name": "button_display_scene", + "value": "Button Display Scene" + }, + { + "name": "image_zoom_scene", + "value": "Image Zoom Scene" + }, + { + "name": "marquee_display_scene", + "value": "Marquee Display Scene" + }, + { + "name": "index_label", + "value": "Multi-API Version Compatibility Sample" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/base/profile/router_map.json b/entry/src/main/resources/base/profile/router_map.json new file mode 100644 index 0000000..11e698e --- /dev/null +++ b/entry/src/main/resources/base/profile/router_map.json @@ -0,0 +1,36 @@ +{ + "routerMap": [ + { + "name": "ActionBarScene", + "pageSourceFile": "src/main/ets/pages/ActionBarScene.ets", + "buildFunction": "ActionBarSceneBuilder", + "data": { + "description": "this is ActionBarScene page." + } + }, + { + "name": "ButtonDisplayScene", + "pageSourceFile": "src/main/ets/pages/ButtonDisplayScene.ets", + "buildFunction": "ButtonDisplaySceneBuilder", + "data": { + "description": "this is ButtonDisplayScene page." + } + }, + { + "name": "ImageZoomScene", + "pageSourceFile": "src/main/ets/pages/ImageZoomScene.ets", + "buildFunction": "ImageZoomSceneBuilder", + "data": { + "description": "this is ImageZoomScene page." + } + }, + { + "name": "MarqueeDisplayScene", + "pageSourceFile": "src/main/ets/pages/MarqueeDisplayScene.ets", + "buildFunction": "MarqueeDisplaySceneBuilder", + "data": { + "description": "this is MarqueeDisplayScene page." + } + } + ] +} \ No newline at end of file diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000..d5e9207 --- /dev/null +++ b/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,36 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "APILevelAdapt" + }, + { + "name": "action_bar_scene", + "value": "Action Bar Scene" + }, + { + "name": "button_display_scene", + "value": "Button Display Scene" + }, + { + "name": "image_zoom_scene", + "value": "Image Zoom Scene" + }, + { + "name": "marquee_display_scene", + "value": "Marquee Display Scene" + }, + { + "name": "index_label", + "value": "Multi-API Version Compatibility Sample" + } + ] +} \ No newline at end of file diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000..23232e5 --- /dev/null +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,36 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "APILevelAdapt" + }, + { + "name": "action_bar_scene", + "value": "动作条场景" + }, + { + "name": "button_display_scene", + "value": "按钮展示场景" + }, + { + "name": "image_zoom_scene", + "value": "图片缩放场景" + }, + { + "name": "marquee_display_scene", + "value": "走马灯场景" + }, + { + "name": "index_label", + "value": "多API版本兼容示例" + } + ] +} \ No newline at end of file -- Gitee From 1d2a41c4cd26d5847d5478803e4a18b4e718cb56 Mon Sep 17 00:00:00 2001 From: cat404 <1196525525@qq.com> Date: Sat, 6 Dec 2025 11:26:35 +0800 Subject: [PATCH 02/40] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Scroll=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=A4=9AAPI=E7=89=88=E6=9C=AC=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=85=BC=E5=AE=B9=E6=80=A7=E9=80=82=E9=85=8D?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cpp/function/src/IntegratingWithArkts.cpp | 1 + .../ets/components/ImageZoomCompAdapter.ets | 46 --------- .../main/ets/components/ScrollCompAdapter.ets | 95 +++++++++++++++++++ .../src/main/ets/contants/CommonConstants.ets | 4 +- .../{ImageZoomScene.ets => ScrollScene.ets} | 12 +-- entry/src/main/ets/utils/Logger.ets | 60 ++++++++++++ .../main/resources/base/element/string.json | 4 +- .../resources/base/profile/router_map.json | 8 +- .../main/resources/en_US/element/string.json | 4 +- .../main/resources/zh_CN/element/string.json | 4 +- 10 files changed, 174 insertions(+), 64 deletions(-) delete mode 100644 entry/src/main/ets/components/ImageZoomCompAdapter.ets create mode 100644 entry/src/main/ets/components/ScrollCompAdapter.ets rename entry/src/main/ets/pages/{ImageZoomScene.ets => ScrollScene.ets} (79%) create mode 100644 entry/src/main/ets/utils/Logger.ets diff --git a/entry/src/main/cpp/function/src/IntegratingWithArkts.cpp b/entry/src/main/cpp/function/src/IntegratingWithArkts.cpp index 37704cd..4b52510 100644 --- a/entry/src/main/cpp/function/src/IntegratingWithArkts.cpp +++ b/entry/src/main/cpp/function/src/IntegratingWithArkts.cpp @@ -52,6 +52,7 @@ std::shared_ptr CreateButtonExample() textNode->SetFontSize(TEXT_FONTSIZE); textNode->SetPercentWidth(1); textNode->SetHeight(40); + textNode->SetWidth(200); textNode->SetTextAlign(ARKUI_TEXT_ALIGNMENT_CENTER); // [EndExclude button_api] // Regarding the proprietary interfaces of HarmonyOS, specifically the interfaces marked as since M.F.S(N). diff --git a/entry/src/main/ets/components/ImageZoomCompAdapter.ets b/entry/src/main/ets/components/ImageZoomCompAdapter.ets deleted file mode 100644 index a8c3dbc..0000000 --- a/entry/src/main/ets/components/ImageZoomCompAdapter.ets +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2025 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 { deviceInfo } from '@kit.BasicServicesKit'; - -class MyModifier implements AttributeModifier { - applyNormalAttribute(instance: ScrollAttribute): void { - // Judgment is made by the api version information of deviceInfo - if (deviceInfo.sdkApiVersion >= 20) { - // To adapt to the Scroll scaling property, you can set the minimum and maximum scaling ratios - instance.maxZoomScale(1.2) - instance.minZoomScale(0.5) - instance.enableBouncesZoom(true) - } - } -} - - - -@Component -export struct ImageZoomCompAdapter { - adaptModifier: MyModifier = new MyModifier(); - - build() { - Scroll() { - // 'app.media.startIcon' is just an example, please replace the actual image. - Image($r('app.media.startIcon')) - .width('80%') - } - .scrollable(ScrollDirection.FREE) - .width('80%') - .attributeModifier(this.adaptModifier) - } -} diff --git a/entry/src/main/ets/components/ScrollCompAdapter.ets b/entry/src/main/ets/components/ScrollCompAdapter.ets new file mode 100644 index 0000000..15a94bf --- /dev/null +++ b/entry/src/main/ets/components/ScrollCompAdapter.ets @@ -0,0 +1,95 @@ +// ScrollCompAdapter.ets +import { deviceInfo } from '@kit.BasicServicesKit'; +import { Logger } from '../utils/Logger'; + +type FeatureInstaller = (instance: ScrollAttribute) => void; + +interface FeatureSpec { + minVersion: number; + installer: FeatureInstaller; +} + +// 记录每类特性是否已对某个 ScrollAttribute 实例完成安装,避免重复注册回调。 +const didScrollRegistry = new WeakSet(); +const scrollEdgeRegistry = new WeakSet(); +const zoomRegistry = new WeakSet(); + +const FEATURE_SPECS: ReadonlyArray = [ + { + minVersion: 12, + installer: (instance: ScrollAttribute) => { + if (didScrollRegistry.has(instance)) { + return; + } + // API 12+ 支持 onDidScroll 回调 + instance.onDidScroll((xOffset: number, yOffset: number) => { + Logger.info(`xOffset=${xOffset}, yOffset=${yOffset}`); + }); + didScrollRegistry.add(instance); + } + }, + { + minVersion: 18, + installer: (instance: ScrollAttribute) => { + if (scrollEdgeRegistry.has(instance)) { + return; + } + // API 18+ 对滚动到边缘的能力进行了增强 + instance.onScrollEdge((side: Edge) => { + Logger.info(`side=${JSON.stringify(side)}`); + }); + scrollEdgeRegistry.add(instance); + } + }, + { + minVersion: 20, + installer: (instance: ScrollAttribute) => { + if (zoomRegistry.has(instance)) { + return; + } + // API 20+ 开启缩放能力 + instance.maxZoomScale(2); + instance.minZoomScale(1); + instance.enableBouncesZoom(true); + instance.onDidZoom((scale: number) => { + Logger.info(`onDidZoom:${scale}`); + }); + instance.onZoomStart(() => { + Logger.info('onZoomStart'); + }); + instance.onZoomStop(() => { + Logger.info('onZoomStop'); + }); + zoomRegistry.add(instance); + } + } +]; + +class MyModifier implements AttributeModifier { + applyNormalAttribute(instance: ScrollAttribute): void { + const sdkVersion: number = deviceInfo.sdkApiVersion ?? 0; + FEATURE_SPECS.forEach(feature => { + if (sdkVersion >= feature.minVersion) { + feature.installer(instance); + } + }); + } +} + +@Component +export struct ScrollCompAdapter { + private readonly adaptModifier: MyModifier = new MyModifier(); + private readonly scrollDirection: ScrollDirection = + (deviceInfo.sdkApiVersion ?? 0) >= 20 ? ScrollDirection.FREE : ScrollDirection.Vertical; + + build() { + Scroll() { + // 'app.media.startIcon' is just an example, please replace the actual image. + Image($r('app.media.startIcon')) + .width('80%') + } + .scrollable(this.scrollDirection) + .width('80%') + .attributeModifier(this.adaptModifier) + } +} \ No newline at end of file diff --git a/entry/src/main/ets/contants/CommonConstants.ets b/entry/src/main/ets/contants/CommonConstants.ets index 0850576..b7a5077 100644 --- a/entry/src/main/ets/contants/CommonConstants.ets +++ b/entry/src/main/ets/contants/CommonConstants.ets @@ -31,8 +31,8 @@ export const ROUTES: Route[] = [ to: 'ButtonDisplayScene' }, { - title: $r('app.string.image_zoom_scene'), - to: 'ImageZoomScene' + title: $r('app.string.scroll_scene'), + to: 'ScrollScene' }, { title: $r('app.string.marquee_display_scene'), diff --git a/entry/src/main/ets/pages/ImageZoomScene.ets b/entry/src/main/ets/pages/ScrollScene.ets similarity index 79% rename from entry/src/main/ets/pages/ImageZoomScene.ets rename to entry/src/main/ets/pages/ScrollScene.ets index 9230c3e..5cb51e0 100644 --- a/entry/src/main/ets/pages/ImageZoomScene.ets +++ b/entry/src/main/ets/pages/ScrollScene.ets @@ -13,26 +13,26 @@ * limitations under the License. */ -import { ImageZoomCompAdapter } from '../components/ImageZoomCompAdapter' +import { ScrollCompAdapter } from '../components/ScrollCompAdapter' @Builder -export function ImageZoomSceneBuilder(){ - ImageZoomScene() +export function ScrollSceneBuilder(){ + ScrollScene() } @Component -struct ImageZoomScene { +struct ScrollScene { build() { NavDestination() { Column(){ Row(){ - ImageZoomCompAdapter() + ScrollCompAdapter() } } .width('100%') .height('100%') } - .title($r('app.string.image_zoom_scene')) + .title($r('app.string.scroll_scene')) .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) .backgroundColor($r('app.color.common_backgroundColor')) } diff --git a/entry/src/main/ets/utils/Logger.ets b/entry/src/main/ets/utils/Logger.ets new file mode 100644 index 0000000..449f4a1 --- /dev/null +++ b/entry/src/main/ets/utils/Logger.ets @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; + +/** + * Logger utility to centralize log formatting and output. + */ +export class Logger { + // Log domain to distinguish module source. + private static domain: number = 0xFF00; + // Log prefix for quick issue localization. + private static prefix: string = 'APILevelAdapt'; + // Log format template. + private static format: string = '%{public}s'; + + /** + * Print a debug level log. + * @param args Debug message content. + */ + static debug(...args: string[]): void { + hilog.debug(Logger.domain, Logger.prefix, Logger.format, args); + } + + /** + * Print an info level log. + * @param args Information content. + */ + static info(...args: string[]): void { + hilog.info(Logger.domain, Logger.prefix, Logger.format, args); + } + + /** + * Print a warning level log. + * @param args Warning content. + */ + static warn(...args: string[]): void { + hilog.warn(Logger.domain, Logger.prefix, Logger.format, args); + } + + /** + * Print an error level log. + * @param args Error content. + */ + static error(...args: string[]): void { + hilog.error(Logger.domain, Logger.prefix, Logger.format, args); + } +} \ No newline at end of file diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index d5e9207..71b95f2 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -21,8 +21,8 @@ "value": "Button Display Scene" }, { - "name": "image_zoom_scene", - "value": "Image Zoom Scene" + "name": "scroll_scene", + "value": "Scroll Scene" }, { "name": "marquee_display_scene", diff --git a/entry/src/main/resources/base/profile/router_map.json b/entry/src/main/resources/base/profile/router_map.json index 11e698e..88db97e 100644 --- a/entry/src/main/resources/base/profile/router_map.json +++ b/entry/src/main/resources/base/profile/router_map.json @@ -17,11 +17,11 @@ } }, { - "name": "ImageZoomScene", - "pageSourceFile": "src/main/ets/pages/ImageZoomScene.ets", - "buildFunction": "ImageZoomSceneBuilder", + "name": "ScrollScene", + "pageSourceFile": "src/main/ets/pages/ScrollScene.ets", + "buildFunction": "ScrollSceneBuilder", "data": { - "description": "this is ImageZoomScene page." + "description": "this is ScrollScene page." } }, { diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json index d5e9207..71b95f2 100644 --- a/entry/src/main/resources/en_US/element/string.json +++ b/entry/src/main/resources/en_US/element/string.json @@ -21,8 +21,8 @@ "value": "Button Display Scene" }, { - "name": "image_zoom_scene", - "value": "Image Zoom Scene" + "name": "scroll_scene", + "value": "Scroll Scene" }, { "name": "marquee_display_scene", diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index 23232e5..3ffb570 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -21,8 +21,8 @@ "value": "按钮展示场景" }, { - "name": "image_zoom_scene", - "value": "图片缩放场景" + "name": "scroll_scene", + "value": "滚动场景" }, { "name": "marquee_display_scene", -- Gitee From 231cc512446476fbcf934ad5a29832a2a2bc64e1 Mon Sep 17 00:00:00 2001 From: cat404 <1196525525@qq.com> Date: Sat, 6 Dec 2025 15:31:32 +0800 Subject: [PATCH 03/40] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/components/ScrollCompAdapter.ets | 68 ++++++++++++++++-- .../main/resources/base/media/daily_video.png | Bin 0 -> 2117490 bytes 2 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 entry/src/main/resources/base/media/daily_video.png diff --git a/entry/src/main/ets/components/ScrollCompAdapter.ets b/entry/src/main/ets/components/ScrollCompAdapter.ets index 15a94bf..217caeb 100644 --- a/entry/src/main/ets/components/ScrollCompAdapter.ets +++ b/entry/src/main/ets/components/ScrollCompAdapter.ets @@ -1,56 +1,83 @@ -// ScrollCompAdapter.ets +/* + * Copyright (c) 2025 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 { deviceInfo } from '@kit.BasicServicesKit'; import { Logger } from '../utils/Logger'; +// Type definition for feature installer function that applies specific features to a ScrollAttribute instance type FeatureInstaller = (instance: ScrollAttribute) => void; +// Interface defining a feature specification with minimum API version requirement and installer function interface FeatureSpec { minVersion: number; installer: FeatureInstaller; } -// 记录每类特性是否已对某个 ScrollAttribute 实例完成安装,避免重复注册回调。 +// Registry to track whether onDidScroll feature has been installed for a ScrollAttribute instance +// Using WeakSet to avoid memory leaks and allow garbage collection of unused instances const didScrollRegistry = new WeakSet(); +// Registry to track whether onScrollEdge feature has been installed for a ScrollAttribute instance const scrollEdgeRegistry = new WeakSet(); +// Registry to track whether zoom features have been installed for a ScrollAttribute instance const zoomRegistry = new WeakSet(); +// Array of feature specifications organized by minimum API version requirements const FEATURE_SPECS: ReadonlyArray = [ { minVersion: 12, installer: (instance: ScrollAttribute) => { + // Skip installation if this feature is already registered for the instance if (didScrollRegistry.has(instance)) { return; } - // API 12+ 支持 onDidScroll 回调 + // API 12+ supports onDidScroll callback for tracking scroll events instance.onDidScroll((xOffset: number, yOffset: number) => { Logger.info(`xOffset=${xOffset}, yOffset=${yOffset}`); }); + // Mark this instance as having the feature installed to prevent duplicate registration didScrollRegistry.add(instance); } }, { minVersion: 18, installer: (instance: ScrollAttribute) => { + // Skip installation if this feature is already registered for the instance if (scrollEdgeRegistry.has(instance)) { return; } - // API 18+ 对滚动到边缘的能力进行了增强 + // API 18+ enhances scroll edge detection capabilities instance.onScrollEdge((side: Edge) => { Logger.info(`side=${JSON.stringify(side)}`); }); + // Mark this instance as having the feature installed to prevent duplicate registration scrollEdgeRegistry.add(instance); } }, { minVersion: 20, installer: (instance: ScrollAttribute) => { + // Skip installation if this feature is already registered for the instance if (zoomRegistry.has(instance)) { return; } - // API 20+ 开启缩放能力 + // API 20+ introduces zoom capabilities for scrollable content instance.maxZoomScale(2); instance.minZoomScale(1); instance.enableBouncesZoom(true); + + // Register zoom event callbacks instance.onDidZoom((scale: number) => { Logger.info(`onDidZoom:${scale}`); }); @@ -60,14 +87,19 @@ const FEATURE_SPECS: ReadonlyArray = [ instance.onZoomStop(() => { Logger.info('onZoomStop'); }); + + // Mark this instance as having the feature installed to prevent duplicate registration zoomRegistry.add(instance); } } ]; +// Custom attribute modifier that dynamically applies features based on device API version class MyModifier implements AttributeModifier { applyNormalAttribute(instance: ScrollAttribute): void { + // Get current device SDK API version const sdkVersion: number = deviceInfo.sdkApiVersion ?? 0; + // Apply all compatible features based on device API version FEATURE_SPECS.forEach(feature => { if (sdkVersion >= feature.minVersion) { feature.installer(instance); @@ -76,17 +108,41 @@ class MyModifier implements AttributeModifier { } } +// Component that demonstrates adapter pattern for Scroll component with version-specific features @Component export struct ScrollCompAdapter { + // Instance of our custom modifier to apply version-adaptive features private readonly adaptModifier: MyModifier = new MyModifier(); + // Determine scroll direction based on API version: + // Use FREE direction on API 20+ (supports zoom), otherwise use VERTICAL private readonly scrollDirection: ScrollDirection = (deviceInfo.sdkApiVersion ?? 0) >= 20 ? ScrollDirection.FREE : ScrollDirection.Vertical; + // Sample data array for rendering scrollable content + private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; build() { Scroll() { - // 'app.media.startIcon' is just an example, please replace the actual image. Image($r('app.media.startIcon')) .width('80%') + ForEach(this.arr, (item: number, index: number) => { + Row() { + if (index % 2 === 0) { + Text(item.toString()) + .fontSize(16) + .textAlign(TextAlign.Center) + } else { + Image($r('app.media.daily_video')) + .objectFit(ImageFit.Cover) + } + } + .width('90%') + .height(150) + .backgroundColor(0xFFFFFF) + .borderRadius(15) + .clip(true) + .justifyContent(FlexAlign.Center) + .margin({ top: 10 }) + }, (item: number, index: number) => `${index}_${item}`) } .scrollable(this.scrollDirection) .width('80%') diff --git a/entry/src/main/resources/base/media/daily_video.png b/entry/src/main/resources/base/media/daily_video.png new file mode 100644 index 0000000000000000000000000000000000000000..50d1bc6164ec948f602520920684b00ea21e01c8 GIT binary patch literal 2117490 zcmV)3K+C_0P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR98V4wp41ONa40RR94*Z=?k0Pa3yQ2+oy07*naRCodGy$gaHISwQ`?Kjuo zlk64tZ1zI{3=#yvPo`3;Do<;sD@l9;0T5)SB)k02|NFoH=g&WX{_~&z{PU0eCs+6S z^9PFm{D;?n#Kw=E>G2S;e*fo>glob4*aI<^m+4qA;QgmTIFnT9^s}MmN-l`)^PPEl zIeh5n<-4)fU#whBc0RA_TW$aO&p&0IBPMGR<(O-=l2U6f&Xsv&bF$1aS-br`+nAY*bmY7l*-vYkeV~V zpI-xXreln_gr)r&v&4*y<=Ha$re) z{F$6KS8~triG%AEEcHX4)AL<)yMQbbi>aXfk5&F$yVwss!h2_0vqc@48o9p02Bp^H zCb^gU8u*@kCElle+5bMCub0ow+q`?cZC^*g^L64|L+z>LzBZ46#?VgFO+49>1DAh( z$(bfnc^dtX48v=FfPHE`R(s!*)q075B~ab3IseW#DOQK$jb+SOK|D-X7=!TwcedtS z1H_4(RE8k9rzB^Ek53#gyEaDSpw{xtaaQs@eA4@SC$q?EG4qYKw99H1*Yj@OvX~Wn z)3c13@gw)|eyzC%qI&#XYM|l33W%KUoAR}K+WT_b1B`icJ>@UR2c}tHov_&1u;=#q z1(F~XN`F>o;J`89RiXj3%5Bj2QZd7kD5c-v!!f;%t~jUu`7Kn-dmvDo^swiJSjlZ? z5|aFJUFV(xOwQ6QUtO{Z{}fw*%o?bcW3y-xMr|Y+KdO>gXnYIVr?LG})w9usH7Y5%~_^W+$EVp8^UErl1Vr)Oa+QxEIU{9dCoeCdJDi{A38 zbpy+OozH8~`x(#cd|CTdp1RI3C?U@|u25IHEVq??)UggHIJAuz{hWQe%6+Bl(d0X> z-@kP~@H+EF++V-O&u1gv&zsx%guG|DznT+j2kbw80UgGEp4qQt*bagqr>6|~-^$_bx;Y6h2(L3L)ZeWQngJ}n+v_f;==Vy$uqLQ+ z#fbrE^zZfG3d9QF9({73j(!i#YtK5oOy<--Ziu}Z|NDFrawy`1O(d z|18rN+IC#vU(fvLdU=#<`BoaI@8NT zT@MX_9}@x-RIcTdd?ulOl=yljC+S^VjtR)aVsLur9pDDtSNo5Bd?R#q(JfSGZGbo1 z*@wl=;{Hgn;eOaBs1yFXn{UjKbq5~DSF!=^*>^O^?eujw{tVxj^8yWp!{4p*{<9dz zi#7-NQq5}ZK&HUw{4!Ib6v8 zcEYh%PsLRJ04o7}&&+xX^7JJb^q<gI#lE$ZdPkc29(T1wc5bXJp4I(R{>FOu zj1Ib_j&N@7>ws}PKPK-RI^cWU5eIZytafj>hd6rGyd)4;>x4RON5s8EeSMwxE^1M^ z%FK@s-8(b*`?{L)2B})L4*oq86fQhBd~?RN4z1ou;tp&0ywY`*N*&mlV_euzURDhe zxzwF@UiV$bu>GiTN zVBb@huF6bIOC)!VI(OsF;Rj8a3n^pH8#!gGEB*bUxw3yk=Q-+^F0wFe1J%`uL}Ong zFy)m*5R|8SpOd;>+7T7J4IDp^@RXWSJ|dS~`#&y~<9ES-kKuZ6P@W>)Mta6azmlzLY@k6YpXA{2_Ma(_61+ z;I4j?9GBiDwWZBBR&w2Nuky94HR-tfwTp@0DP9LYO!Pie!gy{pL`3ufnOuGbg>OkI z_7h_~ePvy7<@o6scknzHKhChI=QXqWge>a`#s#<5)4p$M@!2bD`#|@F zfO5XWpH`=CuBpWiI?>~^X?(^2g7O3F1g1x1kBpL-x#-dQ=OMmW`sBJjo65;PfDP8@ zZ+*S`mCu#Bu-;bBYc<8L(`9&e`)%oi<$v}42o55d&2G}KZe$h*j5J5LGF}%Ms}7Z! z)KkwlJL!t+x`KTk2D*w5P;QXkH!>aP9+w!SmDJ;~7Mbs>GR9`}p(2pQa`$}^YwWBQ zpl8Jxz4Y2lYhPS?E_<99KduGmW*2kY<9`PWExY{4*rQ&$MTF?Ic49+}JNfK<|KK05 z(_hm*GIZ@9uclGrG{gX9NCN9@y?4EX|Gl&O)a4FVOO2j95 z_ffvr3`Y@ujjO)&#%IG#sV*mx^{HQfjA4`6Wx-&Fm&eHLUX>w=*22P7IIKHcV#Q&m zBY$3Jb~WH+ufz3%i0kK`v;2!MUiHX0@)BZ?;AS8|W(laz zWYl$6`O+@>cKXQ#y~1^(344)q98g!VcbwUu-cH971YG>u)3$PX!@$S$@a!#c8wsVXn8_d!vdIbD-++fFlUm0}N&-2nPt86t6 z@gg@PVRrh5d>{z_W-NWp*8gny!oVxuK1NOJep-YELwuY#e?iAQc!jlj%0kG{%X1{p zC$DktH#WVsZ-fFVSMRX_UszQ`_SNNlcQE&Wb<6STINzmW+ zf+Z4}y9!u+T4(ggmV&bc3YyseX3D~iQ{$8k9qzYqsdA&bVP5Yjo ztgEdb{w>5tin@JdR0kOTH2r9A9 z!W67nxC?=uNQb%sC9Z(#^PO%g(J)A{ulr8zO?Z@J@$WAHZ@hcme0D$H9P?{5v&8_L zQ23PKz51n47lm8{T-ob{@H)!Qu3wkW89%c^zRdB8UvIlwdvD1;u$WfsQYV4XQ8Upw z_b4K`ZR$bmn!TP!2U{ng^xu=ceTM)S0KOd8$QK4E(0ZS-vSPPcFUvy_j~Fm-ThJqy z)QC8#@*4^7@YH*dE`j{e>k}JqEXrnSM+cE0pV)hp(cw5dY*@ri6|LKQ!1L6K3)K;59PM^C@hzh2@K^(A8oW-V5G>3u{d*=|X-iTr^ zMt?rfjf*Ihj+6JOLL9jWaQ*TXQ<$JHaK)tLhpC$Tr++nqro6mPL~uRjX0~)HSGnNj zYqQ#uE1e;I=I5h(N^0zupi5vT?~KZ1uq|sBmoW3KGEHniD(hUW`oX0Dz3Y{k?~yBh z)mC_Vs_Z4=dR_H-;~>Ugg`(}s<_R5F9@i&(Jmb&0AM<|m0(p4Wf!tIVgjr6spI&{C zsgWse;cqZsR%>I-QNS7N%2yjv^1kbpe$_W%LXN+plB^=%ZXXn7%#ptDy6*ZwX@%Z= zoXZX$&joJXUyaY4pMYGg7uTEDcq2C7J{xjt(pVgM(iPEY*F4rE;8jLz(+9M=Z%VkB z$r?Ud`#Avp+>h6&SN8E5DQa^Lu|Mn)H@A(5oNM_ymsU{gVSJ%J1NJPifn)1IQPDY_30kF->1{=C>e7h=XUJx zQ?7SQ$vBz6&;Kru%+KRyaaC5D3ipe7mE;VPhkW_uOI>hAch-CZz)hs{5-|f+yMiTV zip8ZWZrMdmGQ7d^OgPgLeRVw~qV)|P*p=p5r_1thfY z1uWr6qXYF^{1`@D>v3akK)VP}Oj)qiFqQ*!<9&|fBMB|8{^VF21$A$ zVwid^Sj)O@2Ikc^)`MqTwXv$M%#nijT@l898VU3gZ|}#wmCckw44xTYl1aTIFmn+c zZ6DO^^c764Y$80oQNdkf;>tl9d#Ox4Ahc8h$*J}CQE(ezcX;---zQYNJ@JB#y6R&3 z=sn;}Gn4n;uh0Dc@#9^M7#Tb@MF?bq{!{KaS7`LXD|q`neCXM_u6(@ztK(RY8PB_M zF5_{n?gmW!d@b#79k@;&3eW)9Z_e73+jA5i5xC)g_tBKOq{Y3&+Em+8q|56aia~$k z2X)!VIRA%LsivK8F;kx2r4p}hdjE{#Rh;Je{?Wj{gnXP|C;&^w`<8`;R1AadNfl;% z8RrBe+TgjT=V$a_S1C#WjD6c6rsoqm@IyV|j4wm>{-aHlFoH5EO2{h9=J1}X+FOOEyVnf(ko#gs5tp@>i zy^nl$IoWv-NyYj^egEt+YG)Fw^GthJ?sN3{P|oWWeE1N{kB=~X>&b6+<8Kt=XN(;N z4rZ1+mZxs4sOS)60g?r^nxu6zjF?*;({m zzv-r!IbV=x&(0UztLct!H5>+9GoCYQAaM2GJ9sz&%Pb<|IPIfD`!`?{Naf%T9hfi~ zTt{N9Da@@EZ?sJUE<`JTa$2~%v$JvX_A7kYL4Oj*W4<(&;%7{U4-=L_G6e5%w%PDE z=l;|?4A*^y?R94{JgaQX_0bPW#Q=0>wV-W=0~z(aLS}2b;_7pP2Vc?W%+6x_U#sJB z?9FJ~W5o0}j4xNJorpu!s4g9a;R;mP00#Crpcat9yG+$NSE&@Z9LUwiW z^>c7VW0#G4wbdL85%qCNdw$hnGO(T$=i;xm#CZXGk?GX|x-cW+LJ1Yt#`2SW$bcit zAfYvTO2dGtfGLjSH#i4DanrmsSL)rpVs};&gRZ#x{fPM=a4YqI4*%_N;a3;JCg1X> z=3l64-eKMSa_IWFENuOYfc@YdoUI?m`r%K9b}gj9frtnA#^adViYhYXKGOa|?Nqq( zx~4njqic`wZ1fN&lM|bJIk-GFjej%H1IK-s@$~k7>}~zn+oa>NMtlaK4cfSS6}t?3 z#T)y~Lv{PC3(&6@!r?`G#qdB-(gSo~0k-5Kz9Iupk0Z zf~?y*b0i~w&FrEK^JINI%#CrZQ^{D7;#z2Q+%W4aa;%ClkoPy<4cc|#g8%2IM$hu| zR9o*d_m~(`qptDxvaW=~0TS^FmRzEyp}%v4sAE3&BYHgG#;n@2zQuSlc0mm5)13`4 zc{!xLNAbD!YaWBJCZ!g#De*qdzv?~>zsB76mACK40?SI*Tp6+$62Iy@fV`(W6R9bm z$ADFF{J3*iPx8F_nluD2M`HbpShjb)ZEv@q(RYmDeR)POuGiJ~aQ-77Z{WtnsUn82 zf@Dyr)%qtUDuUe!-pv0<-UqO4*UOGz)X4j_`uiHSdVAX}Li5kGlmU#`hpA`1cX$rXbFAg`3)mdqpz@-Q;4SdijQS$H#t&G&x!;&1C9TSpPY(mxr?~)BoaC!wHT;;VxI>?|~S;^*Q~i*<;WGVfn^==FNRdpDR~#j5qQt7~kEtu4UP~ z%=wtN0>}@&9(#2UM(Wl1&sOss|I?P0KB(8po`q%#`=6JxCU?1CW+j=_V28ic&%(Vd zm-VXmqyiS+3agZ7FwZH*CGYqgN4fUUm7Wk=-WnMzEvf5GaMM53RvNa(E+pfe+;Md< zD!xM1brLmH*DS6}VFC5iBg6tV5N^!q)NV*h|=)a0pJi zv~sVbn5I3z*-ZC#;04_GwvR@@#vSjW7Y_}rReMjtik#*Cl$F-df#KgXoA!`WB+rX0 zM>iMi`wmHVl_Pb%?X-59tl8puHr{vUwO|}rFxK4q84Y4G7O&4BH{7T2ekM-e184|W z@>=_r8~5oWt0A!z$F)`$zJ-W-udF1VJ&%PQ^xB%<6px(wBI#`?Cts~J^YXBYXEN1*k zo`rT$udsvZ2dCi7Z?|H4k#W3_+BwUb^wz8eQ;BoN8=QTLAd z7|$2PHzwpPnrGtey*#t^`iI6@7*Lwg@?m{?UVeEz3nudN$>Lb&%R$6p7Uvx686GX( zZiDpk_~A+OKOHrktOk_fY7Nos+kxz3dA%R|eMwaB*NuJuh_P=)kEst6P$nm=GWL#L zfY&FU;udY2aE^dKn93CNu;nB-=aw)Z7qhQf!<@j}7jO7Q;I4-C!O#(p4wJct)dk=0 zWY)s>;{>*f=~D%N>p*IFH&-0TT}?0cLM!R@^>4o4WaLvoUnl3&j451imu?37K{@-U z>jmT_HK6V)ot>XOcmmZI{%fnal?BD2j-XSt2K#D6AR^56K4k(M9g-c9*MTv z(wxws%xk+xy`w;v=~Zl_J8U!A6l0|jpvqJ28ggEL=$p;+cNJh?DbOl8>d3d?%HOc_ z5#qVn(i1;#NVwTG+A{3S{+r6V?(w|7N|!jNerNHXD)M@9BKI?HF;j3w9Q+q~N89f< zU)LvN8*2s|$ZG9|jW(iW7^BrjBBjpQ^#Se^^6W}`{<}O@bSo3 z>pp`>t3+eq_t@0RE*io@ptB(NsG4SoVlb$NUkLk;= z<%rcj2Y@c>r=U^c=|IN>qg^`J!W2ye>QB>4uxYICEsXbBz4w-Vn=$8lp=zv+$@)KX zuKlGJW`+A)|MGPoln%Z3>Sx~1;{_{k)~mkdtkt;B$@bxlGWL?Kiq(3aw4KRwJtA~p zzyh~^NHvRJAJLijeaR>qvKRdJwewk#&&5#i-)pnx?v{d=Oy(5H8a zOb9&nJ++$xI7P&2^);ipo^_Aw3_q@o3v@ip@aR0^;-&^Id3yeo(c547fJB?wqIo>? zA31p3eoR|jPhMaHQ@t4!2iAjF5Z7_JVQ7zvGqch2sQ5pAksx-Hc?h|XW}ZZa*s3N! znHZJHRc!-Sty5zEstA04OCeC}1A4E9OZ{7oQgs#j+USOX0Nl|(uo9qk4yKLuRDU#s zdMgspZogvRp5FUz2P}>)56Q$1lw(NL1NEwXj(zCsF95{Nu$pPR58_va^W@BYo|Z*^buCMvn9tMkiHEHDoEF=b zHrdtNo^sVTy;|nBSQ(A}0N(BcG4R9#qR%6)PcXHqgR94RYWTMaV-dH7-xfgkGp!=L z$nm!uWw)Az)7zRMz7xKCFEi8&X%m7ezvWtkaL@>&Uwyxi@##ZN^Q8p-@!X;=zk19O zFZY>A1q%@6#yRGq%FdZwN88SfkiF2&US+OOBRv=4i6Ls8Gac8BAI7{Im+RZdwRo>$ zzve$%bIREp`zU>G?c9m-J<>B4tobu&XDAlaYKOmF2d}~dV?NBDfgM}TGM&j!ft507 zhi8rcBjPz)^lO$^n2`m&d*4=Td;dwR{M!4Dy-j_L3A7V@*Z~9ne8u@rPJMDEy+lQk zM$72aV0k?Vu=GDy+PbxPSPQlpuC{m1@yxQ}^`4OXH7VA~eR|%rJ>q^gIrUjvT!*=Fk|y;H=oFRlL8TNWepx2U6j?8%H@wuZZW;A4Ag-a8sA z(Ct1y$P7AyKJQLZCJj91&@`Ff&yry+X7|KwohZ}lNg>z;iopp>0KLe{C#%D~m}Yj3 z?>k(Tf$OHdpP$jF5wU+RF1!EH*86|2G53IHHCrpQVV?WkblqifcpdNk;S1RM!JKFF zhVg!_y+us4Ej*~PS&e41wNab5G%{J!_9NI@JjQ9oMB{TYdauH0v^lpk3se9gJ8jNo;XQqeTMRy+ypu~K6v>}*RvY5bBv#TB2nR>siG8(Zl4 zYPL-_>L{6Cef+uALmE;oDV_9+ubIq+2{Nh9yw3uSD3 z(7tMH^X5$%?En0MU5V37ZjDewykb7Pxer#?wg}NLDnoAG(2Z4Yp`A1z!nW%{6~I;o zz)+k+Ft|-#S2z(ueK<+3o>jDEjaVdki#{Nnt`941wf9lWS`5fhFvgA+q(T_KM~N)+rE*^71WS_%hs?zISXS(!*$KoL8rq%nhfz^;>WCUi_thWSq0W#1tR`s z?^Ss=5HtU)v@?^LtY_F;WqY=_$Y+`jfn~yBZk<^?3}uvMxWZ2sVk|S_ z75kDytVh+~?i;!9>Axu%d69X$H&=-@jdH_~dmnngmuNq|y7ZQGtqrlF$9@isU%w9i!AgO$K92chF=l+c+;Esf z%#El!J?+}n$1rJaY1wb~+%noU|5ryDc96+NLiUjAp3*(KiW~f+si?UsdXJEa_h`E4 zcs}=d-fOmQ-liYVkb0|pcH+x@%d9h`5vR|?`;NAKbt8Ue?`@i%eaRm8R&m_(i&~pk z9HBqnOPUYt=6H=?^O%nqbB>q$uI!_3Stlf#-k7+CJ|D<1r;IknF~-fApGq0y)P811 zoStiLOLk9<(@lC{%s>sQk#cE^@;10}H zek+u()@8gineoJ8An)^H5ervaXYc!`{~NHMDu$c7}T z>2tzlQ)z}}2ThKx68^KbNOOKn$l@UJg#eLB~@+e`QL~?yJ zpZjWEqb|;QUW4gMcR!PfXP?f*$R0?klxLe;HD_MD5|3A31IlK$)Mr=vWO$kVRaxyl z_tdD}v8W|EF;<*Ye&>3M1v}K_)cy{axsQFI_-bq`ISOrgw7=70Cd0M*;HB=@P`NqPBm`)8<6Ek_&xiS67povJ8qi@|dA?a&f|PE#G5I z^yiiDBHo^`4?C_x!ureAW{6OWHE8w%`mXTzD3yEN46b@L2an_9frFoWyLXI3ED0YZ z+n})5RIfVjkY{)^`3|q@Uk0d1{oood`h?F|?3o^~&6>XXH0{~w*Y?Z59)~f>vDfx9 z+EU6tv}JSDW&hj+jFVW5F~8b67^f#Oc|IWW`C6-`cbyX#jW;}xv4nh8=_vv0o6y>) z^)%5P-cIisH(Ps8VY;}FyoVpt&fg#P-riuq`pka_?MG;`kFMv>{_r%|E1AyQosK;YvEfVB6~_yFDqdcV`vIS& z@u0(TZxLp|PjEfg;9=9mC$;-x;VKWVfiJPAyYlsRe*7DC_kzW^#yxPTw#0KjIZynF zJv(39c|a$R)?^t@CaV+>;KGabzTk4r6m)!Qr{3a+$E*Cc2VB*tVhTJyOhpvhpVWi4 z73adBf3uS~I!^y7A0jeae|7-J%V)TeEAor7gvG~2bV zNMiKYUeF@jm$0M7p#%*jFYrJvg=e~PU6z;+D}Dbz z3yr+Wq5(Kf(>|1IU*h*JaC`n$7T|f{B_jHk|3-{AwEcsghLlALwX1UPd0{Lm^EZ<) zf~}2PpIwYnw&tJ5|H!_~L#tHJ2jOb(XdW zrTU|(1Dc=3&Paz9KPryqBZ-P9#jj(*vinb4iyYogLhqN`{S8vqE^Veog7j-9tzNsG z2_N&P57(uk7$a_$cP7jB7N2*3yndD2_u6Qo_4zH#g34;$3o}`7@%1y`xA|JE zIj(bjqLyID*N!32e#GUNzE`f~9erlXNUBj6fi-|rJfB6^D$W66-_THBAQZr1!p#BfH#{4c=$oHANeb0{BvBuC`uQ7hDS?$BbU9*rMuSFSIcM<{D^F)J{F=Vnw z;;WcM@sF6#){%L}5Bn)UP0ri1a=^r!LC#aGr80PkZU3b}_QucyV#TnQ_<{#xo2$^X zg184Zlk!v5o#g(+*9j=K{{y7{JACLt`Ojw*%+l!}_Ac%>sYMWK9Fh6*R1*>YW4}%| zyXhhyxXIsPv|nvf{U!q;r1eZ=@G!1t{fiGW#9@dKM zb_2y+venKLkMS7$l^jXmu*%+7N}gBaWA>K6?NMaW^v7iYyf(=bH9U@bnJG)5HJ*hj zrFy*0X7N5O*Ly7+rNoxwSzhcBUChdgJ!17>Z_u`yxdCjb=hdmFLt;-2-l(wH$T5Bq z>t%UQ_#D?c@cdM(ZVk*&kyP$6kv8UQY%PwMt^W45o(r(y`p6il{n{$hqd)9Ca*#;J zy>vg;;>sCPQmywd>@gCo6ZHA|qIYQ=fF4Oq(8yM_*?)M%`W*O`EYBb`W2BK#_(T~qrq!s~O4K#_&m#ek z=O@OieI51i(@1jF2r(=ie9?9O=^rVnPm>7oP%ZMpGjLP0SI{4;9&H}uh#to~C9e_T8(jbFj_zAabZ z7pP^M!@k)y_8upfj%(8FF!FJBw!LRQ^B9ePZo8Kz`CdYXD=fBs^>jdfmeh4 z>`%ldv!^37FW_^0Er#}LI8(bXV0RB#*TU_s@sL)_#eqKY>8Ch*fXf!E;*kJBS!7;& zz2CUAF_F3};W}ZPX!<2oAF*F{tzC!JO&VZ20&=r&{28(7%)PhwkZdY1!+0i-cGu_R zMy}Tp?s?2>(D0g#ooVFiER^;Y?!fT&ao(_ZqyFFZ8M!t8dogMsi96PxFZ5~_ZR}xs zw5#q1nO56?rMM*&&aW0#oa9U4EH2Pza_GL}3we=q&C1onpWSsGCW&}kHF4lG-zsfr}WQF@uK9~_uO)Z?KF`ugf;-Vt2zx2gE+%PKecvSBJtKZvNkwx6+wJN(|Hn|V9> zs)77_T36z#kK_lRT0`V4b4w2++haav9h+Kh`X7S$=l_FaFLpD;j4R>PI*cV&j&sQB zuKZSZns7BA2EU50UXaRQF&B^{Liks$uM^ffIvIwLTj^S4%thS2X8xT~Itf674fQQP zOc;+>@0Q8D-ruJ=wtN^1*3!RzS^*&JxljfB?r%I61@}ee1$PDKhfV+d=eHCU{{$WP zc(ov@3dItZ^>a+(o9exlI)6s+4la`X$?}% zY%sy-tN>^c8Q-gUe&+0n-)i7}$MKAO!^z_q66$RG)2>>u8Dt5*QI8ZeiIt~nxZV)h z7XY}Ly49242OF#ZZtc9D>u$wtU%CL#_eWan z9WCcH!)jbIuqaFV%MM!?iNjV8N}jor!y2ufpUsYEHgrJ2e8?~gntK`fytc-JcPdaa zQIiUb(MlI_W^-WR^-vBSPLIhm&EmcGbJoW|wO;ml&Fj=~@GMBaxZ*$f&3zFEKITVX zaaq2|3q~hC?LKa>#;5Jq7|i3h7_3RlG5W>%oE!6w9@#v%&9QUa3^mG#=hx6|e7<|_-{@cqdR!BU>%lE zc#;coIzI}pT;)>@`+&Z80)-kHMbQ6ONpJk&8FC&Tjtd9XdF~T#U49cAWQ#N4a@OKd z&yEE9WX-JaTAsQDC2!Luz$%)t^-VSNeV^Rt?8mQ0v^tNu4KYg5>|!-Co92t28vLdN zXLX)Be62$0%11qvo!JeDC`A^#h8}oM%;E)83*)79r2IR6ivM>mGkFEr96J zjpg7v6R zq3%1Y&xA8?A@+;h_VII8gOs7EC=~qjfr{jZ-hX%N^ws4 zmFp82SK?iirL$bPcn$yy8FZpVoW6W{6|4j4O2W zx&Z@rc5Qs7eL9`B_u&V<_RAr#1Oi3wmS`7>1k*!`ET{FS9V40TesdTyXelZT^e zsKECm))cEKY@hH~9zDPA9mlfva^hCen2 zYSQs1FXV(V>b2uYoZ>sX0P4~UapB|~@8(?B2XNMeN~P`%ot^%0gtjg|iCD-Joai$K zv~p6dVM-3*xtu~=&n!;7xsp&Yi_7ga4x*Kj*;fQGu2Rt z2_7R(;g!>K=QUwnOir3)#wOnB#SLV;_%Kn;;Jo4Tvb>{w@KobL3jyux=lj$hq zwet%T+T>h=@k>+IybzcA+j~L-C6AXve8|~zMcr)9yg(xMlOMrehCzJKwJO{I z`V%|nQii@Z5XHHf5&N^XP%Z}tJnZzJ`YJiaOP*7-`Y!WW<2ZjGPu6L6wtS9BpJUsz zy}X~1o$T*kvD`g)U;kC_T|WE;Y+n{GvTZVZLpM||6!Pn);J!NqpJmrq%dmOOUX8?! zWq!DkMuZjeU>u!wZkWDKXMQQzMA%}WU%;8Xas4hYa(ayqbG7?V%#U@xP~%FASQmU> zNQL{H5PdIFnqOzWS1@wq8&WA(ty~#=?BJGoTyYF$`SWj2Ewcmnn@jKGV%)FK3X~7M zOJXnSM4%UrW!fdqRR*W3o0 z@kLx-Q6oX9hhvlXz7~UVz3w^(cr%VinvacM^y%})th0~__TFPJ3DBX*MC-QN*pCHY z0rhnt%hu;)4ZERAD`2Oa_%XDEu&>`Ib_I!hkih*tiOfYSc)E6|F^t;}y57EKJ$w$v zTJ|2ir}@1AOO~g%<}6~ZtZ7SB&WTlgsiyew%9_OWXvcy8TXKhp_sm+)CjKSm+(ynq zaq(5T{AN7@#Q8wU8~Dh=qnmaUL4lutd41H;&f8FS;R^Q|^aYq#O#7PTNL<_4hq?8? z((h3L?t`((xQ<*`@a>P07yJ4{1<-pDh%4Q~x!(7=v0^SW`AFK=XVgLhY~uA6>f0B! zI|u2eCIYjM)#JBW%&%c_ooSoJ(DKP45N+vmd_@^XD$BfHj(JROW|$D3nGW*3Z#!E{ zaV9kypx-8#5SWN7jh$W%?Th@DGlZ>1y4JEcvmUH*$^f?bkG6&)Kjr`I8S3ck?IDYE z+WD);AgFl2xBB$^LY%KdKR7)b zR;ZNe;N&EPN`278pQI)aBX+MXfR=I z?Y`~_UyN1F>!8FUW|R+9ZVCGSy9V)!@3lxP>#;7}i{{1pO)!cYD4ieVBXkAn9>T>= z&Cv`ph&L4CvR=z`q3~gB`qaP|1}k4ahq8aqU>60M0POK2X8#6h0$aruU+c!=RrTuw z4_TuLtxWl6xLF8}0!{wcx1-V*G@+E1|Wq@@RgEcRkh8%80l7v@-G(Ow;9y21EN zfP7*uXP&)PTo;?)L$)_}NObPs;+b8$2f)YP@YMe7sV-*bJM$amYmQ?e%O`28(R3mi zIhbL~KRV89*jt`8mRbo3eM2GuKtFkV*T*U|amK%~N~~%Fx%`i3H|3t;mCEn-A@PT+ z1o7N}Lr%61{%_WK?=`#b{^i~3*w&0auJ)+3iFxVnb;_#?i|4=!sDrL|U@NcAL}WTI zKNL=W_!`hDuDRN(vI9}cwI3ZLaRsuxguH5`(N%&lnvnDfWYNvMtOlZosUgvj*J3!m zWOhXcKy5DCSOoj&0I7B&47t8RY*P{*z^E2br;GW=c^{(@T5{-}%FKN2CkT{LgG{{! zVYH9)&S9a%!M9LvlrG8=#Mzw<*Y!WcxN3EMEiJ-TzvVNuBTYMx@5jzmhqRCKf9Jje zzEAxa=ZUwo@mTM+XGiNM!CH*IP5;VhhFjNP^S}>q&Gxq?YB*>4T<0q>6dFJ5Re4LH z^;rOCPk6yb-Hc+;${Gb1omSgA82r4T^6>bTxisoF24gfzhJ``as>xqN2~RPUP74U0dIAEgNg`cF5wRv&|li zY8QZ99O&_Ict3LN3D$k>tu{WlGcfd!rPJy+_sncsAKvAFT&^>pv$Qqt>$9@HqVwzB z_umN$v*h)}=Q$gTiu-z9^a_5==-9AAPX<{p(X{l`ES7(-id4ky_9-7MxB=kM9fL%x39BZa}(1VgbmjrKoL5_8N~ zddw{PMT<3#zJV<+@g@Ld?cGTTTW@pr`*>pB5%cy#zqrrSy~UW<^BzjTjcIUKOha@|eN>0k)l9zjU1ngK=U30W-O4!;opiwDD+|b zl~CS3lJe&HGqZfABnw0%?F+`vh2(aWrA ztSE6mS6N21Ype5$!Ad9j0Yv^={c5N_s>~{6x6^H(OOf<`T5aHs399ESSY$=inZw1u ziqcH`nBI(Iq(ocF&aO)q4MLjv4{DawP0#Ak>{{dM&C~EOR`uHq6fR<-3Q@MfiE4q^ zB3QAz)r~N1zC~-MKW&7@JFLPywHNF2z>?3oooV`hKl8b3P#ygF4nq}>WL zb^Hs3tc6c)tV=lrs?kXwpV-LxQ_k87oeV}kiO~fSb8fiV-j4j^{6fH;sXlP$n_Hz) zBjsApAbW0^9^P@e5dV$zV|rtKqeVWapPjSU2{(U12>0nc;ya|*dB20j4%63aXZt<$ ztZUZX--BUfq1&}=yszuW$m*#%*MoTWe)-Szu@hra_Ud78IH;_LQrV& z1G@fx(uPETehm?<-!N^lci^$tcKeR^Hp9*1_& z43YqinH$9n3+Z%iC+qFS><>iXSQc%?rtT3n>TRK;gy&czPp*`dC`IgP(V|`*p;&=x z;|F4I>zE%&-c&65>1xIr1siKW^oza3OkSM1vm7E*n&Hzwhaxr(X{dv`!o>1R5mcya zjnO8Ynv}Is$L$XQI+C6JK`>`u`_{?)@VO6Qu#=RmM9#KZ>>mPh~q zKmbWZK~ye=x;AHDq|p?LwcG72+O_y|%x1G5dCXn>4hd;>;W^AdwjY_AXPU{peme$-r)$;cWfUxi&k=I$ zJIHY5*zEZ;!zwz>o!l38Fc)=<%?Phw@nsWGki!g(Hq=MHtqx`}>gn0*&ClW^#*{$s zp3cZ|l}GCMMq#YOolsU2p7Fj9*mLZ`a;Ll#0qG85{mgABxO!L47Ac>>(J0@&ZJR@!M|(dC}N&>$u+su$$Ws&W{N! z=DixWTG%>_{9z$SVqu%r_OV2cfsE6!xijoN`yU)Ah}9&s%qNpMs5;E-hzp}kPv@SG zmGrlqHN3&YcjZqUu~M_%mNKnzp(Lk_;y2HJTB*EDmHXFZLs^@Qt~99rS$7WE4d%@Th4SQhk2)z5>EX+zYcxAb>GF52cpkgfnURsyvdc zBw6htDU7XoL`r;M0x|m`x~N_<2X>~TtSEok0#mBjetj1>%K#mu;f|sz>0?S=g+Kq? z#~5Z(mx>k#9wGNNX|4mBtdP}x*PXL<*{ugDcN8$mxEGmM1xtnNuzG{3Dqt!Oe-x+j zJuIAv$Sa+2&19zcp57ylV}C^bm3hP(o(F~0?%sPP-W6MLtLJ}kobJT9W^PZrVL&^Z z##)_uU9rkKVBRn9=W~Vo_q9E%6Y4DY3N1H&v_`7_BG!A9=y0v_ntHZ=Rq5x8zUi8vz&LzT*y%8-i z_jUH;%=Vg$@#A@(qJ*?sAGlvzRUEUv$uJo|(^c6iSamoZSVFd!&+9t7*PKS}>@0W_ zm0W9Gj&nyY%mLTa7ky6c-)mR%mN2y^L*FTbOg2!nIW!Q@(&P8!4ZiR0bH10 z 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