use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[unsafe(super(INIntent, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "INIntent")]
pub struct INPlayMediaIntent;
);
#[cfg(feature = "INIntent")]
extern_conformance!(
unsafe impl NSCoding for INPlayMediaIntent {}
);
#[cfg(feature = "INIntent")]
extern_conformance!(
unsafe impl NSCopying for INPlayMediaIntent {}
);
#[cfg(feature = "INIntent")]
unsafe impl CopyingHelper for INPlayMediaIntent {
type Result = Self;
}
#[cfg(feature = "INIntent")]
extern_conformance!(
unsafe impl NSObjectProtocol for INPlayMediaIntent {}
);
#[cfg(feature = "INIntent")]
extern_conformance!(
unsafe impl NSSecureCoding for INPlayMediaIntent {}
);
#[cfg(feature = "INIntent")]
impl INPlayMediaIntent {
extern_methods!(
#[cfg(all(
feature = "INMediaItem",
feature = "INMediaSearch",
feature = "INPlaybackQueueLocation",
feature = "INPlaybackRepeatMode"
))]
#[unsafe(method(initWithMediaItems:mediaContainer:playShuffled:playbackRepeatMode:resumePlayback:playbackQueueLocation:playbackSpeed:mediaSearch:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithMediaItems_mediaContainer_playShuffled_playbackRepeatMode_resumePlayback_playbackQueueLocation_playbackSpeed_mediaSearch(
this: Allocated<Self>,
media_items: Option<&NSArray<INMediaItem>>,
media_container: Option<&INMediaItem>,
play_shuffled: Option<&NSNumber>,
playback_repeat_mode: INPlaybackRepeatMode,
resume_playback: Option<&NSNumber>,
playback_queue_location: INPlaybackQueueLocation,
playback_speed: Option<&NSNumber>,
media_search: Option<&INMediaSearch>,
) -> Retained<Self>;
#[cfg(feature = "INMediaItem")]
#[unsafe(method(mediaItems))]
#[unsafe(method_family = none)]
pub unsafe fn mediaItems(&self) -> Option<Retained<NSArray<INMediaItem>>>;
#[cfg(feature = "INMediaItem")]
#[unsafe(method(mediaContainer))]
#[unsafe(method_family = none)]
pub unsafe fn mediaContainer(&self) -> Option<Retained<INMediaItem>>;
#[unsafe(method(playShuffled))]
#[unsafe(method_family = none)]
pub unsafe fn playShuffled(&self) -> Option<Retained<NSNumber>>;
#[cfg(feature = "INPlaybackRepeatMode")]
#[unsafe(method(playbackRepeatMode))]
#[unsafe(method_family = none)]
pub unsafe fn playbackRepeatMode(&self) -> INPlaybackRepeatMode;
#[unsafe(method(resumePlayback))]
#[unsafe(method_family = none)]
pub unsafe fn resumePlayback(&self) -> Option<Retained<NSNumber>>;
#[cfg(feature = "INPlaybackQueueLocation")]
#[unsafe(method(playbackQueueLocation))]
#[unsafe(method_family = none)]
pub unsafe fn playbackQueueLocation(&self) -> INPlaybackQueueLocation;
#[unsafe(method(playbackSpeed))]
#[unsafe(method_family = none)]
pub unsafe fn playbackSpeed(&self) -> Option<Retained<NSNumber>>;
#[cfg(feature = "INMediaSearch")]
#[unsafe(method(mediaSearch))]
#[unsafe(method_family = none)]
pub unsafe fn mediaSearch(&self) -> Option<Retained<INMediaSearch>>;
);
}
#[cfg(feature = "INIntent")]
impl INPlayMediaIntent {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
extern_protocol!(
pub unsafe trait INPlayMediaIntentHandling: NSObjectProtocol {
#[cfg(all(
feature = "INIntent",
feature = "INIntentResponse",
feature = "INPlayMediaIntentResponse",
feature = "block2"
))]
#[unsafe(method(handlePlayMedia:completion:))]
#[unsafe(method_family = none)]
unsafe fn handlePlayMedia_completion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<dyn Fn(NonNull<INPlayMediaIntentResponse>)>,
);
#[cfg(all(
feature = "INIntent",
feature = "INIntentResponse",
feature = "INPlayMediaIntentResponse",
feature = "block2"
))]
#[optional]
#[unsafe(method(confirmPlayMedia:completion:))]
#[unsafe(method_family = none)]
unsafe fn confirmPlayMedia_completion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<dyn Fn(NonNull<INPlayMediaIntentResponse>)>,
);
#[cfg(all(
feature = "INIntent",
feature = "INIntentResolutionResult",
feature = "INMediaItemResolutionResult",
feature = "INPlayMediaMediaItemResolutionResult",
feature = "block2"
))]
#[optional]
#[unsafe(method(resolveMediaItemsForPlayMedia:withCompletion:))]
#[unsafe(method_family = none)]
unsafe fn resolveMediaItemsForPlayMedia_withCompletion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<
dyn Fn(NonNull<NSArray<INPlayMediaMediaItemResolutionResult>>),
>,
);
#[cfg(all(
feature = "INBooleanResolutionResult",
feature = "INIntent",
feature = "INIntentResolutionResult",
feature = "block2"
))]
#[optional]
#[unsafe(method(resolvePlayShuffledForPlayMedia:withCompletion:))]
#[unsafe(method_family = none)]
unsafe fn resolvePlayShuffledForPlayMedia_withCompletion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<dyn Fn(NonNull<INBooleanResolutionResult>)>,
);
#[cfg(all(
feature = "INIntent",
feature = "INIntentResolutionResult",
feature = "INPlaybackRepeatModeResolutionResult",
feature = "block2"
))]
#[optional]
#[unsafe(method(resolvePlaybackRepeatModeForPlayMedia:withCompletion:))]
#[unsafe(method_family = none)]
unsafe fn resolvePlaybackRepeatModeForPlayMedia_withCompletion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<dyn Fn(NonNull<INPlaybackRepeatModeResolutionResult>)>,
);
#[cfg(all(
feature = "INBooleanResolutionResult",
feature = "INIntent",
feature = "INIntentResolutionResult",
feature = "block2"
))]
#[optional]
#[unsafe(method(resolveResumePlaybackForPlayMedia:withCompletion:))]
#[unsafe(method_family = none)]
unsafe fn resolveResumePlaybackForPlayMedia_withCompletion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<dyn Fn(NonNull<INBooleanResolutionResult>)>,
);
#[cfg(all(
feature = "INIntent",
feature = "INIntentResolutionResult",
feature = "INPlaybackQueueLocationResolutionResult",
feature = "block2"
))]
#[optional]
#[unsafe(method(resolvePlaybackQueueLocationForPlayMedia:withCompletion:))]
#[unsafe(method_family = none)]
unsafe fn resolvePlaybackQueueLocationForPlayMedia_withCompletion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<dyn Fn(NonNull<INPlaybackQueueLocationResolutionResult>)>,
);
#[cfg(all(
feature = "INDoubleResolutionResult",
feature = "INIntent",
feature = "INIntentResolutionResult",
feature = "INPlayMediaPlaybackSpeedResolutionResult",
feature = "block2"
))]
#[optional]
#[unsafe(method(resolvePlaybackSpeedForPlayMedia:withCompletion:))]
#[unsafe(method_family = none)]
unsafe fn resolvePlaybackSpeedForPlayMedia_withCompletion(
&self,
intent: &INPlayMediaIntent,
completion: &block2::DynBlock<
dyn Fn(NonNull<INPlayMediaPlaybackSpeedResolutionResult>),
>,
);
}
);