use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[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!(
#[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>>>;
#[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;
#[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>;
);
}
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!(
#[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!();
}
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>;
);
}
#[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!(
#[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!(
#[unsafe(method(predicateWithValue:forProperty:))]
#[unsafe(method_family = none)]
pub unsafe fn predicateWithValue_forProperty(
value: Option<&AnyObject>,
property: &NSString,
) -> Retained<MPMediaPropertyPredicate>;
#[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;
);
}
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>;
);
}
#[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>;
);
}