use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CPLimitableUserInterface(pub NSUInteger);
bitflags::bitflags! {
impl CPLimitableUserInterface: NSUInteger {
#[doc(alias = "CPLimitableUserInterfaceKeyboard")]
const Keyboard = 1<<0;
#[doc(alias = "CPLimitableUserInterfaceLists")]
const Lists = 1<<1;
}
}
unsafe impl Encode for CPLimitableUserInterface {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for CPLimitableUserInterface {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CPContentStyle(pub NSUInteger);
bitflags::bitflags! {
impl CPContentStyle: NSUInteger {
#[doc(alias = "CPContentStyleLight")]
const Light = 1<<0;
#[doc(alias = "CPContentStyleDark")]
const Dark = 1<<1;
}
}
unsafe impl Encode for CPContentStyle {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for CPContentStyle {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct CPSessionConfiguration;
);
extern_conformance!(
unsafe impl NSObjectProtocol for CPSessionConfiguration {}
);
impl CPSessionConfiguration {
extern_methods!(
#[unsafe(method(initWithDelegate:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithDelegate(
this: Allocated<Self>,
delegate: &ProtocolObject<dyn CPSessionConfigurationDelegate>,
) -> 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() -> Retained<Self>;
#[unsafe(method(limitedUserInterfaces))]
#[unsafe(method_family = none)]
pub unsafe fn limitedUserInterfaces(&self) -> CPLimitableUserInterface;
#[unsafe(method(contentStyle))]
#[unsafe(method_family = none)]
pub unsafe fn contentStyle(&self) -> CPContentStyle;
#[unsafe(method(delegate))]
#[unsafe(method_family = none)]
pub unsafe fn delegate(
&self,
mtm: MainThreadMarker,
) -> Option<Retained<ProtocolObject<dyn CPSessionConfigurationDelegate>>>;
#[unsafe(method(setDelegate:))]
#[unsafe(method_family = none)]
pub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn CPSessionConfigurationDelegate>>,
);
);
}
extern_protocol!(
pub unsafe trait CPSessionConfigurationDelegate:
NSObjectProtocol + MainThreadOnly
{
#[optional]
#[unsafe(method(sessionConfiguration:limitedUserInterfacesChanged:))]
#[unsafe(method_family = none)]
unsafe fn sessionConfiguration_limitedUserInterfacesChanged(
&self,
session_configuration: &CPSessionConfiguration,
limited_user_interfaces: CPLimitableUserInterface,
);
#[optional]
#[unsafe(method(sessionConfiguration:contentStyleChanged:))]
#[unsafe(method_family = none)]
unsafe fn sessionConfiguration_contentStyleChanged(
&self,
session_configuration: &CPSessionConfiguration,
content_style: CPContentStyle,
);
}
);