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 MPMediaPlaylistAttribute(pub NSUInteger);
bitflags::bitflags! {
impl MPMediaPlaylistAttribute: NSUInteger {
#[doc(alias = "MPMediaPlaylistAttributeNone")]
const None = 0;
#[doc(alias = "MPMediaPlaylistAttributeOnTheGo")]
const OnTheGo = 1<<0;
#[doc(alias = "MPMediaPlaylistAttributeSmart")]
const Smart = 1<<1;
#[doc(alias = "MPMediaPlaylistAttributeGenius")]
const Genius = 1<<2;
}
}
unsafe impl Encode for MPMediaPlaylistAttribute {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MPMediaPlaylistAttribute {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern "C" {
pub static MPMediaPlaylistPropertyPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaPlaylistPropertyCloudGlobalID: &'static NSString;
}
extern "C" {
pub static MPMediaPlaylistPropertyName: &'static NSString;
}
extern "C" {
pub static MPMediaPlaylistPropertyPlaylistAttributes: &'static NSString;
}
extern "C" {
pub static MPMediaPlaylistPropertySeedItems: &'static NSString;
}
extern "C" {
pub static MPMediaPlaylistPropertyDescriptionText: &'static NSString;
}
extern "C" {
pub static MPMediaPlaylistPropertyAuthorDisplayName: &'static NSString;
}
extern_class!(
#[unsafe(super(MPMediaItemCollection, MPMediaEntity, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
pub struct MPMediaPlaylist;
);
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
extern_conformance!(
unsafe impl NSCoding for MPMediaPlaylist {}
);
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
extern_conformance!(
unsafe impl NSObjectProtocol for MPMediaPlaylist {}
);
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
extern_conformance!(
unsafe impl NSSecureCoding for MPMediaPlaylist {}
);
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
impl MPMediaPlaylist {
extern_methods!(
#[unsafe(method(persistentID))]
#[unsafe(method_family = none)]
pub unsafe fn persistentID(&self) -> MPMediaEntityPersistentID;
#[unsafe(method(cloudGlobalID))]
#[unsafe(method_family = none)]
pub unsafe fn cloudGlobalID(&self) -> Option<Retained<NSString>>;
#[unsafe(method(name))]
#[unsafe(method_family = none)]
pub unsafe fn name(&self) -> Option<Retained<NSString>>;
#[unsafe(method(playlistAttributes))]
#[unsafe(method_family = none)]
pub unsafe fn playlistAttributes(&self) -> MPMediaPlaylistAttribute;
#[cfg(feature = "MPMediaItem")]
#[unsafe(method(seedItems))]
#[unsafe(method_family = none)]
pub unsafe fn seedItems(&self) -> Option<Retained<NSArray<MPMediaItem>>>;
#[unsafe(method(descriptionText))]
#[unsafe(method_family = none)]
pub unsafe fn descriptionText(&self) -> Option<Retained<NSString>>;
#[unsafe(method(authorDisplayName))]
#[unsafe(method_family = none)]
pub unsafe fn authorDisplayName(&self) -> Option<Retained<NSString>>;
#[cfg(feature = "block2")]
#[unsafe(method(addItemWithProductID:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn addItemWithProductID_completionHandler(
&self,
product_id: &NSString,
completion_handler: Option<&block2::DynBlock<dyn Fn(*mut NSError)>>,
);
#[cfg(all(feature = "MPMediaItem", feature = "block2"))]
#[unsafe(method(addMediaItems:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn addMediaItems_completionHandler(
&self,
media_items: &NSArray<MPMediaItem>,
completion_handler: Option<&block2::DynBlock<dyn Fn(*mut NSError)>>,
);
);
}
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
impl MPMediaPlaylist {
extern_methods!(
#[cfg(feature = "MPMediaItem")]
#[unsafe(method(initWithItems:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithItems(
this: Allocated<Self>,
items: &NSArray<MPMediaItem>,
) -> Retained<Self>;
);
}
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
impl MPMediaPlaylist {
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 MPMediaPlaylistCreationMetadata;
);
extern_conformance!(
unsafe impl NSObjectProtocol for MPMediaPlaylistCreationMetadata {}
);
impl MPMediaPlaylistCreationMetadata {
extern_methods!(
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(initWithName:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithName(this: Allocated<Self>, name: &NSString) -> Retained<Self>;
#[unsafe(method(name))]
#[unsafe(method_family = none)]
pub unsafe fn name(&self) -> Retained<NSString>;
#[unsafe(method(authorDisplayName))]
#[unsafe(method_family = none)]
pub unsafe fn authorDisplayName(&self) -> Retained<NSString>;
#[unsafe(method(setAuthorDisplayName:))]
#[unsafe(method_family = none)]
pub unsafe fn setAuthorDisplayName(&self, author_display_name: Option<&NSString>);
#[unsafe(method(descriptionText))]
#[unsafe(method_family = none)]
pub unsafe fn descriptionText(&self) -> Retained<NSString>;
#[unsafe(method(setDescriptionText:))]
#[unsafe(method_family = none)]
pub unsafe fn setDescriptionText(&self, description_text: &NSString);
);
}