use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern "C" {
pub static UITextItemTagAttributeName: &'static NSAttributedStringKey;
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UITextItemContentType(pub NSInteger);
impl UITextItemContentType {
#[doc(alias = "UITextItemContentTypeLink")]
pub const Link: Self = Self(0);
#[doc(alias = "UITextItemContentTypeTextAttachment")]
pub const TextAttachment: Self = Self(1);
#[doc(alias = "UITextItemContentTypeTag")]
pub const Tag: Self = Self(2);
}
unsafe impl Encode for UITextItemContentType {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for UITextItemContentType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[unsafe(super(NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UITextItem;
);
extern_conformance!(
unsafe impl NSObjectProtocol for UITextItem {}
);
impl UITextItem {
extern_methods!(
#[unsafe(method(contentType))]
#[unsafe(method_family = none)]
pub fn contentType(&self) -> UITextItemContentType;
#[unsafe(method(range))]
#[unsafe(method_family = none)]
pub fn range(&self) -> NSRange;
#[unsafe(method(link))]
#[unsafe(method_family = none)]
pub fn link(&self) -> Option<Retained<NSURL>>;
#[cfg(feature = "NSTextAttachment")]
#[unsafe(method(textAttachment))]
#[unsafe(method_family = none)]
pub fn textAttachment(&self) -> Option<Retained<NSTextAttachment>>;
#[unsafe(method(tagIdentifier))]
#[unsafe(method_family = none)]
pub fn tagIdentifier(&self) -> Option<Retained<NSString>>;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
);
}
extern_class!(
#[unsafe(super(NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UITextItemMenuPreview;
);
extern_conformance!(
unsafe impl NSObjectProtocol for UITextItemMenuPreview {}
);
impl UITextItemMenuPreview {
extern_methods!(
#[unsafe(method(defaultPreview))]
#[unsafe(method_family = none)]
pub fn defaultPreview(mtm: MainThreadMarker) -> Retained<Self>;
#[cfg(all(feature = "UIResponder", feature = "UIView"))]
#[unsafe(method(initWithView:))]
#[unsafe(method_family = init)]
pub fn initWithView(this: Allocated<Self>, view: &UIView) -> Retained<Self>;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
);
}
extern_class!(
#[unsafe(super(NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UITextItemMenuConfiguration;
);
extern_conformance!(
unsafe impl NSObjectProtocol for UITextItemMenuConfiguration {}
);
impl UITextItemMenuConfiguration {
extern_methods!(
#[cfg(all(feature = "UIMenu", feature = "UIMenuElement"))]
#[unsafe(method(configurationWithMenu:))]
#[unsafe(method_family = none)]
pub fn configurationWithMenu(menu: &UIMenu) -> Retained<Self>;
#[cfg(all(feature = "UIMenu", feature = "UIMenuElement"))]
#[unsafe(method(configurationWithPreview:menu:))]
#[unsafe(method_family = none)]
pub fn configurationWithPreview_menu(
preview: Option<&UITextItemMenuPreview>,
menu: &UIMenu,
) -> Retained<Self>;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
);
}