From 0b910ecbb9445beb20e310e5749acccd5c9d1e09 Mon Sep 17 00:00:00 2001 From: w30052067 Date: Wed, 5 Mar 2025 09:20:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EgetResourceId=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: w30052067 --- arkoala-arkts/arkui/src/Application.ts | 5 +- .../src/generated/ArkSystemOpsMaterialized.ts | 17 +++++ .../arkts/ArkUIGeneratedNativeModule.ts | 1 + .../arkui/src/handwritten/resources.ts | 72 +++++++++++++------ .../user/src/ets/pages/collect/collected.ets | 10 +-- .../user/src/ets/pages/detailPage/detail.ets | 2 +- .../user/src/ets/pages/homePage/User.ets | 16 ++--- .../user/src/ets/pages/search/searchPage.ets | 2 +- .../src/generated/arkoala_api_generated.h | 3 + .../native/src/generated/bridge_generated.cc | 13 ++++ .../native/src/generated/dummy_impl.cc | 18 +++++ .../native/src/generated/real_impl.cc | 7 ++ 12 files changed, 124 insertions(+), 42 deletions(-) diff --git a/arkoala-arkts/arkui/src/Application.ts b/arkoala-arkts/arkui/src/Application.ts index 4c611d495..fb15ff2e4 100644 --- a/arkoala-arkts/arkui/src/Application.ts +++ b/arkoala-arkts/arkui/src/Application.ts @@ -81,10 +81,7 @@ export function createUiDetachedRoot( const node = manager.updatableNode(peerFactory(), (context: StateContext) => { const frozen = manager.frozen manager.frozen = true - memoEntry(context, 0, - /** @memo */ - () => WithAppRouter(builder) - ) + memoEntry(context, 0, builder) manager.frozen = frozen }) detachedRoots.set(node.value.peer.ptr, node) diff --git a/arkoala-arkts/arkui/src/generated/ArkSystemOpsMaterialized.ts b/arkoala-arkts/arkui/src/generated/ArkSystemOpsMaterialized.ts index b04c34241..85efbde92 100644 --- a/arkoala-arkts/arkui/src/generated/ArkSystemOpsMaterialized.ts +++ b/arkoala-arkts/arkui/src/generated/ArkSystemOpsMaterialized.ts @@ -57,6 +57,12 @@ export class SystemOps implements MaterializedBase { SystemOps.EndFrame_serialize(root_casted) return } + public static getResourceId(bundleName: string, moduleName: string, params: Array): int32 { + const bundleName_casted = bundleName as (string) + const moduleName_casted = moduleName as (string) + const params_casted = params as (Array) + return SystemOps.getResourceId_serialize(bundleName_casted, moduleName_casted, params_casted) + } private static StartFrame_serialize(): KPointer { const retval = ArkUIGeneratedNativeModule._SystemOps_StartFrame() return retval @@ -64,4 +70,15 @@ export class SystemOps implements MaterializedBase { private static EndFrame_serialize(root: KPointer): void { ArkUIGeneratedNativeModule._SystemOps_EndFrame(root) } + private static getResourceId_serialize(bundleName: string, moduleName: string, params: Array): int32 { + const thisSerializer : Serializer = Serializer.hold() + thisSerializer.writeInt32(params.length as int32) + for (let i = 0; i < params.length; i++) { + const params_element : string = params[i] + thisSerializer.writeString(params_element) + } + const retval = ArkUIGeneratedNativeModule._SystemOps_getResourceId(bundleName, moduleName, thisSerializer.asArray(), thisSerializer.length()) + thisSerializer.release() + return retval + } } diff --git a/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts b/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts index 805d68fbc..fd209ff08 100644 --- a/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts +++ b/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts @@ -1581,6 +1581,7 @@ export class ArkUIGeneratedNativeModule { native static _SystemOps_getFinalizer(): KPointer native static _SystemOps_StartFrame(): KPointer native static _SystemOps_EndFrame(root: KPointer): void + native static _SystemOps_getResourceId(bundleName: KStringPtr, moduleName: KStringPtr, thisArray: KUint8ArrayPtr, thisLength: int32): int32 native static _DrawingCanvas_ctor(pixelmap: KPointer): KPointer native static _DrawingCanvas_getFinalizer(): KPointer native static _DrawingCanvas_drawRect(ptr: KPointer, left: number, top: number, right: number, bottom: number): void diff --git a/arkoala-arkts/arkui/src/handwritten/resources.ts b/arkoala-arkts/arkui/src/handwritten/resources.ts index 44c16b051..c6174280c 100644 --- a/arkoala-arkts/arkui/src/handwritten/resources.ts +++ b/arkoala-arkts/arkui/src/handwritten/resources.ts @@ -1,32 +1,58 @@ import { Resource } from "../generated"; +import { int32 } from "@koalaui/common" +import { ArkUIGeneratedNativeModule } from "#components"; +import { Serializer } from "../generated/peers/Serializer" -export function _r(bundleName: string, moduleName: string, name: string): Resource { - const param: string = name.split(".")[1]; - let res_type = 20000; +class ArkResource implements Resource { + bundleName: string = ""; + moduleName: string = ""; + params?: Array; + type?: number; + _id:number = -1; - switch (param) { - case 'media': - res_type = 20000; - break; - case 'color': - res_type = 10001; - break; - case 'string': - res_type = 10003; - break; - case 'float': - res_type = 10002; - break; + constructor(resourceName: string, bundleName: string, moduleName: string) { + this.bundleName = bundleName; + this.moduleName = moduleName; + this.params = new Array(resourceName); + this._id = -1; + const param: string = resourceName.split(".")[1]; + this.type = 20000; + switch(param) { + case 'media': + this.type = 20000; + break; + case 'color': + this.type = 10001; + break; + case 'string': + this.type = 10003; + break; + case 'float': + this.type = 10002; + break; + } } + set setId(value: number) { + this._id = value; + } - return { - "id": -1, - "type": res_type, - "params": new Array(name), - "bundleName": bundleName, - "moduleName": moduleName - } as Resource + get getId(): number { + if (this._id == -1) { + console.info("wll getId a"); + if (this.params == null || this.params == undefined) { + return this._id; + } + this._id = ArkUIGeneratedNativeModule._SystemOps_getResourceId(this.bundleName, this.moduleName, this.params, this.params.length) + console.info("wll getId b" + this._id); + } + return this._id; + } +} + +export function _r(bundleName: string, moduleName: string, name: string): Resource { + console.info("wll _r a"); + return new ArkResource(name, bundleName, moduleName); } export function _rawfile(bundleName: string, moduleName: string, name: string): Resource { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/collected.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/collected.ets index dde8f2651..f684846d5 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/collected.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/collected.ets @@ -15,7 +15,7 @@ //import mediaquery from '@ohos.mediaquery' //import mediaQuery from '@ohos.mediaquery' -import router from '@ohos.router' +// import router from '@ohos.router' import { NullPage } from './nullPage' import { SinglePage1 } from './singlePage1' import { SinglePage2 } from './singlePage2' @@ -34,9 +34,9 @@ struct CollectedPage { //listener = mediaQuery.matchMediaSync('(orientation:landscape)') onPageShow() { - const params = router.getParams() as SearchParam; // 获取传递过来的参数对象 - this.width1 = params.num - this.ratio = params.ratio + // const params = router.getParams() as SearchParam; // 获取传递过来的参数对象 + // this.width1 = params.num + // this.ratio = params.ratio } aboutToAppear() { @@ -62,7 +62,7 @@ struct CollectedPage { .width(30 * this.ratio) .aspectRatio(1) .onClick((e?: ClickEvent) => { - router.back() + // router.back() }) Text() { Span('我的收藏') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets b/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets index 21c6c5f32..dfae27abb 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets @@ -14,7 +14,7 @@ */ //import mediaQuery from '@ohos.mediaquery'; -import router from '@ohos.router'; +// import router from '@ohos.router'; import { SwiperModel, PhoneTypeModel, ShowImgModel, RecommendDataModel, GoodsInfoModel, ListDataModel } from "../../model/detailModel" import { swiperData, phoneTypeData, showImgData, recommendData, goodsInfoData, listData } from '../../data/detailData' diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets index a75593f0c..9593b1841 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import router from '@ohos.router'; +// import router from '@ohos.router'; import { RecordModel, OrderModel, DiscountModel, ServiceModel } from '../../model/homeModel' import { recordData, orderData, discountData, serviceData } from '../../data/homeData' import { Core2 } from './core2' @@ -105,13 +105,13 @@ export struct User { .fontSize(10 * this.ratio) } .onClick((e?: ClickEvent) => { - router.pushUrl({ - url: item.uri, - params: { - num: this.num, - ratio: this.ratio - } as SearchParam - }) + // router.pushUrl({ + // url: item.uri, + // params: { + // num: this.num, + // ratio: this.ratio + // } as SearchParam + // }) }) }, (item: RecordModel, index: number) => JSON.stringify(item)) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets index 7b0bf6bc7..c7450911f 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets @@ -14,7 +14,7 @@ */ //import mediaQuery from '@ohos.mediaquery'; -import router from '@ohos.router'; +// import router from '@ohos.router'; import { ExampleDataModel, SearchDataModel } from '../../model/searchModel'; import { exampleData, searchData } from '../../data/searchData' import { BaseRouteParam, SearchParam } from '../../model/routeModel' diff --git a/arkoala/framework/native/src/generated/arkoala_api_generated.h b/arkoala/framework/native/src/generated/arkoala_api_generated.h index 720404d32..ff6243081 100644 --- a/arkoala/framework/native/src/generated/arkoala_api_generated.h +++ b/arkoala/framework/native/src/generated/arkoala_api_generated.h @@ -19477,6 +19477,9 @@ typedef struct GENERATED_ArkUISystemOpsAccessor { Ark_NativePointer (*getFinalizer)(); Ark_NativePointer (*StartFrame)(); void (*EndFrame)(Ark_NativePointer root); + Ark_Int32 (*getResourceId)(const Ark_String* bundleName, + const Ark_String* moduleName, + const Array_String* params); } GENERATED_ArkUISystemOpsAccessor; typedef struct GENERATED_ArkUIDrawingCanvasAccessor { diff --git a/arkoala/framework/native/src/generated/bridge_generated.cc b/arkoala/framework/native/src/generated/bridge_generated.cc index 431cf9c30..f234d08ea 100644 --- a/arkoala/framework/native/src/generated/bridge_generated.cc +++ b/arkoala/framework/native/src/generated/bridge_generated.cc @@ -17118,6 +17118,19 @@ void impl_SystemOps_EndFrame(Ark_NativePointer root) { GetAccessors()->getSystemOpsAccessor()->EndFrame(root); } KOALA_INTEROP_V1(SystemOps_EndFrame, Ark_NativePointer) +Ark_Int32 impl_SystemOps_getResourceId(const KStringPtr& bundleName, const KStringPtr& moduleName, uint8_t* thisArray, int32_t thisLength) { + Deserializer thisDeserializer(thisArray, thisLength); + const Ark_Int32 params_value_buf_length = thisDeserializer.readInt32(); + Array_String params_value_buf = {}; + thisDeserializer.resizeArray::type, + std::decay::type>(¶ms_value_buf, params_value_buf_length); + for (int params_value_buf_i = 0; params_value_buf_i < params_value_buf_length; params_value_buf_i++) { + params_value_buf.array[params_value_buf_i] = static_cast(thisDeserializer.readString()); + } + Array_String params_value = params_value_buf;; + return GetAccessors()->getSystemOpsAccessor()->getResourceId((const Ark_String*) (&bundleName), (const Ark_String*) (&moduleName), (const Array_String*)¶ms_value); +} +KOALA_INTEROP_4(SystemOps_getResourceId, Ark_Int32, KStringPtr, KStringPtr, uint8_t*, int32_t) Ark_NativePointer impl_DrawingCanvas_ctor(Ark_NativePointer pixelmap) { return GetAccessors()->getDrawingCanvasAccessor()->ctor(static_cast(pixelmap)); } diff --git a/arkoala/framework/native/src/generated/dummy_impl.cc b/arkoala/framework/native/src/generated/dummy_impl.cc index 9ee749217..811dd71d0 100644 --- a/arkoala/framework/native/src/generated/dummy_impl.cc +++ b/arkoala/framework/native/src/generated/dummy_impl.cc @@ -20355,6 +20355,23 @@ namespace OHOS::Ace::NG::GeneratedModifier { out.append(") \n"); appendGroupedLog(1, out); } + Ark_Int32 GetResourceIdImpl(const Ark_String* bundleName, + const Ark_String* moduleName, + const Array_String* params) + { + if (!needGroupedLog(1)) + return 0; + string out("getResourceId("); + WriteToString(&out, bundleName); + out.append(", "); + WriteToString(&out, moduleName); + out.append(", "); + WriteToString(&out, params); + out.append(") \n"); + out.append("[return 0] \n"); + appendGroupedLog(1, out); + return 0; + } } // SystemOpsAccessor namespace DrawingCanvasAccessor { void DestroyPeerImpl(Ark_DrawingCanvas peer) @@ -34398,6 +34415,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { SystemOpsAccessor::GetFinalizerImpl, SystemOpsAccessor::StartFrameImpl, SystemOpsAccessor::EndFrameImpl, + SystemOpsAccessor::GetResourceIdImpl, }; return &SystemOpsAccessorImpl; } diff --git a/arkoala/framework/native/src/generated/real_impl.cc b/arkoala/framework/native/src/generated/real_impl.cc index 2d9da5d33..20355f58f 100644 --- a/arkoala/framework/native/src/generated/real_impl.cc +++ b/arkoala/framework/native/src/generated/real_impl.cc @@ -10534,6 +10534,12 @@ namespace OHOS::Ace::NG::GeneratedModifier { //auto convValue = Converter::OptConvert(root); // for enums //undefinedModelNG::SetEndFrame(frameNode, convValue); } + Ark_Int32 GetResourceIdImpl(const Ark_String* bundleName, + const Ark_String* moduleName, + const Array_String* params) + { + return {}; + } } // SystemOpsAccessor namespace DrawingCanvasAccessor { void DestroyPeerImpl(Ark_DrawingCanvas peer) @@ -16900,6 +16906,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { SystemOpsAccessor::GetFinalizerImpl, SystemOpsAccessor::StartFrameImpl, SystemOpsAccessor::EndFrameImpl, + SystemOpsAccessor::GetResourceIdImpl, }; return &SystemOpsAccessorImpl; } -- Gitee