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        #[unsafe(method(setNowPlayingItem:))]
180        #[unsafe(method_family = none)]
181        pub unsafe fn setNowPlayingItem(&self, now_playing_item: Option<&MPMediaItem>);
182
183        #[unsafe(method(indexOfNowPlayingItem))]
184        #[unsafe(method_family = none)]
185        pub unsafe fn indexOfNowPlayingItem(&self) -> NSUInteger;
186
187        #[cfg(feature = "MPMediaQuery")]
188        #[unsafe(method(setQueueWithQuery:))]
189        #[unsafe(method_family = none)]
190        pub unsafe fn setQueueWithQuery(&self, query: &MPMediaQuery);
191
192        #[cfg(all(feature = "MPMediaEntity", feature = "MPMediaItemCollection"))]
193        #[unsafe(method(setQueueWithItemCollection:))]
194        #[unsafe(method_family = none)]
195        pub unsafe fn setQueueWithItemCollection(&self, item_collection: &MPMediaItemCollection);
196
197        #[unsafe(method(setQueueWithStoreIDs:))]
198        #[unsafe(method_family = none)]
199        pub unsafe fn setQueueWithStoreIDs(&self, store_i_ds: &NSArray<NSString>);
200
201        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
202        #[unsafe(method(setQueueWithDescriptor:))]
203        #[unsafe(method_family = none)]
204        pub unsafe fn setQueueWithDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
205
206        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
207        #[unsafe(method(prependQueueDescriptor:))]
208        #[unsafe(method_family = none)]
209        pub unsafe fn prependQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
210
211        #[cfg(feature = "MPMusicPlayerQueueDescriptor")]
212        #[unsafe(method(appendQueueDescriptor:))]
213        #[unsafe(method_family = none)]
214        pub unsafe fn appendQueueDescriptor(&self, descriptor: &MPMusicPlayerQueueDescriptor);
215
216        #[cfg(feature = "block2")]
217        #[unsafe(method(prepareToPlayWithCompletionHandler:))]
218        #[unsafe(method_family = none)]
219        pub unsafe fn prepareToPlayWithCompletionHandler(
220            &self,
221            completion_handler: &block2::DynBlock<dyn Fn(*mut NSError)>,
222        );
223
224        #[unsafe(method(skipToNextItem))]
225        #[unsafe(method_family = none)]
226        pub unsafe fn skipToNextItem(&self);
227
228        #[unsafe(method(skipToBeginning))]
229        #[unsafe(method_family = none)]
230        pub unsafe fn skipToBeginning(&self);
231
232        #[unsafe(method(skipToPreviousItem))]
233        #[unsafe(method_family = none)]
234        pub unsafe fn skipToPreviousItem(&self);
235
236        #[unsafe(method(beginGeneratingPlaybackNotifications))]
237        #[unsafe(method_family = none)]
238        pub unsafe fn beginGeneratingPlaybackNotifications(&self);
239
240        #[unsafe(method(endGeneratingPlaybackNotifications))]
241        #[unsafe(method_family = none)]
242        pub unsafe fn endGeneratingPlaybackNotifications(&self);
243
244        #[deprecated]
245        #[unsafe(method(iPodMusicPlayer))]
246        #[unsafe(method_family = none)]
247        pub unsafe fn iPodMusicPlayer() -> Retained<MPMusicPlayerController>;
248    );
249}
250
251extern "C" {
252    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollerplaybackstatedidchangenotification?language=objc)
253    pub static MPMusicPlayerControllerPlaybackStateDidChangeNotification:
254        &'static NSNotificationName;
255}
256
257extern "C" {
258    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollernowplayingitemdidchangenotification?language=objc)
259    pub static MPMusicPlayerControllerNowPlayingItemDidChangeNotification:
260        &'static NSNotificationName;
261}
262
263extern "C" {
264    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontrollervolumedidchangenotification?language=objc)
265    pub static MPMusicPlayerControllerVolumeDidChangeNotification: &'static NSNotificationName;
266}