diff --git a/arkoala-arkts/arkui/src/LazyForEach.ts b/arkoala-arkts/arkui/src/LazyForEach.ts index 9488d4fb9dd761581615dbc0e75c14aa500f8f8e..e9a1f640bba0893f0598b0f71cb40c4e56d47684 100644 --- a/arkoala-arkts/arkui/src/LazyForEach.ts +++ b/arkoala-arkts/arkui/src/LazyForEach.ts @@ -18,14 +18,108 @@ import { hashCodeFromString, int32 } from "@koalaui/common" import { nullptr, pointer } from "@koalaui/interop"; import { PeerNode } from "./generated/PeerNode"; import { LazyForEachOps } from "./generated/ArkLazyForEachOpsMaterialized" +import { LazyNotificationType } from "./generated/ArkArkui-customInterfaces"; +import { DataChangeListener, DataAddOperation, DataChangeOperation, DataDeleteOperation, DataExchangeOperation, DataMoveOperation, DataOperation, DataOperationType } from "./generated/ArkLazyForEachInterfaces" + + +class InternalListener implements DataChangeListener { + parent: pointer = nullptr; + changeIdx = Number.MAX_SAFE_INTEGER; // Tracks the minimum item index that has changed + + /** + * Notify the change of data to backend + */ + flush(): void { + if (this.changeIdx !== Number.MAX_SAFE_INTEGER) { + // Notify the change with the cached index and count + LazyForEachOps.NotifyChange( + this.parent, + this.changeIdx as int32, + 0, + 0 + ); + } + // Reset the cache after flushing + this.changeIdx = Number.MAX_SAFE_INTEGER; + } + + onDataReloaded(): void { + this.changeIdx = 0; + } + + onDataAdd(index: number): void { + this.changeIdx = Math.min(this.changeIdx, index); + } + + onDataMove(from: number, to: number): void { + this.changeIdx = Math.min(this.changeIdx, Math.min(from, to)); + } + + onDataDelete(index: number): void { + this.changeIdx = Math.min(this.changeIdx, index); + } + + onDataChange(index: number): void { + this.changeIdx = Math.min(this.changeIdx, index); + } + + onDatasetChange(dataOperations: DataOperation[]): void { + // Iterate through each operation and update the cache + for (const operation of dataOperations) { + switch (operation.type) { + case DataOperationType.ADD: { + const addOp = operation as DataAddOperation; + this.changeIdx = Math.min(this.changeIdx, addOp.index); + break; + } + case DataOperationType.DELETE: { + const deleteOp = operation as DataDeleteOperation; + this.changeIdx = Math.min(this.changeIdx, deleteOp.index); + break; + } + case DataOperationType.CHANGE: { + const changeOp = operation as DataChangeOperation; + this.changeIdx = Math.min(this.changeIdx, changeOp.index); + break; + } + case DataOperationType.MOVE: { + const moveOp = operation as DataMoveOperation; + this.changeIdx = Math.min(this.changeIdx, Math.min(moveOp.index.from, moveOp.index.to)); + break; + } + case DataOperationType.EXCHANGE: { + const exchangeOp = operation as DataExchangeOperation; + this.changeIdx = Math.min(this.changeIdx, Math.min(exchangeOp.index.start, exchangeOp.index.end)); + break; + } + case DataOperationType.RELOAD: { + this.changeIdx = 0; + break; + } + } + } + } + + // deprecated + onDataAdded(index: number): void { + throw new Error("Method not implemented."); + } + onDataMoved(from: number, to: number): void { + throw new Error("Method not implemented."); + } + onDataDeleted(index: number): void { + throw new Error("Method not implemented."); + } + onDataChanged(index: number): void { + throw new Error("Method not implemented."); + } +} -// TODO: proper import [DataChangeListener] from lazy_for_each.d.ts -export type DataChangeListener = Object /** * Developers need to implement this interface to provide data to LazyForEach component. * @since 7 */ - export interface IDataSource { +export interface IDataSource { /** * Total data count. * @since 7 @@ -50,11 +144,11 @@ export type DataChangeListener = Object class LazyForEachManager { static isDummy: boolean = false - // Special pointer to mark that more elements needed. + // Special pointer to mark that more elements needed. static specialPointer: pointer = 1 - static OnRangeUpdate(parent: pointer, totalCount: int32, updater: (currentIndex: int32, currentMark: pointer) => void) { + static OnRangeUpdate(parent: pointer, totalCount: int32, updater: (currentIndex: int32, currentMark: pointer, e: int32) => void) { if (LazyForEachManager.isDummy) - scheduleCallback(() => updater(0, LazyForEachManager.specialPointer)) + scheduleCallback(() => updater(0, LazyForEachManager.specialPointer, totalCount - 1)) else LazyForEachOps.OnRangeUpdate(parent, totalCount, updater) } @@ -75,6 +169,11 @@ class LazyForEachManager { if (!LazyForEachManager.isDummy) parent.setInsertMark(mark, moreUp) } + + static Prepare(parent: PeerNode): void { + if (!LazyForEachManager.isDummy) + LazyForEachOps.Prepare(parent.peer.ptr) + } } class VisibleRange { @@ -110,38 +209,67 @@ export function LazyForEach(dataSource: IDataSource, itemGenerator: (item: T, index: number) => void, keyGenerator?: (item: T, index: number) => string, ) { + let listener = remember(() => new InternalListener()) let current = rememberMutableState(-1) let mark = rememberMutableState(nullptr) - let version = rememberMutableState(0) - console.log(`LazyForEach current=${current.value} version=${version.value} mark=${mark.value}`) + let end = rememberMutableState(-1) + let version = rememberMutableState(0) + const rangeMode = true + console.log(`LazyForEach current=${current.value} version=${version.value} mark=${mark.value}`) let parent = contextNode() + listener.parent = parent.peer.ptr const visibleRange = new VisibleRange(parent, current.value, current.value) remember(() => { - LazyForEachManager.OnRangeUpdate(visibleRange.parent, dataSource.totalCount() as int32, (currentIndex: int32, currentMark: pointer) => { - console.log(`LazyForEach[${parent}]: current updated to ${currentIndex} ${currentMark}`) + LazyForEachManager.OnRangeUpdate(visibleRange.parent, dataSource.totalCount() as int32, (currentIndex: int32, currentMark: pointer, e: int32) => { + console.log(`LazyForEach[${parent}]: current updated to ${currentIndex} ${currentMark}, e = ${e}`) + version.value++ + end.value = e current.value = currentIndex mark.value = currentMark - version.value++ }) + dataSource.registerDataChangeListener(listener) }) // Subscribe to version changes. version.value + listener.flush() + let generator = (element: T, index: number): int32 => keyGenerator ? hashCodeFromString(keyGenerator!(element, index)) : index as int32 + + if (rangeMode) { + parent.setInsertMark(nullptr, false) + for (let i = current.value as int32; i <= end.value; i++) { + if (i < 0 || i >= dataSource.totalCount()) break + const element: T = dataSource.getData(i as int32) + memoEntry2( + __context(), + generator(element, i as int32), + (element: T, index: number): void => itemGenerator(element, index), + element, + i as int32 + ) + } + LazyForEachManager.Prepare(parent) // temp: use prepare to map node to index + parent.setInsertMark(nullptr, false) + return + } + let index: number = visibleRange.indexUp as number + + LazyForEachManager.Prepare(parent) LazyForEachManager.SetInsertMark(parent, mark.value, false) - while (true) { + while (true) { console.log(`LazyForEach[${parent}]: index=${index}`) - if (index < 0 || index >= dataSource.totalCount()) break - const element: T = dataSource.getData(index as number) - memoEntry2( - __context(), + if (index < 0 || index >= dataSource.totalCount()) break + const element: T = dataSource.getData(index as number) + memoEntry2( + __context(), generator(element, index), (element: T, index: number): void => { itemGenerator(element, index) }, - element, + element, index - ) + ) let moreUp = visibleRange.needFillUp() if (moreUp && visibleRange.indexUp > 0) { index = --visibleRange.indexUp @@ -152,6 +280,6 @@ export function LazyForEach(dataSource: IDataSource, index = -1 } LazyForEachManager.SetInsertMark(parent, moreUp ? visibleRange.markUp : visibleRange.markDown, moreUp) - } - parent.setInsertMark(nullptr, false) + } + parent.setInsertMark(nullptr, false) } diff --git a/arkoala-arkts/arkui/src/generated/ArkArkui-customInterfaces.ts b/arkoala-arkts/arkui/src/generated/ArkArkui-customInterfaces.ts index 6c1e7a6eb7b3078935800ad1d413988b49e1abd5..434625c8ebe4fe543f24de81fdedc18ea69fc34e 100644 --- a/arkoala-arkts/arkui/src/generated/ArkArkui-customInterfaces.ts +++ b/arkoala-arkts/arkui/src/generated/ArkArkui-customInterfaces.ts @@ -47,4 +47,9 @@ export enum PointerStyle { LOADING = 42, RUNNING = 43 } -export type Callback_RangeUpdate = (index: int32, mark: KPointer) => void; \ No newline at end of file +export type Callback_RangeUpdate = (index: int32, mark: KPointer, end: int32) => void; +export enum LazyNotificationType { + START_CHANGE_POSITION = 0, + END_CHANGE_POSITION = 1, + START_AND_END_CHANGE_POSITION = 2 +} \ No newline at end of file diff --git a/arkoala-arkts/arkui/src/generated/ArkLazyForEachInterfaces.ts b/arkoala-arkts/arkui/src/generated/ArkLazyForEachInterfaces.ts index 226f31ffc861cb20500f01d94e81daceac3e6e09..5e9f4823adf9fa75e003c39b99dabf05e92fe518 100644 --- a/arkoala-arkts/arkui/src/generated/ArkLazyForEachInterfaces.ts +++ b/arkoala-arkts/arkui/src/generated/ArkLazyForEachInterfaces.ts @@ -9,6 +9,20 @@ export enum DataOperationType { CHANGE = "change", RELOAD = "reload" } +export interface DataReloadOperation { + type: DataOperationType +} +export interface DataAddOperation { + type: DataOperationType, + index: number, + count?: number, + key?: string | Array +} +export interface DataChangeOperation { + type: DataOperationType, + index: number, + key?: string +} export interface DataDeleteOperation { type: DataOperationType; index: number; @@ -36,6 +50,21 @@ export interface DataExchangeOperation { index: ExchangeIndex; key?: ExchangeKey; } -export interface DataOperation { - stub: string; +export type DataOperation = + DataAddOperation | DataDeleteOperation | DataChangeOperation | DataMoveOperation | DataExchangeOperation | DataReloadOperation; +// export interface DataOperation { +// stub: string; +// } + +export interface DataChangeListener { + onDataReloaded(): void; + onDataAdded(index: number): void; + onDataAdd(index: number): void; + onDataMoved(from: number, to: number): void; + onDataMove(from: number, to: number): void; + onDataDeleted(index: number): void; + onDataDelete(index: number): void; + onDataChanged(index: number): void; + onDataChange(index: number): void; + onDatasetChange(dataOperations: DataOperation[]): void; } \ No newline at end of file diff --git a/arkoala-arkts/arkui/src/generated/ArkLazyForEachOpsMaterialized.ts b/arkoala-arkts/arkui/src/generated/ArkLazyForEachOpsMaterialized.ts index 651efd58d3601a95a6eb67f55f5cff4a966a650e..ceabeaf60c7e91ab6867449e55371fb0e45ddd4c 100644 --- a/arkoala-arkts/arkui/src/generated/ArkLazyForEachOpsMaterialized.ts +++ b/arkoala-arkts/arkui/src/generated/ArkLazyForEachOpsMaterialized.ts @@ -92,6 +92,14 @@ export class LazyForEachOps implements MaterializedBase { LazyForEachOps.Prepare_serialize(node_casted) return } + static NotifyChange(node: KPointer, changeIdx: int32, count: int32, notificationType: int32): void { + const node_casted = node as (KPointer) + const changeIdx_casted = changeIdx as (int32) + const count_casted = count as (int32) + const notificationType_casted = notificationType as (int32) + LazyForEachOps.NotifyChange_serialize(node_casted, changeIdx_casted, count_casted, notificationType_casted) + return + } private static NeedMoreElements_serialize(node: KPointer, mark: KPointer, direction: int32): KPointer { const retval = ArkUIGeneratedNativeModule._LazyForEachOps_NeedMoreElements(node, mark, direction) return retval @@ -108,6 +116,9 @@ export class LazyForEachOps implements MaterializedBase { private static Prepare_serialize(node: KPointer): void { ArkUIGeneratedNativeModule._LazyForEachOps_Prepare(node) } + private static NotifyChange_serialize(node: KPointer, changeIdx: int32, count: int32, notificationType: int32): void { + ArkUIGeneratedNativeModule._LazyForEachOps_NotifyChange(node, changeIdx, count, notificationType) + } } export class LazyForEachOpsInternal { public static fromPtr(ptr: KPointer): LazyForEachOps { diff --git a/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts b/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts index b3aec229b33187733e983e7fab41e73d397f1a10..4ec41561d270419e3d29508768677c48f1b92163 100644 --- a/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts +++ b/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ts @@ -1548,6 +1548,7 @@ export class ArkUIGeneratedNativeModule { native static _LazyForEachOps_OnRangeUpdate(node: KPointer, totalCount: KInt, thisArray: KUint8ArrayPtr, thisLength: int32): void native static _LazyForEachOps_SetCurrentIndex(node: KPointer, index: KInt): void native static _LazyForEachOps_Prepare(node: KPointer): void + native static _LazyForEachOps_NotifyChange(node: KPointer, changeIdx: KInt, count: KInt, notificationType: KInt): void native static _DrawingCanvas_ctor(thisArray: KUint8ArrayPtr, thisLength: int32): 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/generated/arkts/type_check.ts b/arkoala-arkts/arkui/src/generated/arkts/type_check.ts index fb21a6cb487c15b6f86c0e3a5072a3a593999502..ecccdbcb2ec9c736c17dbde7cebc80efdaaf00d7 100644 --- a/arkoala-arkts/arkui/src/generated/arkts/type_check.ts +++ b/arkoala-arkts/arkui/src/generated/arkts/type_check.ts @@ -7,7 +7,7 @@ import { ICurve } from "./../ArkICurveMaterialized" import { Callback_Number_Void, Callback_Void, Callback_String_Void, Literal_Want_want, Callback_DismissDialogAction_Void, Literal_Number_day_month_year, Type_CalendarInterface_value, Callback_CalendarSelectedDate_Void, Callback_CalendarRequestedData_Void, Callback_Date_Void, Callback_Boolean_Void, Literal_String_anchor_HorizontalAlign_align, Literal_String_anchor_VerticalAlign_align, Literal_TransitionEffect_appear_disappear, Tuple_Number_Number, Callback_DismissContentCoverAction_Void, Type_SheetOptions_detents, Callback_SheetDismiss_Void, Callback_DismissSheetAction_Void, Callback_SpringBackAction_Void, Callback_SheetType_Void, Literal_String_value_Callback_Void_action, Literal_Boolean_isVisible, Literal_ResourceColor_color, Callback_Literal_Boolean_isVisible_Void, Callback_DismissPopupAction_Void, Literal_Number_offset_span, Literal_Union_Number_Literal_Number_offset_span_lg_md_sm_xs, Type_CommonMethod_linearGradient_value, Tuple_ResourceColor_Number, Type_CommonMethod_sweepGradient_value, Tuple_Length_Length, Type_CommonMethod_radialGradient_value, Literal_Alignment_align, Callback_Array_TouchTestInfo_TouchResult, Callback_ClickEvent_Void, Callback_Boolean_HoverEvent_Void, Callback_MouseEvent_Void, Callback_TouchEvent_Void, Callback_KeyEvent_Void, Callback_KeyEvent_Boolean, Callback_Area_Area_Void, Callback_DragEvent_String_Union_CustomBuilder_DragItemInfo, Callback_DragEvent_String_Void, Callback_PreDragStatus_Void, Callback_GestureInfo_BaseGestureEvent_GestureJudgeResult, Callback_TouchEvent_HitTestMode, Literal_Empty, Callback_Number_Number_Void, Literal_String_key_Any_defaultValue, Callback_DatePickerResult_Void, Callback_TerminationInfo_Void, Literal_Number_errcode_String_msg, Callback_FormCallbackInfo_Void, Callback_Literal_Number_errcode_String_msg_Void, Callback_Any_Void, Tuple_Union_ResourceColor_LinearGradient_common_Number, Callback_GestureEvent_Void, Literal_Number_duration_fingers_Boolean_repeat, Literal_Number_distance_fingers_PanDirection_direction, Literal_Number_fingers_speed_SwipeDirection_direction, Literal_Number_distance_fingers, Literal_Number_angle_fingers, Callback_Number_Tuple_Number_Number, Callback_Number_Tuple_Number_Number_Number_Number, Tuple_Number_Number_Number_Number, Literal_Number_offsetRemain, Callback_Number_Number_ComputedBarAttribute, Callback_ItemDragInfo_Number_CustomBuilder, Callback_ItemDragInfo_Void, Callback_ItemDragInfo_Number_Number_Void, Callback_ItemDragInfo_Number_Void, Callback_ItemDragInfo_Number_Number_Boolean_Void, Callback_Number_ScrollState_Literal_Number_offsetRemain, Type_ImageAttribute_onComplete_callback_event, Callback_Type_ImageAttribute_onComplete_callback_event_Void, Callback_Number_Number_Number_Void, Callback_Number_Boolean, Callback_Number_Number_Boolean, Callback_SwipeActionState_Void, Callback_ClickEvent_LocationButtonOnClickResult_Void, Callback_Boolean, Callback_NavDestinationContext_Void, Callback_PopInfo_Void, Tuple_Dimension_Dimension, Callback_NavigationTitleMode_Void, Callback_NavigationMode_Void, Callback_String_Unknown_Void, Type_NavigationAttribute_customNavContentTransition_delegate, Callback_NavigationTransitionProxy_Void, Literal_String_target_NavigationType_type, Callback_Number_Number_PanelMode_Void, Callback_ClickEvent_PasteButtonOnClickResult_Void, Callback_Array_Number_Void, Callback_RefreshStatus_Void, Callback_RichEditorSelection_Void, Callback_RichEditorRange_Void, Callback_RichEditorInsertValue_Boolean, Callback_RichEditorTextSpanResult_Void, Callback_TextRange_Void, Callback_RichEditorDeleteValue_Boolean, Callback_RichEditorChangeValue_Boolean, Callback_CutEvent_Void, Callback_CopyEvent_Void, Callback_ClickEvent_SaveButtonOnClickResult_Void, Literal_Boolean_next_Axis_direction, Callback_InsertValue_Boolean, Callback_InsertValue_Void, Callback_DeleteValue_Boolean, Callback_DeleteValue_Void, Callback_Number_String_Void, Callback_Number_SliderChangeMode_Void, Literal_Number_index, Callback_SwiperContentTransitionProxy_Void, Callback_TabContentTransitionProxy_Void, Callback_EnterKeyType_Void, Callback_String_PasteEvent_Void, Callback_StyledStringChangeValue_Boolean, Callback_String_Number_Void, Type_TextPickerAttribute_onChange_callback, Callback_TextPickerResult_Void, Callback_TimePickerResult_Void, Callback_FullscreenInfo_Void, Callback_PreparedInfo_Void, Callback_PlaybackInfo_Void, Literal_String_script_Callback_String_Void_callback_, Literal_String_baseUrl_data_encoding_historyUrl_mimeType, Literal_Union_String_Resource_url_Array_Header_headers, Literal_Object_object__String_name_Array_String_methodList, Literal_Union_String_WebResourceRequest_data, Literal_Function_handler_Object_error, Literal_Object_detail, Literal_Function_callback__Object_fileSelector, Callback_OnPageEndEvent_Void, Callback_OnPageBeginEvent_Void, Callback_OnProgressChangeEvent_Void, Callback_OnTitleReceiveEvent_Void, Callback_OnGeolocationShowEvent_Void, Callback_OnAlertEvent_Boolean, Callback_OnBeforeUnloadEvent_Boolean, Callback_OnConfirmEvent_Boolean, Callback_OnPromptEvent_Boolean, Callback_OnConsoleEvent_Boolean, Callback_OnErrorReceiveEvent_Void, Callback_OnHttpErrorReceiveEvent_Void, Callback_OnDownloadStartEvent_Void, Callback_OnRefreshAccessedHistoryEvent_Void, Type_WebAttribute_onUrlLoadIntercept_callback, Callback_Literal_Function_handler_Object_error_Void, Callback_OnRenderExitedEvent_Void, Callback_OnShowFileSelectorEvent_Boolean, Callback_Literal_Object_detail_Boolean, Type_WebAttribute_onFileSelectorShow_callback, Callback_OnResourceLoadEvent_Void, Callback_OnScaleChangeEvent_Void, Callback_OnHttpAuthRequestEvent_Boolean, Callback_OnInterceptRequestEvent_WebResourceResponse, Callback_OnPermissionRequestEvent_Void, Callback_OnScreenCaptureRequestEvent_Void, Callback_OnContextMenuShowEvent_Boolean, Callback_OnSearchResultReceiveEvent_Void, Callback_OnScrollEvent_Void, Callback_OnSslErrorEventReceiveEvent_Void, Callback_OnClientAuthenticationEvent_Void, Callback_OnWindowNewEvent_Void, Callback_OnTouchIconUrlReceivedEvent_Void, Callback_OnFaviconReceivedEvent_Void, Callback_OnPageVisibleEvent_Void, Callback_OnDataResubmittedEvent_Void, Callback_OnAudioStateChangedEvent_Void, Callback_OnFirstContentfulPaintEvent_Void, Callback_OnLoadInterceptEvent_Boolean, Callback_OnOverScrollEvent_Void, Callback_NativeEmbedDataInfo_Void, Callback_NativeEmbedTouchInfo_Void, Literal_String_plainText, Callback_Literal_String_plainText_Void, Literal_Number_surfaceHeight_surfaceWidth, Type_XComponentInterface_value, Callback_UIExtensionProxy_Void, Literal_Number_code_Want_want, Callback_Literal_Number_code_Want_want_Void } from "./../SyntheticDeclarations" import { AnimationExtender } from "./../ArkAnimationExtenderMaterialized" import { AnimateParam, UIContext, CommonMethod, DismissReason, Rectangle, BlurStyle, ShadowOptions, ShadowStyle, HoverModeAreaType, CommonConfiguration, ContentModifier, PickerTextStyle, PickerDialogButtonStyle, CustomBuilder, CommonShapeMethod, PointLightStyle, ComponentOptions, InputCounterOptions, TextDecorationOptions, ProvideOptions, AnimatableArithmetic, Context, Configuration, ExpectedFrameRateRange, FinishCallbackType, TouchTestStrategy, MotionPathOptions, sharedTransitionOptions, GeometryTransitionOptions, TransitionHierarchyStrategy, TranslateOptions, ScaleOptions, AlignRuleOption, LocalizedHorizontalAlignParam, LocalizedVerticalAlignParam, LocalizedAlignRuleOptions, ChainStyle, RotateOptions, TransitionOptions, TransitionEdge, TransitionEffects, DrawContext, PreviewParams, ItemDragInfo, EffectType, PreDragStatus, DragItemInfo, EventTarget, SourceType, SourceTool, RepeatMode, BlurStyleActivePolicy, ThemeColorMode, AdaptiveColor, ModalTransition, BackgroundBlurStyleOptions, BlurStyleOptions, ForegroundBlurStyleOptions, BlurOptions, BackgroundEffectOptions, ForegroundEffectOptions, ShadowType, MultiShadowOptions, SafeAreaType, SafeAreaEdge, LayoutSafeAreaType, LayoutSafeAreaEdge, SheetSize, BorderImageOption, LinearGradient_common, TouchObject, HistoricalPoint, DragBehavior, Summary, UniformDataType, DragResult, BlendMode, BlendApplyType, IntentionCode, BindOptions, DismissContentCoverAction, ContentCoverOptions, SheetTitleOptions, SheetType, SheetMode, ScrollSizeMode, SheetKeyboardAvoidMode, SheetDismiss, DismissSheetAction, SpringBackAction, SheetOptions, StateStyles, PopupMessageOptions, DismissPopupAction, PopupOptions, CustomPopupOptions, MenuPreviewMode, ContextMenuAnimationOptions, AnimationRange, ContextMenuOptions, MenuOptions, TouchTestInfo, RectResult, TouchResult, PixelStretchEffectOptions, ClickEffect, FadingEdgeOptions, NestedScrollOptions, MenuElement, SymbolGlyphModifier, OutlineStyle, DragPreviewMode, MenuPolicy, ImageModifier, DragPreviewOptions, DragInteractionOptions, InvertOptions, CircleShape, EllipseShape, PathShape, RectShape, PixelRoundPolicy, VisualEffect, Filter, AccessibilityCallback, MotionBlurOptions, BackgroundBrightnessOptions, GestureRecognizerJudgeBeginCallback, ShouldBuiltInRecognizerParallelWithCallback, SizeChangeCallback, TransitionFinishCallback, LinearGradientBlurOptions, ComponentContent, OverlayOptions, Blender, VisibleAreaChangeCallback, CommonAttribute, CommonInterface, OverlayOffset, FractionStop, MotionBlurAnchor, LayoutBorderInfo, LayoutInfo, LayoutChild, GeometryInfo, SizeResult, Layoutable, Measurable, MeasureResult, NavDestinationInfo, NavigationInfo, RouterPageInfo, Theme, CaretOffset, ContentClipMode, ScrollableCommonMethod, EdgeEffectOptions, ScrollResult, OnWillScrollCallback, OnMoveHandler, LightSource, KeyframeAnimateParam, KeyframeState, Callback, VisibleAreaEventOptions, HoverCallback, UIGestureEvent, SelectionOptions, KeyboardAvoidMode } from "./../ArkCommonInterfaces" -import { PointerStyle, Callback_RangeUpdate } from "./../ArkArkui-customInterfaces" +import { PointerStyle, LazyNotificationType, Callback_RangeUpdate } from "./../ArkArkui-customInterfaces" import { UnifiedData } from "./../ArkUnifiedDataMaterialized" import { LazyForEachOps } from "./../ArkLazyForEachOpsMaterialized" import { DrawingCanvas } from "./../ArkDrawingCanvasMaterialized" @@ -1740,6 +1740,9 @@ export class TypeChecker { static isLazyForEachOps(value: object|string|number|undefined|null): boolean { return value instanceof LazyForEachOps } + static isLazyNotificationType(value: object|string|number|undefined|null): boolean { + return value instanceof LazyNotificationType + } static isLeadingMarginPlaceholder(value: object|string|number|undefined|null, arg0: boolean, arg1: boolean): boolean { return value instanceof LeadingMarginPlaceholder } diff --git a/arkoala-arkts/arkui/src/generated/peers/CallbackDeserializeCall.ts b/arkoala-arkts/arkui/src/generated/peers/CallbackDeserializeCall.ts index 6526327b5c90b99dfad6db67ac9261af89947c2f..d571ecb9fda7980c951a5e3011f6e567ef3ad78f 100644 --- a/arkoala-arkts/arkui/src/generated/peers/CallbackDeserializeCall.ts +++ b/arkoala-arkts/arkui/src/generated/peers/CallbackDeserializeCall.ts @@ -992,7 +992,8 @@ export function deserializeAndCallCallback_RangeUpdate(thisDeserializer: Deseria const _call = (ResourceHolder.instance().get(_resourceId) as Callback_RangeUpdate) let index : int32 = thisDeserializer.readInt32() let mark : KPointer = thisDeserializer.readPointer() - _call(index, mark) + let end : int32 = thisDeserializer.readInt32() + _call(index, mark, end) } export function deserializeAndCallCallback_RefreshStatus_Void(thisDeserializer: Deserializer) { const _resourceId : int32 = thisDeserializer.readInt32() diff --git a/arkoala-arkts/arkui/src/generated/peers/Deserializer.ts b/arkoala-arkts/arkui/src/generated/peers/Deserializer.ts index 4dbed153d028e85d94b553309b78d721b1629739..6aeeaf3681e3f99fd360a2ee1d4eb8add00890dd 100644 --- a/arkoala-arkts/arkui/src/generated/peers/Deserializer.ts +++ b/arkoala-arkts/arkui/src/generated/peers/Deserializer.ts @@ -11868,7 +11868,7 @@ export class Deserializer extends DeserializerBase { const _resource : CallbackResource = this.readCallbackResource() const _call : KPointer = this.readPointer() const _callSync : KPointer = this.readPointer() - return (index: int32, mark: KPointer):void => { const _argsSerializer : Serializer = Serializer.hold(); _argsSerializer.writeInt32(_resource.resourceId); _argsSerializer.writePointer(_call); _argsSerializer.writePointer(_callSync); _argsSerializer.writeInt32(index); _argsSerializer.writePointer(mark); (isSync) ? (InteropNativeModule._CallCallbackSync(797834474, _argsSerializer.asArray(), _argsSerializer.length())) : (InteropNativeModule._CallCallback(797834474, _argsSerializer.asArray(), _argsSerializer.length())); _argsSerializer.release(); return; } + return (index: int32, mark: KPointer, end: int32):void => { const _argsSerializer : Serializer = Serializer.hold(); _argsSerializer.writeInt32(_resource.resourceId); _argsSerializer.writePointer(_call); _argsSerializer.writePointer(_callSync); _argsSerializer.writeInt32(index); _argsSerializer.writePointer(mark); _argsSerializer.writeInt32(end); (isSync) ? (InteropNativeModule._CallCallbackSync(797834474, _argsSerializer.asArray(), _argsSerializer.length())) : (InteropNativeModule._CallCallback(797834474, _argsSerializer.asArray(), _argsSerializer.length())); _argsSerializer.release(); return; } } readDoubleAnimationParam(): DoubleAnimationParam { let valueDeserializer : Deserializer = this diff --git a/arkoala-arkts/arkui/src/generated/ts/type_check.ts b/arkoala-arkts/arkui/src/generated/ts/type_check.ts index c78e8ce4d8690ace9f62c58c72533d60e49dc5e3..b506869e5e37d1fad719b4d24b78217c8cf244c2 100644 --- a/arkoala-arkts/arkui/src/generated/ts/type_check.ts +++ b/arkoala-arkts/arkui/src/generated/ts/type_check.ts @@ -7,7 +7,7 @@ import { ICurve } from "./../ArkICurveMaterialized" import { Callback_Number_Void, Callback_Void, Callback_String_Void, Literal_Want_want, Callback_DismissDialogAction_Void, Literal_Number_day_month_year, Type_CalendarInterface_value, Callback_CalendarSelectedDate_Void, Callback_CalendarRequestedData_Void, Callback_Date_Void, Callback_Boolean_Void, Literal_String_anchor_HorizontalAlign_align, Literal_String_anchor_VerticalAlign_align, Literal_TransitionEffect_appear_disappear, Tuple_Number_Number, Callback_DismissContentCoverAction_Void, Type_SheetOptions_detents, Callback_SheetDismiss_Void, Callback_DismissSheetAction_Void, Callback_SpringBackAction_Void, Callback_SheetType_Void, Literal_String_value_Callback_Void_action, Literal_Boolean_isVisible, Literal_ResourceColor_color, Callback_Literal_Boolean_isVisible_Void, Callback_DismissPopupAction_Void, Literal_Number_offset_span, Literal_Union_Number_Literal_Number_offset_span_lg_md_sm_xs, Type_CommonMethod_linearGradient_value, Tuple_ResourceColor_Number, Type_CommonMethod_sweepGradient_value, Tuple_Length_Length, Type_CommonMethod_radialGradient_value, Literal_Alignment_align, Callback_Array_TouchTestInfo_TouchResult, Callback_ClickEvent_Void, Callback_Boolean_HoverEvent_Void, Callback_MouseEvent_Void, Callback_TouchEvent_Void, Callback_KeyEvent_Void, Callback_KeyEvent_Boolean, Callback_Area_Area_Void, Callback_DragEvent_String_Union_CustomBuilder_DragItemInfo, Callback_DragEvent_String_Void, Callback_PreDragStatus_Void, Callback_GestureInfo_BaseGestureEvent_GestureJudgeResult, Callback_TouchEvent_HitTestMode, Literal_Empty, Callback_Number_Number_Void, Literal_String_key_Any_defaultValue, Callback_DatePickerResult_Void, Callback_TerminationInfo_Void, Literal_Number_errcode_String_msg, Callback_FormCallbackInfo_Void, Callback_Literal_Number_errcode_String_msg_Void, Callback_Any_Void, Tuple_Union_ResourceColor_LinearGradient_common_Number, Callback_GestureEvent_Void, Literal_Number_duration_fingers_Boolean_repeat, Literal_Number_distance_fingers_PanDirection_direction, Literal_Number_fingers_speed_SwipeDirection_direction, Literal_Number_distance_fingers, Literal_Number_angle_fingers, Callback_Number_Tuple_Number_Number, Callback_Number_Tuple_Number_Number_Number_Number, Tuple_Number_Number_Number_Number, Literal_Number_offsetRemain, Callback_Number_Number_ComputedBarAttribute, Callback_ItemDragInfo_Number_CustomBuilder, Callback_ItemDragInfo_Void, Callback_ItemDragInfo_Number_Number_Void, Callback_ItemDragInfo_Number_Void, Callback_ItemDragInfo_Number_Number_Boolean_Void, Callback_Number_ScrollState_Literal_Number_offsetRemain, Type_ImageAttribute_onComplete_callback_event, Callback_Type_ImageAttribute_onComplete_callback_event_Void, Callback_Number_Number_Number_Void, Callback_Number_Boolean, Callback_Number_Number_Boolean, Callback_SwipeActionState_Void, Callback_ClickEvent_LocationButtonOnClickResult_Void, Callback_Boolean, Callback_NavDestinationContext_Void, Callback_PopInfo_Void, Tuple_Dimension_Dimension, Callback_NavigationTitleMode_Void, Callback_NavigationMode_Void, Callback_String_Unknown_Void, Type_NavigationAttribute_customNavContentTransition_delegate, Callback_NavigationTransitionProxy_Void, Literal_String_target_NavigationType_type, Callback_Number_Number_PanelMode_Void, Callback_ClickEvent_PasteButtonOnClickResult_Void, Callback_Array_Number_Void, Callback_RefreshStatus_Void, Callback_RichEditorSelection_Void, Callback_RichEditorRange_Void, Callback_RichEditorInsertValue_Boolean, Callback_RichEditorTextSpanResult_Void, Callback_TextRange_Void, Callback_RichEditorDeleteValue_Boolean, Callback_RichEditorChangeValue_Boolean, Callback_CutEvent_Void, Callback_CopyEvent_Void, Callback_ClickEvent_SaveButtonOnClickResult_Void, Literal_Boolean_next_Axis_direction, Callback_InsertValue_Boolean, Callback_InsertValue_Void, Callback_DeleteValue_Boolean, Callback_DeleteValue_Void, Callback_Number_String_Void, Callback_Number_SliderChangeMode_Void, Literal_Number_index, Callback_SwiperContentTransitionProxy_Void, Callback_TabContentTransitionProxy_Void, Callback_EnterKeyType_Void, Callback_String_PasteEvent_Void, Callback_StyledStringChangeValue_Boolean, Callback_String_Number_Void, Type_TextPickerAttribute_onChange_callback, Callback_TextPickerResult_Void, Callback_TimePickerResult_Void, Callback_FullscreenInfo_Void, Callback_PreparedInfo_Void, Callback_PlaybackInfo_Void, Literal_String_script_Callback_String_Void_callback_, Literal_String_baseUrl_data_encoding_historyUrl_mimeType, Literal_Union_String_Resource_url_Array_Header_headers, Literal_Object_object__String_name_Array_String_methodList, Literal_Union_String_WebResourceRequest_data, Literal_Function_handler_Object_error, Literal_Object_detail, Literal_Function_callback__Object_fileSelector, Callback_OnPageEndEvent_Void, Callback_OnPageBeginEvent_Void, Callback_OnProgressChangeEvent_Void, Callback_OnTitleReceiveEvent_Void, Callback_OnGeolocationShowEvent_Void, Callback_OnAlertEvent_Boolean, Callback_OnBeforeUnloadEvent_Boolean, Callback_OnConfirmEvent_Boolean, Callback_OnPromptEvent_Boolean, Callback_OnConsoleEvent_Boolean, Callback_OnErrorReceiveEvent_Void, Callback_OnHttpErrorReceiveEvent_Void, Callback_OnDownloadStartEvent_Void, Callback_OnRefreshAccessedHistoryEvent_Void, Type_WebAttribute_onUrlLoadIntercept_callback, Callback_Literal_Function_handler_Object_error_Void, Callback_OnRenderExitedEvent_Void, Callback_OnShowFileSelectorEvent_Boolean, Callback_Literal_Object_detail_Boolean, Type_WebAttribute_onFileSelectorShow_callback, Callback_OnResourceLoadEvent_Void, Callback_OnScaleChangeEvent_Void, Callback_OnHttpAuthRequestEvent_Boolean, Callback_OnInterceptRequestEvent_WebResourceResponse, Callback_OnPermissionRequestEvent_Void, Callback_OnScreenCaptureRequestEvent_Void, Callback_OnContextMenuShowEvent_Boolean, Callback_OnSearchResultReceiveEvent_Void, Callback_OnScrollEvent_Void, Callback_OnSslErrorEventReceiveEvent_Void, Callback_OnClientAuthenticationEvent_Void, Callback_OnWindowNewEvent_Void, Callback_OnTouchIconUrlReceivedEvent_Void, Callback_OnFaviconReceivedEvent_Void, Callback_OnPageVisibleEvent_Void, Callback_OnDataResubmittedEvent_Void, Callback_OnAudioStateChangedEvent_Void, Callback_OnFirstContentfulPaintEvent_Void, Callback_OnLoadInterceptEvent_Boolean, Callback_OnOverScrollEvent_Void, Callback_NativeEmbedDataInfo_Void, Callback_NativeEmbedTouchInfo_Void, Literal_String_plainText, Callback_Literal_String_plainText_Void, Literal_Number_surfaceHeight_surfaceWidth, Type_XComponentInterface_value, Callback_UIExtensionProxy_Void, Literal_Number_code_Want_want, Callback_Literal_Number_code_Want_want_Void } from "./../SyntheticDeclarations" import { AnimationExtender } from "./../ArkAnimationExtenderMaterialized" import { AnimateParam, UIContext, CommonMethod, DismissReason, Rectangle, BlurStyle, ShadowOptions, ShadowStyle, HoverModeAreaType, CommonConfiguration, ContentModifier, PickerTextStyle, PickerDialogButtonStyle, CustomBuilder, CommonShapeMethod, PointLightStyle, ComponentOptions, InputCounterOptions, TextDecorationOptions, ProvideOptions, AnimatableArithmetic, Context, Configuration, ExpectedFrameRateRange, FinishCallbackType, TouchTestStrategy, MotionPathOptions, sharedTransitionOptions, GeometryTransitionOptions, TransitionHierarchyStrategy, TranslateOptions, ScaleOptions, AlignRuleOption, LocalizedHorizontalAlignParam, LocalizedVerticalAlignParam, LocalizedAlignRuleOptions, ChainStyle, RotateOptions, TransitionOptions, TransitionEdge, TransitionEffects, DrawContext, PreviewParams, ItemDragInfo, EffectType, PreDragStatus, DragItemInfo, EventTarget, SourceType, SourceTool, RepeatMode, BlurStyleActivePolicy, ThemeColorMode, AdaptiveColor, ModalTransition, BackgroundBlurStyleOptions, BlurStyleOptions, ForegroundBlurStyleOptions, BlurOptions, BackgroundEffectOptions, ForegroundEffectOptions, ShadowType, MultiShadowOptions, SafeAreaType, SafeAreaEdge, LayoutSafeAreaType, LayoutSafeAreaEdge, SheetSize, BorderImageOption, LinearGradient_common, TouchObject, HistoricalPoint, DragBehavior, Summary, UniformDataType, DragResult, BlendMode, BlendApplyType, IntentionCode, BindOptions, DismissContentCoverAction, ContentCoverOptions, SheetTitleOptions, SheetType, SheetMode, ScrollSizeMode, SheetKeyboardAvoidMode, SheetDismiss, DismissSheetAction, SpringBackAction, SheetOptions, StateStyles, PopupMessageOptions, DismissPopupAction, PopupOptions, CustomPopupOptions, MenuPreviewMode, ContextMenuAnimationOptions, AnimationRange, ContextMenuOptions, MenuOptions, TouchTestInfo, RectResult, TouchResult, PixelStretchEffectOptions, ClickEffect, FadingEdgeOptions, NestedScrollOptions, MenuElement, SymbolGlyphModifier, OutlineStyle, DragPreviewMode, MenuPolicy, ImageModifier, DragPreviewOptions, DragInteractionOptions, InvertOptions, CircleShape, EllipseShape, PathShape, RectShape, PixelRoundPolicy, VisualEffect, Filter, AccessibilityCallback, MotionBlurOptions, BackgroundBrightnessOptions, GestureRecognizerJudgeBeginCallback, ShouldBuiltInRecognizerParallelWithCallback, SizeChangeCallback, TransitionFinishCallback, LinearGradientBlurOptions, ComponentContent, OverlayOptions, Blender, VisibleAreaChangeCallback, CommonAttribute, CommonInterface, OverlayOffset, FractionStop, MotionBlurAnchor, LayoutBorderInfo, LayoutInfo, LayoutChild, GeometryInfo, SizeResult, Layoutable, Measurable, MeasureResult, NavDestinationInfo, NavigationInfo, RouterPageInfo, Theme, CaretOffset, ContentClipMode, ScrollableCommonMethod, EdgeEffectOptions, ScrollResult, OnWillScrollCallback, OnMoveHandler, LightSource, KeyframeAnimateParam, KeyframeState, Callback, VisibleAreaEventOptions, HoverCallback, UIGestureEvent, SelectionOptions, KeyboardAvoidMode } from "./../ArkCommonInterfaces" -import { PointerStyle, Callback_RangeUpdate } from "./../ArkArkui-customInterfaces" +import { PointerStyle, LazyNotificationType, Callback_RangeUpdate } from "./../ArkArkui-customInterfaces" import { UnifiedData } from "./../ArkUnifiedDataMaterialized" import { LazyForEachOps } from "./../ArkLazyForEachOpsMaterialized" import { DrawingCanvas } from "./../ArkDrawingCanvasMaterialized" @@ -7820,6 +7820,20 @@ export class TypeChecker { static isLazyForEachOps(value: object|string|number|undefined|null|boolean): boolean { throw new Error("Can not discriminate value typeof LazyForEachOps") } + static isLazyNotificationType(value: object|string|number|undefined|null|boolean): boolean { + if (((value) === (LazyNotificationType.START_CHANGE_POSITION))) { + return true + } + else if (((value) === (LazyNotificationType.END_CHANGE_POSITION))) { + return true + } + else if (((value) === (LazyNotificationType.START_AND_END_CHANGE_POSITION))) { + return true + } + else { + throw new Error("Can not discriminate value typeof LazyNotificationType") + } + } static isLeadingMarginPlaceholder(value: object|string|number|undefined|null|boolean, duplicated_pixelMap: boolean, duplicated_size: boolean): boolean { if ((!duplicated_pixelMap) && (value?.hasOwnProperty("pixelMap"))) { return true diff --git a/arkoala-arkts/arkui/types/index-full.d.ts b/arkoala-arkts/arkui/types/index-full.d.ts index 6e16050b08e81e88fedd72448115d9caf5d78703..31c5ee212c2b1a67c3c3662e454fdd79f0806c45 100644 --- a/arkoala-arkts/arkui/types/index-full.d.ts +++ b/arkoala-arkts/arkui/types/index-full.d.ts @@ -246,12 +246,18 @@ declare class UnifiedData { hasType(UnifiedData_type: string): boolean; getTypes(): string[]; } -declare type Callback_RangeUpdate = ((index: number, mark: number|bigint) => void); +declare type Callback_RangeUpdate = ((index: number, mark: number|bigint, end: number) => void); +declare enum LazyNotificationType { + START_CHANGE_POSITION = 0, + END_CHANGE_POSITION = 1, + START_AND_END_CHANGE_POSITION = 2, +} declare class LazyForEachOps { static NeedMoreElements(node: number|bigint, mark: number|bigint, direction: number): number|bigint; static OnRangeUpdate(node: number|bigint, totalCount: number, updater: Callback_RangeUpdate): void; static SetCurrentIndex(node: number|bigint, index: number): void; static Prepare(node: number|bigint): void; + static NotifyChange(node: number|bigint, changeIdx: number, count: number, notificationType: number): void; } declare class DrawingCanvas { constructor(pixelmap: PixelMap); diff --git a/arkoala/framework/native/src/generated/Serializers.h b/arkoala/framework/native/src/generated/Serializers.h index 3bdacecf7612e11330f31bf617700d43eda2ea35..fecd3035ff0486ef78cb36a138db3f478e8e5611 100644 --- a/arkoala/framework/native/src/generated/Serializers.h +++ b/arkoala/framework/native/src/generated/Serializers.h @@ -48304,6 +48304,35 @@ inline Ark_RuntimeType runtimeType(const Opt_Literal_Want_want& value) return (value.tag != INTEROP_TAG_UNDEFINED) ? (INTEROP_RUNTIME_OBJECT) : (INTEROP_RUNTIME_UNDEFINED); } template <> +inline Ark_RuntimeType runtimeType(const Ark_LazyNotificationType& value) +{ + return INTEROP_RUNTIME_NUMBER; +} +template <> +inline void WriteToString(std::string* result, const Ark_LazyNotificationType value) { + result->append("Ark_LazyNotificationType("); + WriteToString(result, (Ark_Int32) value); + result->append(")"); +} +template <> +inline void WriteToString(std::string* result, const Opt_LazyNotificationType* value) { + result->append("{.tag="); + result->append(tagNameExact((Ark_Tag)(value->tag))); + result->append(", .value="); + if (value->tag != INTEROP_TAG_UNDEFINED) { + WriteToString(result, value->value); + } else { + Ark_Undefined undefined = { 0 }; + WriteToString(result, undefined); + } + result->append("}"); +} +template <> +inline Ark_RuntimeType runtimeType(const Opt_LazyNotificationType& value) +{ + return (value.tag != INTEROP_TAG_UNDEFINED) ? (INTEROP_RUNTIME_OBJECT) : (INTEROP_RUNTIME_UNDEFINED); +} +template <> inline Ark_RuntimeType runtimeType(const Ark_NativePointer& value) { return INTEROP_RUNTIME_OBJECT; diff --git a/arkoala/framework/native/src/generated/arkoala_api_generated.h b/arkoala/framework/native/src/generated/arkoala_api_generated.h index 33f3312bf6adc71892a9d92004bd8af35e3df7ee..40a9aad0791ef13e85df6587a963af9712eb1964 100644 --- a/arkoala/framework/native/src/generated/arkoala_api_generated.h +++ b/arkoala/framework/native/src/generated/arkoala_api_generated.h @@ -5128,6 +5128,15 @@ typedef struct Opt_AnimationStatus { Ark_Tag tag; Ark_AnimationStatus value; } Opt_AnimationStatus; +typedef enum Ark_LazyNotificationType { + ARK_LAZY_NOTIFICATION_TYPE_START_CHANGE_POSITION = 0, + ARK_LAZY_NOTIFICATION_TYPE_END_CHANGE_POSITION = 1, + ARK_LAZY_NOTIFICATION_TYPE_START_AND_END_CHANGE_POSITION = 2, +} Ark_LazyNotificationType; +typedef struct Opt_LazyNotificationType { + Ark_Tag tag; + Ark_LazyNotificationType value; +} Opt_LazyNotificationType; typedef struct Opt_Int32 { Ark_Tag tag; Ark_Int32 value; @@ -9739,8 +9748,8 @@ typedef struct Opt_ClickEvent { } Opt_ClickEvent; typedef struct Callback_RangeUpdate { Ark_CallbackResource resource; - void (*call)(const Ark_Int32 resourceId, const Ark_Int32 index, const Ark_NativePointer mark); - void (*callSync)(Ark_VMContext context, const Ark_Int32 resourceId, const Ark_Int32 index, const Ark_NativePointer mark); + void (*call)(const Ark_Int32 resourceId, const Ark_Int32 index, const Ark_NativePointer mark, const Ark_Int32 end); + void (*callSync)(Ark_VMContext context, const Ark_Int32 resourceId, const Ark_Int32 index, const Ark_NativePointer mark, const Ark_Int32 end); } Callback_RangeUpdate; typedef struct Opt_Callback_RangeUpdate { Ark_Tag tag; @@ -18350,6 +18359,10 @@ typedef struct GENERATED_ArkUILazyForEachOpsAccessor { void (*SetCurrentIndex)(Ark_NativePointer node, Ark_Int32 index); void (*Prepare)(Ark_NativePointer node); + void (*NotifyChange)(Ark_NativePointer node, + Ark_Int32 changeIdx, + Ark_Int32 count, + Ark_Int32 notificationType); } GENERATED_ArkUILazyForEachOpsAccessor; typedef struct DrawingCanvasPeer DrawingCanvasPeer; diff --git a/arkoala/framework/native/src/generated/bridge_generated.cc b/arkoala/framework/native/src/generated/bridge_generated.cc index bc9478f42b970402691b4c95ef81dc17a9e94d4c..34bdfb9509341025b4704ae30b85375cbc607e93 100644 --- a/arkoala/framework/native/src/generated/bridge_generated.cc +++ b/arkoala/framework/native/src/generated/bridge_generated.cc @@ -18517,7 +18517,7 @@ KOALA_INTEROP_3(LazyForEachOps_NeedMoreElements, Ark_NativePointer, Ark_NativePo void impl_LazyForEachOps_OnRangeUpdate(Ark_NativePointer node, Ark_Int32 totalCount, uint8_t* thisArray, int32_t thisLength) { Deserializer thisDeserializer(thisArray, thisLength); - Callback_RangeUpdate updater_value = {thisDeserializer.readCallbackResource(), reinterpret_cast(thisDeserializer.readPointerOrDefault(reinterpret_cast(getManagedCallbackCaller(Kind_Callback_RangeUpdate)))), reinterpret_cast(thisDeserializer.readPointerOrDefault(reinterpret_cast(getManagedCallbackCallerSync(Kind_Callback_RangeUpdate))))};; + Callback_RangeUpdate updater_value = {thisDeserializer.readCallbackResource(), reinterpret_cast(thisDeserializer.readPointerOrDefault(reinterpret_cast(getManagedCallbackCaller(Kind_Callback_RangeUpdate)))), reinterpret_cast(thisDeserializer.readPointerOrDefault(reinterpret_cast(getManagedCallbackCallerSync(Kind_Callback_RangeUpdate))))};; GetAccessors()->getLazyForEachOpsAccessor()->OnRangeUpdate(node, totalCount, (const Callback_RangeUpdate*)&updater_value); } KOALA_INTEROP_V4(LazyForEachOps_OnRangeUpdate, Ark_NativePointer, Ark_Int32, uint8_t*, int32_t) @@ -18531,6 +18531,11 @@ void impl_LazyForEachOps_Prepare(Ark_NativePointer node) { GetAccessors()->getLazyForEachOpsAccessor()->Prepare(node); } KOALA_INTEROP_V1(LazyForEachOps_Prepare, Ark_NativePointer) + +void impl_LazyForEachOps_NotifyChange(Ark_NativePointer node, Ark_Int32 changeIdx, Ark_Int32 count, Ark_Int32 notificationType) { + GetAccessors()->getLazyForEachOpsAccessor()->NotifyChange(node, changeIdx, count, notificationType); +} +KOALA_INTEROP_V4(LazyForEachOps_NotifyChange, Ark_NativePointer, Ark_Int32, Ark_Int32, Ark_Int32) Ark_NativePointer impl_DrawingCanvas_ctor(uint8_t* thisArray, int32_t thisLength) { Deserializer thisDeserializer(thisArray, thisLength); diff --git a/arkoala/framework/native/src/generated/callback_deserialize_call.cc b/arkoala/framework/native/src/generated/callback_deserialize_call.cc index 57ffa5fb02106c14a43953966fad4dc61d0e8592..2c9a04d2817635f8e3c9067cc609b67f76204ad1 100644 --- a/arkoala/framework/native/src/generated/callback_deserialize_call.cc +++ b/arkoala/framework/native/src/generated/callback_deserialize_call.cc @@ -2550,21 +2550,23 @@ void deserializeAndCallCallback_RangeUpdate(uint8_t* thisArray, Ark_Int32 thisLe { Deserializer thisDeserializer = Deserializer(thisArray, thisLength); const Ark_Int32 _resourceId = thisDeserializer.readInt32(); - const auto _call = reinterpret_cast(thisDeserializer.readPointer()); + const auto _call = reinterpret_cast(thisDeserializer.readPointer()); thisDeserializer.readPointer(); Ark_Int32 index = thisDeserializer.readInt32(); Ark_NativePointer mark = thisDeserializer.readPointer(); - _call(_resourceId, index, mark); + Ark_Int32 end = thisDeserializer.readInt32(); + _call(_resourceId, index, mark, end); } void deserializeAndCallSyncCallback_RangeUpdate(Ark_VMContext vmContext, uint8_t* thisArray, Ark_Int32 thisLength) { Deserializer thisDeserializer = Deserializer(thisArray, thisLength); const Ark_Int32 _resourceId = thisDeserializer.readInt32(); thisDeserializer.readPointer(); - const auto _callSync = reinterpret_cast(thisDeserializer.readPointer()); + const auto _callSync = reinterpret_cast(thisDeserializer.readPointer()); Ark_Int32 index = thisDeserializer.readInt32(); Ark_NativePointer mark = thisDeserializer.readPointer(); - _callSync(vmContext, _resourceId, index, mark); + Ark_Int32 end = thisDeserializer.readInt32(); + _callSync(vmContext, _resourceId, index, mark, end); } void deserializeAndCallCallback_RefreshStatus_Void(uint8_t* thisArray, Ark_Int32 thisLength) { diff --git a/arkoala/framework/native/src/generated/callback_managed_caller.cc b/arkoala/framework/native/src/generated/callback_managed_caller.cc index e606ee7b1c3f0135ef159f73703e57e22b555b4b..9c2fd3a7647f5e050140577a74318281632fe5e1 100644 --- a/arkoala/framework/native/src/generated/callback_managed_caller.cc +++ b/arkoala/framework/native/src/generated/callback_managed_caller.cc @@ -2834,7 +2834,7 @@ void callManagedCallback_PreparedInfo_VoidSync(Ark_VMContext vmContext, Ark_Int3 argsSerializer.writePreparedInfo(parameter); KOALA_INTEROP_CALL_VOID(vmContext, 1, sizeof(__buffer), __buffer); } -void callManagedCallback_RangeUpdate(Ark_Int32 resourceId, Ark_Int32 index, Ark_NativePointer mark) +void callManagedCallback_RangeUpdate(Ark_Int32 resourceId, Ark_Int32 index, Ark_NativePointer mark, Ark_Int32 end) { CallbackBuffer __buffer = {{}, {}}; const Ark_CallbackResource __callbackResource = {resourceId, holdManagedCallbackResource, releaseManagedCallbackResource}; @@ -2844,9 +2844,10 @@ void callManagedCallback_RangeUpdate(Ark_Int32 resourceId, Ark_Int32 index, Ark_ argsSerializer.writeInt32(resourceId); argsSerializer.writeInt32(index); argsSerializer.writePointer(mark); + argsSerializer.writeInt32(end); enqueueArkoalaCallback(&__buffer); } -void callManagedCallback_RangeUpdateSync(Ark_VMContext vmContext, Ark_Int32 resourceId, Ark_Int32 index, Ark_NativePointer mark) +void callManagedCallback_RangeUpdateSync(Ark_VMContext vmContext, Ark_Int32 resourceId, Ark_Int32 index, Ark_NativePointer mark, Ark_Int32 end) { uint8_t __buffer[60 * 4]; Serializer argsSerializer = Serializer(__buffer, sizeof(__buffer), nullptr); @@ -2854,6 +2855,7 @@ void callManagedCallback_RangeUpdateSync(Ark_VMContext vmContext, Ark_Int32 reso argsSerializer.writeInt32(resourceId); argsSerializer.writeInt32(index); argsSerializer.writePointer(mark); + argsSerializer.writeInt32(end); KOALA_INTEROP_CALL_VOID(vmContext, 1, sizeof(__buffer), __buffer); } void callManagedCallback_RefreshStatus_Void(Ark_Int32 resourceId, Ark_RefreshStatus state) diff --git a/arkoala/framework/native/src/generated/dummy_impl.cc b/arkoala/framework/native/src/generated/dummy_impl.cc index 8780d02b760976191cee75ee590b2e911aeffbe8..1076fe82bf1107126d3385353e5042ca53dade3b 100644 --- a/arkoala/framework/native/src/generated/dummy_impl.cc +++ b/arkoala/framework/native/src/generated/dummy_impl.cc @@ -19985,6 +19985,24 @@ namespace OHOS::Ace::NG::GeneratedModifier { out.append(") \n"); appendGroupedLog(1, out); } + void NotifyChangeImpl(Ark_NativePointer node, + Ark_Int32 changeIdx, + Ark_Int32 count, + Ark_Int32 notificationType) + { + if (!needGroupedLog(1)) + return; + string out("NotifyChange("); + WriteToString(&out, node); + out.append(", "); + WriteToString(&out, changeIdx); + out.append(", "); + WriteToString(&out, count); + out.append(", "); + WriteToString(&out, notificationType); + out.append(") \n"); + appendGroupedLog(1, out); + } } // LazyForEachOpsAccessor namespace DrawingCanvasAccessor { void DestroyPeerImpl(DrawingCanvasPeer* peer) @@ -31131,6 +31149,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { LazyForEachOpsAccessor::OnRangeUpdateImpl, LazyForEachOpsAccessor::SetCurrentIndexImpl, LazyForEachOpsAccessor::PrepareImpl, + LazyForEachOpsAccessor::NotifyChangeImpl, }; return &LazyForEachOpsAccessorImpl; } diff --git a/arkoala/framework/native/src/generated/real_impl.cc b/arkoala/framework/native/src/generated/real_impl.cc index 6ef6151a7a2df5906fc6010349a2f88fa1743a61..d7fd945dafee497376a1d81318332cdd64bdcd08 100644 --- a/arkoala/framework/native/src/generated/real_impl.cc +++ b/arkoala/framework/native/src/generated/real_impl.cc @@ -10287,6 +10287,17 @@ namespace OHOS::Ace::NG::GeneratedModifier { //auto convValue = Converter::OptConvert(node); // for enums //undefinedModelNG::SetPrepare(frameNode, convValue); } + void NotifyChangeImpl(Ark_NativePointer node, + Ark_Int32 changeIdx, + Ark_Int32 count, + Ark_Int32 notificationType) + { + auto frameNode = reinterpret_cast(node); + CHECK_NULL_VOID(frameNode); + //auto convValue = Converter::Convert(node); + //auto convValue = Converter::OptConvert(node); // for enums + //undefinedModelNG::SetNotifyChange(frameNode, convValue); + } } // LazyForEachOpsAccessor namespace DrawingCanvasAccessor { void DestroyPeerImpl(DrawingCanvasPeer* peer) @@ -15275,6 +15286,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { LazyForEachOpsAccessor::OnRangeUpdateImpl, LazyForEachOpsAccessor::SetCurrentIndexImpl, LazyForEachOpsAccessor::PrepareImpl, + LazyForEachOpsAccessor::NotifyChangeImpl, }; return &LazyForEachOpsAccessorImpl; } diff --git a/arkoala/framework/src/generated/EnumsImpl.ts b/arkoala/framework/src/generated/EnumsImpl.ts index 8bc2f8e537fac54972afff801e51a39672c97e33..e20a617d7a5ae742dbea8769d561a9256b45c887 100644 --- a/arkoala/framework/src/generated/EnumsImpl.ts +++ b/arkoala/framework/src/generated/EnumsImpl.ts @@ -45,6 +45,11 @@ export enum PointerStyle { LOADING = 42, RUNNING = 43 } +export enum LazyNotificationType { + START_CHANGE_POSITION = 0, + END_CHANGE_POSITION = 1, + START_AND_END_CHANGE_POSITION = 2 +} export enum RectWidthStyle { TIGHT = 0, MAX = 1