objc2-media-player 0.3.2

Bindings to the MediaPlayer 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_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmediagrouping?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPMediaGrouping(pub NSInteger);
impl MPMediaGrouping {
    #[doc(alias = "MPMediaGroupingTitle")]
    pub const Title: Self = Self(0);
    #[doc(alias = "MPMediaGroupingAlbum")]
    pub const Album: Self = Self(1);
    #[doc(alias = "MPMediaGroupingArtist")]
    pub const Artist: Self = Self(2);
    #[doc(alias = "MPMediaGroupingAlbumArtist")]
    pub const AlbumArtist: Self = Self(3);
    #[doc(alias = "MPMediaGroupingComposer")]
    pub const Composer: Self = Self(4);
    #[doc(alias = "MPMediaGroupingGenre")]
    pub const Genre: Self = Self(5);
    #[doc(alias = "MPMediaGroupingPlaylist")]
    pub const Playlist: Self = Self(6);
    #[doc(alias = "MPMediaGroupingPodcastTitle")]
    pub const PodcastTitle: Self = Self(7);
}

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

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

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmediaquery?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct MPMediaQuery;
);

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

extern_conformance!(
    unsafe impl NSCopying for MPMediaQuery {}
);

unsafe impl CopyingHelper for MPMediaQuery {
    type Result = Self;
}

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

extern_conformance!(
    unsafe impl NSSecureCoding for MPMediaQuery {}
);

impl MPMediaQuery {
    extern_methods!(
        #[unsafe(method(initWithFilterPredicates:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithFilterPredicates(
            this: Allocated<Self>,
            filter_predicates: Option<&NSSet<MPMediaPredicate>>,
        ) -> Retained<Self>;

        #[unsafe(method(filterPredicates))]
        #[unsafe(method_family = none)]
        pub unsafe fn filterPredicates(&self) -> Option<Retained<NSSet<MPMediaPredicate>>>;

        /// Setter for [`filterPredicates`][Self::filterPredicates].
        #[unsafe(method(setFilterPredicates:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setFilterPredicates(
            &self,
            filter_predicates: Option<&NSSet<MPMediaPredicate>>,
        );

        #[unsafe(method(addFilterPredicate:))]
        #[unsafe(method_family = none)]
        pub unsafe fn addFilterPredicate(&self, predicate: &MPMediaPredicate);

        #[unsafe(method(removeFilterPredicate:))]
        #[unsafe(method_family = none)]
        pub unsafe fn removeFilterPredicate(&self, predicate: &MPMediaPredicate);

        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
        #[unsafe(method(items))]
        #[unsafe(method_family = none)]
        pub unsafe fn items(&self) -> Option<Retained<NSArray<MPMediaItem>>>;

        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
        #[unsafe(method(collections))]
        #[unsafe(method_family = none)]
        pub unsafe fn collections(&self) -> Option<Retained<NSArray<MPMediaItemCollection>>>;

        #[unsafe(method(groupingType))]
        #[unsafe(method_family = none)]
        pub unsafe fn groupingType(&self) -> MPMediaGrouping;

        /// Setter for [`groupingType`][Self::groupingType].
        #[unsafe(method(setGroupingType:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setGroupingType(&self, grouping_type: MPMediaGrouping);

        #[cfg(feature = "MPMediaQuerySection")]
        #[unsafe(method(itemSections))]
        #[unsafe(method_family = none)]
        pub unsafe fn itemSections(&self) -> Option<Retained<NSArray<MPMediaQuerySection>>>;

        #[cfg(feature = "MPMediaQuerySection")]
        #[unsafe(method(collectionSections))]
        #[unsafe(method_family = none)]
        pub unsafe fn collectionSections(&self) -> Option<Retained<NSArray<MPMediaQuerySection>>>;

        #[unsafe(method(albumsQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn albumsQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(artistsQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn artistsQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(songsQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn songsQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(playlistsQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn playlistsQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(podcastsQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn podcastsQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(audiobooksQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn audiobooksQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(compilationsQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn compilationsQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(composersQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn composersQuery() -> Retained<MPMediaQuery>;

        #[unsafe(method(genresQuery))]
        #[unsafe(method_family = none)]
        pub unsafe fn genresQuery() -> Retained<MPMediaQuery>;
    );
}

/// Methods declared on superclass `NSObject`.
impl MPMediaQuery {
    extern_methods!(
        #[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>;
    );
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmediapredicate?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct MPMediaPredicate;
);

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

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

extern_conformance!(
    unsafe impl NSSecureCoding for MPMediaPredicate {}
);

impl MPMediaPredicate {
    extern_methods!();
}

/// Methods declared on superclass `NSObject`.
impl MPMediaPredicate {
    extern_methods!(
        #[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>;
    );
}

/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmediapredicatecomparison?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPMediaPredicateComparison(pub NSInteger);
impl MPMediaPredicateComparison {
    #[doc(alias = "MPMediaPredicateComparisonEqualTo")]
    pub const EqualTo: Self = Self(0);
    #[doc(alias = "MPMediaPredicateComparisonContains")]
    pub const Contains: Self = Self(1);
}

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

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

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmediapropertypredicate?language=objc)
    #[unsafe(super(MPMediaPredicate, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct MPMediaPropertyPredicate;
);

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

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

extern_conformance!(
    unsafe impl NSSecureCoding for MPMediaPropertyPredicate {}
);

impl MPMediaPropertyPredicate {
    extern_methods!(
        /// # Safety
        ///
        /// `value` should be of the correct type.
        #[unsafe(method(predicateWithValue:forProperty:))]
        #[unsafe(method_family = none)]
        pub unsafe fn predicateWithValue_forProperty(
            value: Option<&AnyObject>,
            property: &NSString,
        ) -> Retained<MPMediaPropertyPredicate>;

        /// # Safety
        ///
        /// `value` should be of the correct type.
        #[unsafe(method(predicateWithValue:forProperty:comparisonType:))]
        #[unsafe(method_family = none)]
        pub unsafe fn predicateWithValue_forProperty_comparisonType(
            value: Option<&AnyObject>,
            property: &NSString,
            comparison_type: MPMediaPredicateComparison,
        ) -> Retained<MPMediaPropertyPredicate>;

        #[unsafe(method(property))]
        #[unsafe(method_family = none)]
        pub unsafe fn property(&self) -> Retained<NSString>;

        #[unsafe(method(value))]
        #[unsafe(method_family = none)]
        pub unsafe fn value(&self) -> Option<Retained<AnyObject>>;

        #[unsafe(method(comparisonType))]
        #[unsafe(method_family = none)]
        pub unsafe fn comparisonType(&self) -> MPMediaPredicateComparison;
    );
}

/// Methods declared on superclass `NSObject`.
impl MPMediaPropertyPredicate {
    extern_methods!(
        #[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>;
    );
}

/// MPMediaQueryAdditions.
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
impl MPMediaItem {
    extern_methods!(
        #[unsafe(method(persistentIDPropertyForGroupingType:))]
        #[unsafe(method_family = none)]
        pub unsafe fn persistentIDPropertyForGroupingType(
            grouping_type: MPMediaGrouping,
        ) -> Retained<NSString>;

        #[unsafe(method(titlePropertyForGroupingType:))]
        #[unsafe(method_family = none)]
        pub unsafe fn titlePropertyForGroupingType(
            grouping_type: MPMediaGrouping,
        ) -> Retained<NSString>;
    );
}