objc2_media_player/generated/
MPMusicPlayerController.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplaybackstate?language=objc)
11// NS_ENUM
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
14pub struct MPMusicPlaybackState(pub NSInteger);
15impl MPMusicPlaybackState {
16    #[doc(alias = "MPMusicPlaybackStateStopped")]
17    pub const Stopped: Self = Self(0);
18    #[doc(alias = "MPMusicPlaybackStatePlaying")]
19    pub const Playing: Self = Self(1);
20    #[doc(alias = "MPMusicPlaybackStatePaused")]
21    pub const Paused: Self = Self(2);
22    #[doc(alias = "MPMusicPlaybackStateInterrupted")]
23    pub const Interrupted: Self = Self(3);
24    #[doc(alias = "MPMusicPlaybackStateSeekingForward")]
25    pub const SeekingForward: Self = Self(4);
26    #[doc(alias = "MPMusicPlaybackStateSeekingBackward")]
27    pub const SeekingBackward: Self = Self(5);
28}
29
30unsafe impl Encode for MPMusicPlaybackState {
31    const ENCODING: Encoding = NSInteger::ENCODING;
32}
33
34unsafe impl RefEncode for MPMusicPlaybackState {
35    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
36}
37
38/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicrepeatmode?language=objc)
39// NS_ENUM
40#[repr(transparent)]
41#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
42pub struct MPMusicRepeatMode(pub NSInteger);
43impl MPMusicRepeatMode {
44    #[doc(alias = "MPMusicRepeatModeDefault")]
45    pub const Default: Self = Self(0);
46    #[doc(alias = "MPMusicRepeatModeNone")]
47    pub const None: Self = Self(1);
48    #[doc(alias = "MPMusicRepeatModeOne")]
49    pub const One: Self = Self(2);
50    #[doc(alias = "MPMusicRepeatModeAll")]
51    pub const All: Self = Self(3);
52}
53
54unsafe impl Encode for MPMusicRepeatMode {
55    const ENCODING: Encoding = NSInteger::ENCODING;
56}
57
58unsafe impl RefEncode for MPMusicRepeatMode {
59    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
60}
61
62/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicshufflemode?language=objc)
63// NS_ENUM
64#[repr(transparent)]
65#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
66pub struct MPMusicShuffleMode(pub NSInteger);
67impl MPMusicShuffleMode {
68    #[doc(alias = "MPMusicShuffleModeDefault")]
69    pub const Default: Self = Self(0);
70    #[doc(alias = "MPMusicShuffleModeOff")]
71    pub const Off: Self = Self(1);
72    #[doc(alias = "MPMusicShuffleModeSongs")]
73    pub const Songs: Self = Self(2);
74    #[doc(alias = "MPMusicShuffleModeAlbums")]
75    pub const Albums: Self = Self(3);
76}
77
78unsafe impl Encode for MPMusicShuffleMode {
79    const ENCODING: Encoding = NSInteger::ENCODING;
80}
81
82unsafe impl RefEncode for MPMusicShuffleMode {
83    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
84}
85
86extern_protocol!(
87    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpsystemmusicplayercontroller?language=objc)
88    pub unsafe trait MPSystemMusicPlayerController: NSObjectProtocol {
89        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
90        /// Switches to Music to play the content provided by the queue descriptor.
91        #[unsafe(method(openToPlayQueueDescriptor:))]
92        #[unsafe(method_family = none)]
93        unsafe fn openToPlayQueueDescriptor(&self, queue_descriptor: &MPMusicPlayerQueueDescriptor);
94    }
95);
96
97extern_class!(
98    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontroller?language=objc)
99    #[unsafe(super(NSObject))]
100    #[derive(Debug, PartialEq, Eq, Hash)]
101    pub struct MPMusicPlayerController;
102);
103
104#[cfg(feature = "MPMediaPlayback")]
105extern_conformance!(
106    unsafe impl MPMediaPlayback for MPMusicPlayerController {}
107);
108
109extern_conformance!(
110    unsafe impl NSObjectProtocol for MPMusicPlayerController {}
111);
112
113impl MPMusicPlayerController {
114    extern_methods!(
115        /// Playing items with applicationMusicPlayer does not affect Music's playback state.
116        #[unsafe(method(applicationMusicPlayer))]
117        #[unsafe(method_family = none)]
118        pub unsafe fn applicationMusicPlayer() -> Retained<MPMusicPlayerController>;
119
120        #[cfg(feature = "MPMusicPlayerApplicationController")]
121        /// Similar to applicationMusicPlayer, but allows direct manipulation of the queue.
122        #[unsafe(method(applicationQueuePlayer))]
123        #[unsafe(method_family = none)]
124        pub unsafe fn applicationQueuePlayer() -> Retained<MPMusicPlayerApplicationController>;
125
126        /// Playing media items with the systemMusicPlayer will replace the user's current Music state.
127        #[unsafe(method(systemMusicPlayer))]
128        #[unsafe(method_family = none)]
129        pub unsafe fn systemMusicPlayer() -> Retained<MPMusicPlayerController>;
130
131        #[unsafe(method(new))]
132        #[unsafe(method_family = new)]
133        pub unsafe fn new() -> Retained<Self>;
134
135        #[unsafe(method(init))]
136        #[unsafe(method_family = init)]
137        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
138
139        #[unsafe(method(playbackState))]
140        #[unsafe(method_family = none)]
141        pub unsafe fn playbackState(&self) -> MPMusicPlaybackState;
142
143        #[unsafe(method(repeatMode))]
144        #[unsafe(method_family = none)]
145        pub unsafe fn repeatMode(&self) -> MPMusicRepeatMode;
146
147        /// Setter for [`repeatMode`][Self::repeatMode].
148        #[unsafe(method(setRepeatMode:))]
149        #[unsafe(method_family = none)]
150        pub unsafe fn setRepeatMode(&self, repeat_mode: MPMusicRepeatMode);
151
152        #[unsafe(method(shuffleMode))]
153        #[unsafe(method_family = none)]
154        pub unsafe fn shuffleMode(&self) -> MPMusicShuffleMode;
155
156        /// Setter for [`shuffleMode`][Self::shuffleMode].
157        #[unsafe(method(setShuffleMode:))]
158        #[unsafe(method_family = none)]
159        pub unsafe fn setShuffleMode(&self, shuffle_mode: MPMusicShuffleMode);
160
161        #[deprecated = "Use MPVolumeView for volume control."]
162        #[unsafe(method(volume))]
163        #[unsafe(method_family = none)]
164        pub unsafe fn volume(&self) -> c_float;
165
166        /// Setter for [`volume`][Self::volume].
167        #[deprecated = "Use MPVolumeView for volume control."]
168        #[unsafe(method(setVolume:))]
169        #[unsafe(method_family = none)]
170        pub unsafe fn setVolume(&self, volume: c_float);
171
172        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
173        #[unsafe(method(nowPlayingItem))]
174        #[unsafe(method_family = none)]
175        pub unsafe fn nowPlayingItem(&self) -> Option<Retained<MPMediaItem>>;
176
177        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
178        /// Setter for [`nowPlayingItem`][Self::nowPlayingItem].
179        ///
180        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
181        #[unsafe(method(setNowPlayingItem:))]
182        #[unsafe(method_family = none)]
183        pub unsafe fn setNowPlayingItem(&self, now_playing_item: Option<&MPMediaItem>);
184
185        #[unsafe(method(indexOfNowPlayingItem))]
186        #[unsafe(method_family = none)]
187        pub unsafe fn indexOfNowPlayingItem(&self) -> NSUInteger;
188
189        #[cfg(feature = "MPMediaQuery")]
190        #[unsafe(method(setQueueWithQuery:))]
191        #[unsafe(method_family = none)]
192        pub unsafe fn setQueueWithQuery(&self, query: &MPMediaQuery);
193
194        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
195        #[unsafe(method(setQueueWithItemCollection:))]
196        #[unsafe(method_family = none)]
197        pub unsafe fn setQueueWithItemCollection(&self, item_collection: &MPMediaItemCollection);
198
199        #[unsafe(method(setQueueWithStoreIDs:))]
200        #[unsafe(method_family = none)]
201        pub unsafe fn setQueueWithStoreIDs(&self, store_i_ds: &NSArray<NSString>);
202
203        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
204        #[unsafe(method(setQueueWithDescriptor:))]
205        #[unsafe(method_family = none)]
206        pub unsafe fn setQueueWithDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
207
208        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
209        #[unsafe(method(prependQueueDescriptor:))]
210        #[unsafe(method_family = none)]
211        pub unsafe fn prependQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
212
213        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
214        #[unsafe(method(appendQueueDescriptor:))]
215        #[unsafe(method_family = none)]
216        pub unsafe fn appendQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
217
218        #[cfg(feature = "block2")]
219        #[unsafe(method(prepareToPlayWithCompletionHandler:))]
220        #[unsafe(method_family = none)]
221        pub unsafe fn prepareToPlayWithCompletionHandler(
222            &self,
223            completion_handler: &block2::DynBlock<dyn Fn(*mut NSError)>,
224        );
225
226        #[unsafe(method(skipToNextItem))]
227        #[unsafe(method_family = none)]
228        pub unsafe fn skipToNextItem(&self);
229
230        #[unsafe(method(skipToBeginning))]
231        #[unsafe(method_family = none)]
232        pub unsafe fn skipToBeginning(&self);
233
234        #[unsafe(method(skipToPreviousItem))]
235        #[unsafe(method_family = none)]
236        pub unsafe fn skipToPreviousItem(&self);
237
238        #[unsafe(method(beginGeneratingPlaybackNotifications))]
239        #[unsafe(method_family = none)]
240        pub unsafe fn beginGeneratingPlaybackNotifications(&self);
241
242        #[unsafe(method(endGeneratingPlaybackNotifications))]
243        #[unsafe(method_family = none)]
244        pub unsafe fn endGeneratingPlaybackNotifications(&self);
245
246        #[deprecated]
247        #[unsafe(method(iPodMusicPlayer))]
248        #[unsafe(method_family = none)]
249        pub unsafe fn iPodMusicPlayer() -> Retained<MPMusicPlayerController>;
250    );
251}
252
253extern "C" {
254    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollerplaybackstatedidchangenotification?language=objc)
255    pub static MPMusicPlayerControllerPlaybackStateDidChangeNotification:
256        &'static NSNotificationName;
257}
258
259extern "C" {
260    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollernowplayingitemdidchangenotification?language=objc)
261    pub static MPMusicPlayerControllerNowPlayingItemDidChangeNotification:
262        &'static NSNotificationName;
263}
264
265extern "C" {
266    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollervolumedidchangenotification?language=objc)
267    pub static MPMusicPlayerControllerVolumeDidChangeNotification: &'static NSNotificationName;
268}