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")]
105unsafe impl MPMediaPlayback for MPMusicPlayerController {}
106
107unsafe impl NSObjectProtocol for MPMusicPlayerController {}
108
109impl MPMusicPlayerController {
110    extern_methods!(
111        /// Playing items with applicationMusicPlayer does not affect Music's playback state.
112        #[unsafe(method(applicationMusicPlayer))]
113        #[unsafe(method_family = none)]
114        pub unsafe fn applicationMusicPlayer() -> Retained<MPMusicPlayerController>;
115
116        #[cfg(feature = "MPMusicPlayerApplicationController")]
117        /// Similar to applicationMusicPlayer, but allows direct manipulation of the queue.
118        #[unsafe(method(applicationQueuePlayer))]
119        #[unsafe(method_family = none)]
120        pub unsafe fn applicationQueuePlayer() -> Retained<MPMusicPlayerApplicationController>;
121
122        /// Playing media items with the systemMusicPlayer will replace the user's current Music state.
123        #[unsafe(method(systemMusicPlayer))]
124        #[unsafe(method_family = none)]
125        pub unsafe fn systemMusicPlayer() -> Retained<MPMusicPlayerController>;
126
127        #[unsafe(method(new))]
128        #[unsafe(method_family = new)]
129        pub unsafe fn new() -> Retained<Self>;
130
131        #[unsafe(method(init))]
132        #[unsafe(method_family = init)]
133        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
134
135        #[unsafe(method(playbackState))]
136        #[unsafe(method_family = none)]
137        pub unsafe fn playbackState(&self) -> MPMusicPlaybackState;
138
139        #[unsafe(method(repeatMode))]
140        #[unsafe(method_family = none)]
141        pub unsafe fn repeatMode(&self) -> MPMusicRepeatMode;
142
143        /// Setter for [`repeatMode`][Self::repeatMode].
144        #[unsafe(method(setRepeatMode:))]
145        #[unsafe(method_family = none)]
146        pub unsafe fn setRepeatMode(&self, repeat_mode: MPMusicRepeatMode);
147
148        #[unsafe(method(shuffleMode))]
149        #[unsafe(method_family = none)]
150        pub unsafe fn shuffleMode(&self) -> MPMusicShuffleMode;
151
152        /// Setter for [`shuffleMode`][Self::shuffleMode].
153        #[unsafe(method(setShuffleMode:))]
154        #[unsafe(method_family = none)]
155        pub unsafe fn setShuffleMode(&self, shuffle_mode: MPMusicShuffleMode);
156
157        #[deprecated = "Use MPVolumeView for volume control."]
158        #[unsafe(method(volume))]
159        #[unsafe(method_family = none)]
160        pub unsafe fn volume(&self) -> c_float;
161
162        /// Setter for [`volume`][Self::volume].
163        #[deprecated = "Use MPVolumeView for volume control."]
164        #[unsafe(method(setVolume:))]
165        #[unsafe(method_family = none)]
166        pub unsafe fn setVolume(&self, volume: c_float);
167
168        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
169        #[unsafe(method(nowPlayingItem))]
170        #[unsafe(method_family = none)]
171        pub unsafe fn nowPlayingItem(&self) -> Option<Retained<MPMediaItem>>;
172
173        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItem"))]
174        /// Setter for [`nowPlayingItem`][Self::nowPlayingItem].
175        #[unsafe(method(setNowPlayingItem:))]
176        #[unsafe(method_family = none)]
177        pub unsafe fn setNowPlayingItem(&self, now_playing_item: Option<&MPMediaItem>);
178
179        #[unsafe(method(indexOfNowPlayingItem))]
180        #[unsafe(method_family = none)]
181        pub unsafe fn indexOfNowPlayingItem(&self) -> NSUInteger;
182
183        #[cfg(feature = "MPMediaQuery")]
184        #[unsafe(method(setQueueWithQuery:))]
185        #[unsafe(method_family = none)]
186        pub unsafe fn setQueueWithQuery(&self, query: &MPMediaQuery);
187
188        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
189        #[unsafe(method(setQueueWithItemCollection:))]
190        #[unsafe(method_family = none)]
191        pub unsafe fn setQueueWithItemCollection(&self, item_collection: &MPMediaItemCollection);
192
193        #[unsafe(method(setQueueWithStoreIDs:))]
194        #[unsafe(method_family = none)]
195        pub unsafe fn setQueueWithStoreIDs(&self, store_i_ds: &NSArray<NSString>);
196
197        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
198        #[unsafe(method(setQueueWithDescriptor:))]
199        #[unsafe(method_family = none)]
200        pub unsafe fn setQueueWithDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
201
202        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
203        #[unsafe(method(prependQueueDescriptor:))]
204        #[unsafe(method_family = none)]
205        pub unsafe fn prependQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
206
207        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
208        #[unsafe(method(appendQueueDescriptor:))]
209        #[unsafe(method_family = none)]
210        pub unsafe fn appendQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
211
212        #[cfg(feature = "block2")]
213        #[unsafe(method(prepareToPlayWithCompletionHandler:))]
214        #[unsafe(method_family = none)]
215        pub unsafe fn prepareToPlayWithCompletionHandler(
216            &self,
217            completion_handler: &block2::Block<dyn Fn(*mut NSError)>,
218        );
219
220        #[unsafe(method(skipToNextItem))]
221        #[unsafe(method_family = none)]
222        pub unsafe fn skipToNextItem(&self);
223
224        #[unsafe(method(skipToBeginning))]
225        #[unsafe(method_family = none)]
226        pub unsafe fn skipToBeginning(&self);
227
228        #[unsafe(method(skipToPreviousItem))]
229        #[unsafe(method_family = none)]
230        pub unsafe fn skipToPreviousItem(&self);
231
232        #[unsafe(method(beginGeneratingPlaybackNotifications))]
233        #[unsafe(method_family = none)]
234        pub unsafe fn beginGeneratingPlaybackNotifications(&self);
235
236        #[unsafe(method(endGeneratingPlaybackNotifications))]
237        #[unsafe(method_family = none)]
238        pub unsafe fn endGeneratingPlaybackNotifications(&self);
239
240        #[deprecated]
241        #[unsafe(method(iPodMusicPlayer))]
242        #[unsafe(method_family = none)]
243        pub unsafe fn iPodMusicPlayer() -> Retained<MPMusicPlayerController>;
244    );
245}
246
247extern "C" {
248    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollerplaybackstatedidchangenotification?language=objc)
249    pub static MPMusicPlayerControllerPlaybackStateDidChangeNotification:
250        &'static NSNotificationName;
251}
252
253extern "C" {
254    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollernowplayingitemdidchangenotification?language=objc)
255    pub static MPMusicPlayerControllerNowPlayingItemDidChangeNotification:
256        &'static NSNotificationName;
257}
258
259extern "C" {
260    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollervolumedidchangenotification?language=objc)
261    pub static MPMusicPlayerControllerVolumeDidChangeNotification: &'static NSNotificationName;
262}