Skip to main content

ohos_arkui_binding/type/
advanced.rs

1//! Module type::advanced wrappers and related types.
2
3use ohos_arkui_sys::*;
4
5use ohos_enum_derive::EnumFrom;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
8#[config(
9    ArkUI_ListItemSwipeActionDirection,
10    "ArkUI_ListItemSwipeActionDirection_ARKUI_LIST_ITEM_SWIPE_ACTION_DIRECTION_"
11)]
12#[cfg(feature = "api-21")]
13/// Swipe direction used by list-item swipe actions.
14pub enum ListItemSwipeActionDirection {
15    Start,
16    End,
17}
18
19#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
20#[config(
21    ArkUI_GestureRecognizerState,
22    "ArkUI_GestureRecognizerState_ARKUI_GESTURE_RECOGNIZER_STATE_"
23)]
24/// State of a gesture recognizer lifecycle.
25pub enum GestureRecognizerState {
26    Ready,
27    Detecting,
28    Pending,
29    Blocked,
30    Successful,
31    Failed,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
35#[config(ArkUI_TextSpanType, "ArkUI_TextSpanType_ARKUI_TEXT_SPAN_TYPE_")]
36#[cfg(feature = "api-22")]
37/// Span type contained in rich text.
38pub enum TextSpanType {
39    Text,
40    Image,
41    Mixed,
42    Default,
43}
44
45#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
46#[config(
47    ArkUI_TextResponseType,
48    "ArkUI_TextResponseType_ARKUI_TEXT_RESPONSE_TYPE_"
49)]
50#[cfg(feature = "api-22")]
51/// Trigger type that produced a text response.
52pub enum TextResponseType {
53    RightClick,
54    LongPress,
55    Select,
56    Default,
57}
58
59#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
60#[config(
61    ArkUI_NavDestinationState,
62    "ArkUI_NavDestinationState_ARKUI_NAV_DESTINATION_STATE_"
63)]
64/// Lifecycle states for navigation destinations.
65pub enum NavDestinationState {
66    OnShow,
67    OnHide,
68    OnAppear,
69    OnDisappear,
70    OnWillShow,
71    OnWillHide,
72    OnWillAppear,
73    OnWillDisappear,
74    OnBackPress,
75}
76
77#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
78#[config(
79    ArkUI_RouterPageState,
80    "ArkUI_RouterPageState_ARKUI_ROUTER_PAGE_STATE_"
81)]
82/// Lifecycle states for router pages.
83pub enum RouterPageState {
84    AboutToAppear,
85    AboutToDisappear,
86    OnShow,
87    OnHide,
88    OnBackPress,
89}
90
91#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
92#[config(
93    ArkUI_HorizontalAlignment,
94    "ArkUI_HorizontalAlignment_ARKUI_HORIZONTAL_ALIGNMENT_"
95)]
96/// Horizontal alignment values for layout options.
97pub enum HorizontalAlignment {
98    Start,
99    Center,
100    End,
101}
102
103#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
104#[config(
105    ArkUI_VerticalAlignment,
106    "ArkUI_VerticalAlignment_ARKUI_VERTICAL_ALIGNMENT_"
107)]
108/// Vertical alignment values for layout options.
109pub enum VerticalAlignment {
110    Top,
111    Center,
112    Bottom,
113}
114
115#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
116#[config(ArkUI_Axis, "ArkUI_Axis_ARKUI_AXIS_")]
117/// Direction axis used by scrolling and layout APIs.
118pub enum Axis {
119    Vertical,
120    Horizontal,
121}
122
123#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
124#[config(
125    ArkUI_BarrierDirection,
126    "ArkUI_BarrierDirection_ARKUI_BARRIER_DIRECTION_"
127)]
128/// Direction used by relative-layout barriers.
129pub enum BarrierDirection {
130    Start,
131    End,
132    Top,
133    Bottom,
134}
135
136#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
137#[config(
138    ArkUI_SwiperIndicatorType,
139    "ArkUI_SwiperIndicatorType_ARKUI_SWIPER_INDICATOR_TYPE_"
140)]
141/// Indicator style used by swiper components.
142pub enum SwiperIndicatorType {
143    Dot,
144    Digit,
145}
146
147#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
148#[config(ArkUI_FontWeight, "ArkUI_FontWeight_ARKUI_FONT_WEIGHT_")]
149/// Font-weight values mapped to ArkUI constants.
150pub enum FontWeight {
151    #[suffix("W100")]
152    W100,
153    #[suffix("W200")]
154    W200,
155    #[suffix("W300")]
156    W300,
157    #[suffix("W400")]
158    W400,
159    #[suffix("W500")]
160    W500,
161    #[suffix("W600")]
162    W600,
163    #[suffix("W700")]
164    W700,
165    #[suffix("W800")]
166    W800,
167    #[suffix("W900")]
168    W900,
169    Bold,
170    Normal,
171    Bolder,
172    Lighter,
173    Medium,
174    Regular,
175}
176
177#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
178#[config(
179    ArkUI_ListItemSwipeEdgeEffect,
180    "ArkUI_ListItemSwipeEdgeEffect_ARKUI_LIST_ITEM_SWIPE_EDGE_EFFECT_"
181)]
182/// Edge behavior when list-item swipe reaches bounds.
183pub enum ListItemSwipeEdgeEffect {
184    Spring,
185    None,
186}
187
188#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
189#[config(
190    ArkUI_ListItemSwipeActionState,
191    "ArkUI_ListItemSwipeActionState_ARKUI_LIST_ITEM_SWIPE_ACTION_STATE_"
192)]
193/// State of list-item swipe action animation.
194pub enum ListItemSwipeActionState {
195    Collapsed,
196    Expanded,
197    Actioning,
198}
199
200#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
201#[config(
202    ArkUI_NodeAdapterEventType,
203    "ArkUI_NodeAdapterEventType_NODE_ADAPTER_EVENT_"
204)]
205/// Event types emitted by node-adapter callbacks.
206pub enum NodeAdapterEventType {
207    WillAttachToNode,
208    WillDetachFromNode,
209    OnGetNodeId,
210    OnAddNodeToAdapter,
211    OnRemoveNodeFromAdapter,
212}
213
214#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
215#[config(
216    ArkUI_PixelRoundCalcPolicy,
217    "ArkUI_PixelRoundCalcPolicy_ARKUI_PIXELROUNDCALCPOLICY_"
218)]
219#[cfg(feature = "api-21")]
220/// Policy controlling pixel-rounding calculations.
221pub enum PixelRoundCalcPolicy {
222    Noforceround,
223    Forceceil,
224    Forcefloor,
225}
226
227#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
228#[config(ArkUI_DialogState, "ArkUI_DialogState_DIALOG_")]
229#[cfg(feature = "api-19")]
230/// Runtime state of native/custom dialogs.
231pub enum DialogState {
232    Uninitialized,
233    Initialized,
234    Appearing,
235    Appeared,
236    Disappearing,
237    Disappeared,
238}
239
240#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
241#[config(
242    ArkUI_NodeContentEventType,
243    "ArkUI_NodeContentEventType_NODE_CONTENT_EVENT_"
244)]
245/// Event types emitted by `NodeContent`.
246pub enum NodeContentEventType {
247    OnAttachToWindow,
248    OnDetachFromWindow,
249}
250
251#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
252#[config(
253    ArkUI_AnimationFillMode,
254    "ArkUI_AnimationFillMode_ARKUI_ANIMATION_FILL_MODE_"
255)]
256/// Fill behavior outside keyframe/animation active range.
257pub enum AnimationFillMode {
258    None,
259    Forwards,
260    Backwards,
261    Both,
262}
263
264#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
265#[config(
266    ArkUI_AnimationDirection,
267    "ArkUI_AnimationDirection_ARKUI_ANIMATION_DIRECTION_"
268)]
269/// Direction behavior for keyframe animations.
270pub enum AnimationDirection {
271    Normal,
272    Reverse,
273    Alternate,
274    AlternateReverse,
275}
276
277#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
278#[config(ArkUI_NodeDirtyFlag, "ArkUI_NodeDirtyFlag_NODE_")]
279/// Dirty flags describing what changed in a node.
280pub enum NodeDirtyFlag {
281    NeedMeasure,
282    NeedLayout,
283    NeedRender,
284}
285
286#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
287#[config(
288    ArkUI_CoastingAxisEventPhase,
289    "ArkUI_CoastingAxisEventPhase_ARKUI_COASTING_AXIS_EVENT_PHASE_"
290)]
291#[cfg(feature = "api-22")]
292/// Phase of coasting-axis events.
293pub enum CoastingAxisEventPhase {
294    None,
295    Begin,
296    Update,
297    End,
298}
299
300#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
301#[config(ArkUI_KeyEventType, "ArkUI_KeyEventType_ARKUI_KEY_EVENT_")]
302#[cfg(feature = "api-14")]
303/// Key event action type.
304pub enum KeyEventType {
305    Unknown,
306    Down,
307    Up,
308    LongPress,
309    Click,
310}
311
312#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
313#[config(ArkUI_KeySourceType, "ArkUI_KeySourceType_ARKUI_KEY_SOURCE_")]
314#[cfg(feature = "api-14")]
315/// Input source that generated a key event.
316pub enum KeySourceType {
317    Unknown,
318    TypeMouse,
319    TypeKeyboard,
320    TypeJoystick,
321}
322
323#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
324#[config(ArkUI_KeyIntension, "ArkUI_KeyIntension_ARKUI_KEY_INTENSION_")]
325#[cfg(feature = "api-14")]
326/// Key intention semantic mapped by ArkUI.
327pub enum KeyIntension {
328    Unknown,
329    Up,
330    Down,
331    Left,
332    Right,
333    Select,
334    Escape,
335    Back,
336    Forward,
337    Menu,
338    Home,
339    PageUp,
340    PageDown,
341    ZoomOut,
342    ZoomIn,
343    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
344    MediaPlayPause,
345    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
346    MediaFastForward,
347    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
348    MediaFastPlayback,
349    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
350    MediaNext,
351    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
352    MediaPrevious,
353    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
354    MediaMute,
355    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
356    VolumeUp,
357    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
358    VolumeDown,
359    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
360    Call,
361    #[prefix("ArkUI_KeyIntension_ARKUI_KEY_INTENTION_")]
362    Camera,
363}
364
365#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
366#[config(ArkUI_TransitionEdge, "ArkUI_TransitionEdge_ARKUI_TRANSITION_EDGE_")]
367/// Edge used by movement transition effects.
368pub enum TransitionEdge {
369    Top,
370    Bottom,
371    Start,
372    End,
373}
374
375#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
376#[config(
377    ArkUI_NodeCustomEventType,
378    "ArkUI_NodeCustomEventType_ARKUI_NODE_CUSTOM_EVENT_"
379)]
380/// Event types emitted by custom node callbacks.
381pub enum NodeCustomEventType {
382    OnMeasure,
383    OnLayout,
384    OnDraw,
385    OnForegroundDraw,
386    OnOverlayDraw,
387    #[cfg(feature = "api-20")]
388    OnDrawFront,
389    #[cfg(feature = "api-20")]
390    OnDrawBehind,
391}
392
393#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
394#[config(
395    ArkUI_LengthMetricUnit,
396    "ArkUI_LengthMetricUnit_ARKUI_LENGTH_METRIC_UNIT_"
397)]
398/// Length units supported by metric-based APIs.
399pub enum LengthMetricUnit {
400    Default,
401    Px,
402    Vp,
403    Fp,
404}
405
406#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
407#[config(ArkUI_DragStatus, "ArkUI_DragStatus_ARKUI_DRAG_STATUS_")]
408/// Real-time drag status in drag lifecycle events.
409pub enum DragStatus {
410    Unknown,
411    Started,
412    Ended,
413}
414
415#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
416#[config(
417    ArkUI_DragPreviewScaleMode,
418    "ArkUI_DragPreviewScaleMode_ARKUI_DRAG_PREVIEW_SCALE_"
419)]
420/// Scaling mode for drag preview rendering.
421pub enum DragPreviewScaleMode {
422    Auto,
423    Disabled,
424}
425
426#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
427#[config(ArkUI_LevelMode, "ArkUI_LevelMode_ARKUI_LEVEL_MODE_")]
428#[cfg(feature = "api-19")]
429/// Level mode used by ArkUI rendering/effect APIs.
430pub enum LevelMode {
431    Overlay,
432    Embedded,
433}
434
435#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
436#[config(ArkUI_ImmersiveMode, "ArkUI_ImmersiveMode_ARKUI_IMMERSIVE_MODE_")]
437#[cfg(feature = "api-19")]
438/// Immersive mode behavior for system UI overlays.
439pub enum ImmersiveMode {
440    Default,
441    Extend,
442}
443
444#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
445#[config(ArkUI_ShadowStyle, "ArkUI_ShadowStyle_ARKUI_SHADOW_STYLE_")]
446#[cfg(feature = "api-19")]
447/// Predefined shadow style presets.
448pub enum ShadowStyle {
449    OuterDefaultXs,
450    OuterDefaultSm,
451    OuterDefaultMd,
452    OuterDefaultLg,
453    OuterFloatingSm,
454    OuterFloatingMd,
455}
456
457#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
458#[config(ArkUI_BlurStyle, "ArkUI_BlurStyle_ARKUI_BLUR_STYLE_")]
459#[cfg(feature = "api-19")]
460/// Blur style presets for background/foreground blur.
461pub enum BlurStyle {
462    Thin,
463    Regular,
464    Thick,
465    BackgroundThin,
466    BackgroundRegular,
467    BackgroundThick,
468    BackgroundUltraThick,
469    None,
470    ComponentUltraThin,
471    ComponentThin,
472    ComponentRegular,
473    ComponentThick,
474    ComponentUltraThick,
475}
476
477#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
478#[config(
479    ArkUI_KeyboardAvoidMode,
480    "ArkUI_KeyboardAvoidMode_ARKUI_KEYBOARD_AVOID_MODE_"
481)]
482#[cfg(feature = "api-19")]
483/// Keyboard avoidance behavior for focused content.
484pub enum KeyboardAvoidMode {
485    Default,
486    None,
487}
488
489#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
490#[config(
491    ArkUI_HoverModeAreaType,
492    "ArkUI_HoverModeAreaType_ARKUI_HOVER_MODE_AREA_TYPE_"
493)]
494#[cfg(feature = "api-19")]
495/// Area type used by hover-mode APIs.
496pub enum HoverModeAreaType {
497    Top,
498    Bottom,
499}