objc2_ui_kit/generated/
UIDragItem.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10extern_class!(
11    /// [Apple's documentation](https://developer.apple.com/documentation/uikit/uidragitem?language=objc)
12    #[unsafe(super(NSObject))]
13    #[thread_kind = MainThreadOnly]
14    #[derive(Debug, PartialEq, Eq, Hash)]
15    pub struct UIDragItem;
16);
17
18extern_conformance!(
19    unsafe impl NSObjectProtocol for UIDragItem {}
20);
21
22impl UIDragItem {
23    extern_methods!(
24        #[unsafe(method(initWithItemProvider:))]
25        #[unsafe(method_family = init)]
26        pub unsafe fn initWithItemProvider(
27            this: Allocated<Self>,
28            item_provider: &NSItemProvider,
29        ) -> Retained<Self>;
30
31        #[unsafe(method(init))]
32        #[unsafe(method_family = init)]
33        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
34
35        #[unsafe(method(new))]
36        #[unsafe(method_family = new)]
37        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
38
39        #[unsafe(method(itemProvider))]
40        #[unsafe(method_family = none)]
41        pub unsafe fn itemProvider(&self) -> Retained<NSItemProvider>;
42
43        /// Use `localObject` to attach additional information to
44        /// this drag item, visible only inside the app that started the drag.
45        #[unsafe(method(localObject))]
46        #[unsafe(method_family = none)]
47        pub unsafe fn localObject(&self) -> Option<Retained<AnyObject>>;
48
49        /// Setter for [`localObject`][Self::localObject].
50        #[unsafe(method(setLocalObject:))]
51        #[unsafe(method_family = none)]
52        pub unsafe fn setLocalObject(&self, local_object: Option<&AnyObject>);
53
54        #[cfg(all(feature = "UIDragPreview", feature = "block2"))]
55        /// Use `previewProvider` to change the preview for an item.
56        ///
57        /// Each item is usually given a preview when the drag begins,
58        /// either by the UIDragInteractionDelegate's `-dragInteraction:previewForLiftingItem:session:`
59        /// method, or by creating a preview from the dragging view.
60        ///
61        /// During the drag, applications may attempt to change the item's preview,
62        /// by setting `previewProvider` to a block that returns a preview.
63        /// It will be called when and if the system requests it.
64        ///
65        /// To use the default preview, set `previewProvider` to nil.
66        /// To hide the preview, set `previewProvider` to a block that returns nil.
67        #[unsafe(method(previewProvider))]
68        #[unsafe(method_family = none)]
69        pub unsafe fn previewProvider(
70            &self,
71        ) -> *mut block2::DynBlock<dyn Fn() -> *mut UIDragPreview>;
72
73        #[cfg(all(feature = "UIDragPreview", feature = "block2"))]
74        /// Setter for [`previewProvider`][Self::previewProvider].
75        #[unsafe(method(setPreviewProvider:))]
76        #[unsafe(method_family = none)]
77        pub unsafe fn setPreviewProvider(
78            &self,
79            preview_provider: Option<&block2::DynBlock<dyn Fn() -> *mut UIDragPreview>>,
80        );
81
82        /// Requests for the drop preview to be updated if an active drop animation is in progress, and can handle updates.
83        /// If no active drop animation is in progress for the specified item, then nothing happens.
84        #[unsafe(method(setNeedsDropPreviewUpdate))]
85        #[unsafe(method_family = none)]
86        pub unsafe fn setNeedsDropPreviewUpdate(&self);
87    );
88}