#[cfg(feature = "block2")]
use block2::*;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MPAdTimeRange;
unsafe impl ClassType for MPAdTimeRange {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSCopying for MPAdTimeRange {}
unsafe impl NSObjectProtocol for MPAdTimeRange {}
extern_methods!(
unsafe impl MPAdTimeRange {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MPNowPlayingSession;
unsafe impl ClassType for MPNowPlayingSession {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for MPNowPlayingSession {}
extern_methods!(
unsafe impl MPNowPlayingSession {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics Other delegate)]
pub unsafe fn delegate(
&self,
) -> Option<Id<ProtocolObject<dyn MPNowPlayingSessionDelegate>>>;
#[method(setDelegate:)]
pub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn MPNowPlayingSessionDelegate>>,
);
#[method(automaticallyPublishesNowPlayingInfo)]
pub unsafe fn automaticallyPublishesNowPlayingInfo(&self) -> bool;
#[method(setAutomaticallyPublishesNowPlayingInfo:)]
pub unsafe fn setAutomaticallyPublishesNowPlayingInfo(
&self,
automatically_publishes_now_playing_info: bool,
);
#[cfg(feature = "MPNowPlayingInfoCenter")]
#[method_id(@__retain_semantics Other nowPlayingInfoCenter)]
pub unsafe fn nowPlayingInfoCenter(&self) -> Id<MPNowPlayingInfoCenter>;
#[cfg(feature = "MPRemoteCommandCenter")]
#[method_id(@__retain_semantics Other remoteCommandCenter)]
pub unsafe fn remoteCommandCenter(&self) -> Id<MPRemoteCommandCenter>;
#[method(canBecomeActive)]
pub unsafe fn canBecomeActive(&self) -> bool;
#[method(isActive)]
pub unsafe fn isActive(&self) -> bool;
#[cfg(feature = "block2")]
#[method(becomeActiveIfPossibleWithCompletion:)]
pub unsafe fn becomeActiveIfPossibleWithCompletion(
&self,
completion: Option<&Block<dyn Fn(Bool)>>,
);
}
);
extern_protocol!(
pub unsafe trait MPNowPlayingSessionDelegate: NSObjectProtocol {
#[optional]
#[method(nowPlayingSessionDidChangeActive:)]
unsafe fn nowPlayingSessionDidChangeActive(
&self,
now_playing_session: &MPNowPlayingSession,
);
#[optional]
#[method(nowPlayingSessionDidChangeCanBecomeActive:)]
unsafe fn nowPlayingSessionDidChangeCanBecomeActive(
&self,
now_playing_session: &MPNowPlayingSession,
);
}
unsafe impl ProtocolType for dyn MPNowPlayingSessionDelegate {}
);