objc2-media-player 0.3.2

Bindings to the MediaPlayer framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfomediatype?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPNowPlayingInfoMediaType(pub NSUInteger);
impl MPNowPlayingInfoMediaType {
    #[doc(alias = "MPNowPlayingInfoMediaTypeNone")]
    pub const None: Self = Self(0);
    #[doc(alias = "MPNowPlayingInfoMediaTypeAudio")]
    pub const Audio: Self = Self(1);
    #[doc(alias = "MPNowPlayingInfoMediaTypeVideo")]
    pub const Video: Self = Self(2);
}

unsafe impl Encode for MPNowPlayingInfoMediaType {
    const ENCODING: Encoding = NSUInteger::ENCODING;
}

unsafe impl RefEncode for MPNowPlayingInfoMediaType {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayingplaybackstate?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPNowPlayingPlaybackState(pub NSUInteger);
impl MPNowPlayingPlaybackState {
    #[doc(alias = "MPNowPlayingPlaybackStateUnknown")]
    pub const Unknown: Self = Self(0);
    #[doc(alias = "MPNowPlayingPlaybackStatePlaying")]
    pub const Playing: Self = Self(1);
    #[doc(alias = "MPNowPlayingPlaybackStatePaused")]
    pub const Paused: Self = Self(2);
    #[doc(alias = "MPNowPlayingPlaybackStateStopped")]
    pub const Stopped: Self = Self(3);
    #[doc(alias = "MPNowPlayingPlaybackStateInterrupted")]
    pub const Interrupted: Self = Self(4);
}

unsafe impl Encode for MPNowPlayingPlaybackState {
    const ENCODING: Encoding = NSUInteger::ENCODING;
}

unsafe impl RefEncode for MPNowPlayingPlaybackState {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfocenter?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct MPNowPlayingInfoCenter;
);

extern_conformance!(
    unsafe impl NSObjectProtocol for MPNowPlayingInfoCenter {}
);

impl MPNowPlayingInfoCenter {
    extern_methods!(
        /// Returns the default now playing info center.
        /// The default center holds now playing info about the current application.
        #[unsafe(method(defaultCenter))]
        #[unsafe(method_family = none)]
        pub unsafe fn defaultCenter() -> Retained<MPNowPlayingInfoCenter>;

        #[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>;

        /// The current now playing info for the center.
        /// Setting the info to nil will clear it.
        #[unsafe(method(nowPlayingInfo))]
        #[unsafe(method_family = none)]
        pub unsafe fn nowPlayingInfo(&self) -> Option<Retained<NSDictionary<NSString, AnyObject>>>;

        /// Setter for [`nowPlayingInfo`][Self::nowPlayingInfo].
        ///
        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
        ///
        /// # Safety
        ///
        /// `now_playing_info` generic should be of the correct type.
        #[unsafe(method(setNowPlayingInfo:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setNowPlayingInfo(
            &self,
            now_playing_info: Option<&NSDictionary<NSString, AnyObject>>,
        );

        /// The current playback state of the app.
        /// This only applies on macOS, where playback state cannot be determined by
        /// the application's audio session. This property must be set every time
        /// the app begins or halts playback, otherwise remote control functionality may
        /// not work as expected.
        #[unsafe(method(playbackState))]
        #[unsafe(method_family = none)]
        pub unsafe fn playbackState(&self) -> MPNowPlayingPlaybackState;

        /// Setter for [`playbackState`][Self::playbackState].
        #[unsafe(method(setPlaybackState:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setPlaybackState(&self, playback_state: MPNowPlayingPlaybackState);

        /// Keys related to animated artwork that are supported by the current platform.
        ///
        /// If you specify an instance of animated artwork (an `MPMediaItemAnimatedArtwork`) to
        /// `nowPlayingInfo` using any key not in this collection it will be ignored.
        #[unsafe(method(supportedAnimatedArtworkKeys))]
        #[unsafe(method_family = none)]
        pub unsafe fn supportedAnimatedArtworkKeys() -> Retained<NSArray<NSString>>;
    );
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyelapsedplaybacktime?language=objc)
    pub static MPNowPlayingInfoPropertyElapsedPlaybackTime: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyplaybackrate?language=objc)
    pub static MPNowPlayingInfoPropertyPlaybackRate: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertydefaultplaybackrate?language=objc)
    pub static MPNowPlayingInfoPropertyDefaultPlaybackRate: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyplaybackqueueindex?language=objc)
    pub static MPNowPlayingInfoPropertyPlaybackQueueIndex: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyplaybackqueuecount?language=objc)
    pub static MPNowPlayingInfoPropertyPlaybackQueueCount: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertychapternumber?language=objc)
    pub static MPNowPlayingInfoPropertyChapterNumber: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertychaptercount?language=objc)
    pub static MPNowPlayingInfoPropertyChapterCount: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyislivestream?language=objc)
    pub static MPNowPlayingInfoPropertyIsLiveStream: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyavailablelanguageoptions?language=objc)
    pub static MPNowPlayingInfoPropertyAvailableLanguageOptions: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertycurrentlanguageoptions?language=objc)
    pub static MPNowPlayingInfoPropertyCurrentLanguageOptions: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfocollectionidentifier?language=objc)
    pub static MPNowPlayingInfoCollectionIdentifier: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyexternalcontentidentifier?language=objc)
    pub static MPNowPlayingInfoPropertyExternalContentIdentifier: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyexternaluserprofileidentifier?language=objc)
    pub static MPNowPlayingInfoPropertyExternalUserProfileIdentifier: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyserviceidentifier?language=objc)
    pub static MPNowPlayingInfoPropertyServiceIdentifier: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyplaybackprogress?language=objc)
    pub static MPNowPlayingInfoPropertyPlaybackProgress: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertymediatype?language=objc)
    pub static MPNowPlayingInfoPropertyMediaType: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyasseturl?language=objc)
    pub static MPNowPlayingInfoPropertyAssetURL: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertycurrentplaybackdate?language=objc)
    pub static MPNowPlayingInfoPropertyCurrentPlaybackDate: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyadtimeranges?language=objc)
    pub static MPNowPlayingInfoPropertyAdTimeRanges: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertycreditsstarttime?language=objc)
    pub static MPNowPlayingInfoPropertyCreditsStartTime: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyinternationalstandardrecordingcode?language=objc)
    pub static MPNowPlayingInfoPropertyInternationalStandardRecordingCode: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyexcludefromsuggestions?language=objc)
    pub static MPNowPlayingInfoPropertyExcludeFromSuggestions: &'static NSString;
}

extern "C" {
    /// 1:1 (square) animated artwork for the current media item.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfoproperty1x1animatedartwork?language=objc)
    pub static MPNowPlayingInfoProperty1x1AnimatedArtwork: &'static NSString;
}

extern "C" {
    /// 3:4 (tall) animated artwork for the current media item.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfoproperty3x4animatedartwork?language=objc)
    pub static MPNowPlayingInfoProperty3x4AnimatedArtwork: &'static NSString;
}