objc2-quartz 0.3.2

Bindings to the Quartz framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_app_kit::*;
use objc2_foundation::*;
#[cfg(feature = "objc2-image-capture-core")]
use objc2_image_capture_core::*;

use crate::*;

extern_protocol!(
    /// A delegate of IKDeviceBrowserView must conform to IKDeviceBrowserViewDelegate protocol.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/quartz/ikdevicebrowserviewdelegate?language=objc)
    pub unsafe trait IKDeviceBrowserViewDelegate {
        #[cfg(feature = "objc2-image-capture-core")]
        /// This message is sent when the user selection did change.
        ///
        /// The device may be a ICCameraDevice or a ICScannerDevice.
        ///
        /// # Safety
        ///
        /// - `device_browser_view` might not allow `None`.
        /// - `device` might not allow `None`.
        #[unsafe(method(deviceBrowserView:selectionDidChange:))]
        #[unsafe(method_family = none)]
        unsafe fn deviceBrowserView_selectionDidChange(
            &self,
            device_browser_view: Option<&IKDeviceBrowserView>,
            device: Option<&ICDevice>,
        );

        /// This message is sent every time the device browser reports an error.
        ///
        /// # Safety
        ///
        /// - `device_browser_view` might not allow `None`.
        /// - `error` might not allow `None`.
        #[optional]
        #[unsafe(method(deviceBrowserView:didEncounterError:))]
        #[unsafe(method_family = none)]
        unsafe fn deviceBrowserView_didEncounterError(
            &self,
            device_browser_view: Option<&IKDeviceBrowserView>,
            error: Option<&NSError>,
        );
    }
);

/// [Apple's documentation](https://developer.apple.com/documentation/quartz/ikdevicebrowserviewdisplaymode?language=objc)
// NS_CLOSED_ENUM
#[repr(isize)] // NSInteger
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum IKDeviceBrowserViewDisplayMode {
    #[doc(alias = "IKDeviceBrowserViewDisplayModeTable")]
    Table = 0,
    #[doc(alias = "IKDeviceBrowserViewDisplayModeOutline")]
    Outline = 1,
    #[doc(alias = "IKDeviceBrowserViewDisplayModeIcon")]
    Icon = 2,
}

unsafe impl Encode for IKDeviceBrowserViewDisplayMode {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for IKDeviceBrowserViewDisplayMode {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    /// IKDeviceBrowserView displays Image Capture cameras and scanners.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/quartz/ikdevicebrowserview?language=objc)
    #[unsafe(super(NSView, NSResponder, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct IKDeviceBrowserView;
);

extern_conformance!(
    unsafe impl NSAccessibility for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSAccessibilityElementProtocol for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSAnimatablePropertyContainer for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSAppearanceCustomization for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSCoding for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSDraggingDestination for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSObjectProtocol for IKDeviceBrowserView {}
);

extern_conformance!(
    unsafe impl NSUserInterfaceItemIdentification for IKDeviceBrowserView {}
);

impl IKDeviceBrowserView {
    extern_methods!(
        /// delegate of the IKDeviceBrowserView.
        ///
        /// # Safety
        ///
        /// This is not retained internally, you must ensure the object is still alive.
        #[unsafe(method(delegate))]
        #[unsafe(method_family = none)]
        pub unsafe fn delegate(
            &self,
        ) -> Option<Retained<ProtocolObject<dyn IKDeviceBrowserViewDelegate>>>;

        /// Setter for [`delegate`][Self::delegate].
        ///
        /// # Safety
        ///
        /// - `delegate` might not allow `None`.
        /// - This is unretained, you must ensure the object is kept alive while in use.
        #[unsafe(method(setDelegate:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setDelegate(
            &self,
            delegate: Option<&ProtocolObject<dyn IKDeviceBrowserViewDelegate>>,
        );

        /// for device filtering - indicates that the IKDeviceBrowserView should include local cameras.
        #[unsafe(method(displaysLocalCameras))]
        #[unsafe(method_family = none)]
        pub unsafe fn displaysLocalCameras(&self) -> bool;

        /// Setter for [`displaysLocalCameras`][Self::displaysLocalCameras].
        #[unsafe(method(setDisplaysLocalCameras:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setDisplaysLocalCameras(&self, displays_local_cameras: bool);

        /// for device filtering - indicates that the IKDeviceBrowserView should include network/shared cameras.
        #[unsafe(method(displaysNetworkCameras))]
        #[unsafe(method_family = none)]
        pub unsafe fn displaysNetworkCameras(&self) -> bool;

        /// Setter for [`displaysNetworkCameras`][Self::displaysNetworkCameras].
        #[unsafe(method(setDisplaysNetworkCameras:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setDisplaysNetworkCameras(&self, displays_network_cameras: bool);

        /// for device filtering - indicates that the IKDeviceBrowserView should include local scanners.
        #[unsafe(method(displaysLocalScanners))]
        #[unsafe(method_family = none)]
        pub unsafe fn displaysLocalScanners(&self) -> bool;

        /// Setter for [`displaysLocalScanners`][Self::displaysLocalScanners].
        #[unsafe(method(setDisplaysLocalScanners:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setDisplaysLocalScanners(&self, displays_local_scanners: bool);

        /// for device filtering - indicates that the IKDeviceBrowserView should include network/shared scanners.
        #[unsafe(method(displaysNetworkScanners))]
        #[unsafe(method_family = none)]
        pub unsafe fn displaysNetworkScanners(&self) -> bool;

        /// Setter for [`displaysNetworkScanners`][Self::displaysNetworkScanners].
        #[unsafe(method(setDisplaysNetworkScanners:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setDisplaysNetworkScanners(&self, displays_network_scanners: bool);

        /// one of the supported display modes (table, outline, or icon mode).
        #[unsafe(method(mode))]
        #[unsafe(method_family = none)]
        pub unsafe fn mode(&self) -> IKDeviceBrowserViewDisplayMode;

        /// Setter for [`mode`][Self::mode].
        #[unsafe(method(setMode:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setMode(&self, mode: IKDeviceBrowserViewDisplayMode);

        #[cfg(feature = "objc2-image-capture-core")]
        /// user selected device (ICCameraDevice or ICScannerDevice).
        #[unsafe(method(selectedDevice))]
        #[unsafe(method_family = none)]
        pub unsafe fn selectedDevice(&self) -> Option<Retained<ICDevice>>;
    );
}

/// Methods declared on superclass `NSView`.
impl IKDeviceBrowserView {
    extern_methods!(
        #[unsafe(method(initWithFrame:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithFrame(this: Allocated<Self>, frame_rect: NSRect) -> Retained<Self>;

        /// # Safety
        ///
        /// `coder` possibly has further requirements.
        #[unsafe(method(initWithCoder:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;
    );
}

/// Methods declared on superclass `NSResponder`.
impl IKDeviceBrowserView {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    );
}

/// Methods declared on superclass `NSObject`.
impl IKDeviceBrowserView {
    extern_methods!(
        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    );
}