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 MPMusicPlaybackState(pub NSInteger);
impl MPMusicPlaybackState {
#[doc(alias = "MPMusicPlaybackStateStopped")]
pub const Stopped: Self = Self(0);
#[doc(alias = "MPMusicPlaybackStatePlaying")]
pub const Playing: Self = Self(1);
#[doc(alias = "MPMusicPlaybackStatePaused")]
pub const Paused: Self = Self(2);
#[doc(alias = "MPMusicPlaybackStateInterrupted")]
pub const Interrupted: Self = Self(3);
#[doc(alias = "MPMusicPlaybackStateSeekingForward")]
pub const SeekingForward: Self = Self(4);
#[doc(alias = "MPMusicPlaybackStateSeekingBackward")]
pub const SeekingBackward: Self = Self(5);
}
unsafe impl Encode for MPMusicPlaybackState {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for MPMusicPlaybackState {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPMusicRepeatMode(pub NSInteger);
impl MPMusicRepeatMode {
#[doc(alias = "MPMusicRepeatModeDefault")]
pub const Default: Self = Self(0);
#[doc(alias = "MPMusicRepeatModeNone")]
pub const None: Self = Self(1);
#[doc(alias = "MPMusicRepeatModeOne")]
pub const One: Self = Self(2);
#[doc(alias = "MPMusicRepeatModeAll")]
pub const All: Self = Self(3);
}
unsafe impl Encode for MPMusicRepeatMode {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for MPMusicRepeatMode {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPMusicShuffleMode(pub NSInteger);
impl MPMusicShuffleMode {
#[doc(alias = "MPMusicShuffleModeDefault")]
pub const Default: Self = Self(0);
#[doc(alias = "MPMusicShuffleModeOff")]
pub const Off: Self = Self(1);
#[doc(alias = "MPMusicShuffleModeSongs")]
pub const Songs: Self = Self(2);
#[doc(alias = "MPMusicShuffleModeAlbums")]
pub const Albums: Self = Self(3);
}
unsafe impl Encode for MPMusicShuffleMode {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for MPMusicShuffleMode {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_protocol!(
pub unsafe trait MPSystemMusicPlayerController: NSObjectProtocol {
#[cfg(feature = "MPMusicPlayerQueueDescriptor")]
#[unsafe(method(openToPlayQueueDescriptor:))]
#[unsafe(method_family = none)]
unsafe fn openToPlayQueueDescriptor(&self, queue_descriptor: &MPMusicPlayerQueueDescriptor);
}
);
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MPMusicPlayerController;
);
#[cfg(feature = "MPMediaPlayback")]
extern_conformance!(
unsafe impl MPMediaPlayback for MPMusicPlayerController {}
);
extern_conformance!(
unsafe impl NSObjectProtocol for MPMusicPlayerController {}
);
impl MPMusicPlayerController {
extern_methods!(
#[unsafe(method(applicationMusicPlayer))]
#[unsafe(method_family = none)]
pub unsafe fn applicationMusicPlayer() -> Retained<MPMusicPlayerController>;
#[cfg(feature = "MPMusicPlayerApplicationController")]
#[unsafe(method(applicationQueuePlayer))]
#[unsafe(method_family = none)]
pub unsafe fn applicationQueuePlayer() -> Retained<MPMusicPlayerApplicationController>;
#[unsafe(method(systemMusicPlayer))]
#[unsafe(method_family = none)]
pub unsafe fn systemMusicPlayer() -> Retained<MPMusicPlayerController>;
#[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(playbackState))]
#[unsafe(method_family = none)]
pub unsafe fn playbackState(&self) -> MPMusicPlaybackState;
#[unsafe(method(repeatMode))]
#[unsafe(method_family = none)]
pub unsafe fn repeatMode(&self) -> MPMusicRepeatMode;
#[unsafe(method(setRepeatMode:))]
#[unsafe(method_family = none)]
pub unsafe fn setRepeatMode(&self, repeat_mode: MPMusicRepeatMode);
#[unsafe(method(shuffleMode))]
#[unsafe(method_family = none)]
pub unsafe fn shuffleMode(&self) -> MPMusicShuffleMode;
#[unsafe(method(setShuffleMode:))]
#[unsafe(method_family = none)]
pub unsafe fn setShuffleMode(&self, shuffle_mode: MPMusicShuffleMode);
#[deprecated = "Use MPVolumeView for volume control."]
#[unsafe(method(volume))]
#[unsafe(method_family = none)]
pub unsafe fn volume(&self) -> c_float;
#[deprecated = "Use MPVolumeView for volume control."]
#[unsafe(method(setVolume:))]
#[unsafe(method_family = none)]
pub unsafe fn setVolume(&self, volume: c_float);
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
#[unsafe(method(nowPlayingItem))]
#[unsafe(method_family = none)]
pub unsafe fn nowPlayingItem(&self) -> Option<Retained<MPMediaItem>>;
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
#[unsafe(method(setNowPlayingItem:))]
#[unsafe(method_family = none)]
pub unsafe fn setNowPlayingItem(&self, now_playing_item: Option<&MPMediaItem>);
#[unsafe(method(indexOfNowPlayingItem))]
#[unsafe(method_family = none)]
pub unsafe fn indexOfNowPlayingItem(&self) -> NSUInteger;
#[cfg(feature = "MPMediaQuery")]
#[unsafe(method(setQueueWithQuery:))]
#[unsafe(method_family = none)]
pub unsafe fn setQueueWithQuery(&self, query: &MPMediaQuery);
#[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
#[unsafe(method(setQueueWithItemCollection:))]
#[unsafe(method_family = none)]
pub unsafe fn setQueueWithItemCollection(&self, item_collection: &MPMediaItemCollection);
#[unsafe(method(setQueueWithStoreIDs:))]
#[unsafe(method_family = none)]
pub unsafe fn setQueueWithStoreIDs(&self, store_i_ds: &NSArray<NSString>);
#[cfg(feature = "MPMusicPlayerQueueDescriptor")]
#[unsafe(method(setQueueWithDescriptor:))]
#[unsafe(method_family = none)]
pub unsafe fn setQueueWithDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
#[cfg(feature = "MPMusicPlayerQueueDescriptor")]
#[unsafe(method(prependQueueDescriptor:))]
#[unsafe(method_family = none)]
pub unsafe fn prependQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
#[cfg(feature = "MPMusicPlayerQueueDescriptor")]
#[unsafe(method(appendQueueDescriptor:))]
#[unsafe(method_family = none)]
pub unsafe fn appendQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
#[cfg(feature = "block2")]
#[unsafe(method(prepareToPlayWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn prepareToPlayWithCompletionHandler(
&self,
completion_handler: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
#[unsafe(method(skipToNextItem))]
#[unsafe(method_family = none)]
pub unsafe fn skipToNextItem(&self);
#[unsafe(method(skipToBeginning))]
#[unsafe(method_family = none)]
pub unsafe fn skipToBeginning(&self);
#[unsafe(method(skipToPreviousItem))]
#[unsafe(method_family = none)]
pub unsafe fn skipToPreviousItem(&self);
#[unsafe(method(beginGeneratingPlaybackNotifications))]
#[unsafe(method_family = none)]
pub unsafe fn beginGeneratingPlaybackNotifications(&self);
#[unsafe(method(endGeneratingPlaybackNotifications))]
#[unsafe(method_family = none)]
pub unsafe fn endGeneratingPlaybackNotifications(&self);
#[deprecated]
#[unsafe(method(iPodMusicPlayer))]
#[unsafe(method_family = none)]
pub unsafe fn iPodMusicPlayer() -> Retained<MPMusicPlayerController>;
);
}
extern "C" {
pub static MPMusicPlayerControllerPlaybackStateDidChangeNotification:
&'static NSNotificationName;
}
extern "C" {
pub static MPMusicPlayerControllerNowPlayingItemDidChangeNotification:
&'static NSNotificationName;
}
extern "C" {
pub static MPMusicPlayerControllerVolumeDidChangeNotification: &'static NSNotificationName;
}