xamarin-macios/src/messages.cs

393 строки
10 KiB
C#

//
// Messages bindings
//
// Authors:
// Vincent Dondain <vincent@xamarin.com>
//
// Copyright 2016 Xamarin Inc. All rights reserved.
//
using System;
using CoreFoundation;
using CoreGraphics;
using Foundation;
using ObjCRuntime;
using UIKit;
#if !NET
using NativeHandle = System.IntPtr;
#endif
#if !MONOMAC
namespace Messages {
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[Native]
public enum MSMessagesAppPresentationStyle : ulong {
Compact,
Expanded,
Transcript,
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[Native]
public enum MSStickerSize : long {
Small,
Regular,
Large
}
[MacCatalyst (14, 0)]
[Native]
[ErrorDomain ("MSMessagesErrorDomain")]
public enum MSMessageErrorCode : long {
Unknown = -1,
FileNotFound = 1,
FileUnreadable,
ImproperFileType,
ImproperFileUrl,
StickerFileImproperFileAttributes,
StickerFileImproperFileSize,
StickerFileImproperFileFormat,
UrlExceedsMaxSize,
SendWithoutRecentInteraction,
SendWhileNotVisible,
APIUnavailableInPresentationContext,
}
[MacCatalyst (14, 0)]
[iOS (12, 0)]
[Native]
public enum MSMessagesAppPresentationContext : long {
Messages,
Media,
}
[MacCatalyst (14, 0)]
[iOS (11, 0)]
[Protocol]
interface MSMessagesAppTranscriptPresentation {
[Abstract]
[Export ("contentSizeThatFits:")]
CGSize GetContentSizeThatFits (CGSize size);
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (UIViewController))]
interface MSMessagesAppViewController : MSMessagesAppTranscriptPresentation {
// inlined ctor
[Export ("initWithNibName:bundle:")]
NativeHandle Constructor ([NullAllowed] string nibName, [NullAllowed] NSBundle bundle);
[NullAllowed, Export ("activeConversation", ArgumentSemantic.Strong)]
MSConversation ActiveConversation { get; }
[Export ("presentationStyle", ArgumentSemantic.Assign)]
MSMessagesAppPresentationStyle PresentationStyle { get; }
[Export ("requestPresentationStyle:")]
void Request (MSMessagesAppPresentationStyle presentationStyle);
[Export ("dismiss")]
void Dismiss ();
[Export ("willBecomeActiveWithConversation:")]
void WillBecomeActive (MSConversation conversation);
[Export ("didBecomeActiveWithConversation:")]
void DidBecomeActive (MSConversation conversation);
[Export ("willResignActiveWithConversation:")]
void WillResignActive (MSConversation conversation);
[Export ("didResignActiveWithConversation:")]
void DidResignActive (MSConversation conversation);
[Export ("willSelectMessage:conversation:")]
void WillSelectMessage (MSMessage message, MSConversation conversation);
[Export ("didSelectMessage:conversation:")]
void DidSelectMessage (MSMessage message, MSConversation conversation);
[Export ("didReceiveMessage:conversation:")]
void DidReceiveMessage (MSMessage message, MSConversation conversation);
[Export ("didStartSendingMessage:conversation:")]
void DidStartSendingMessage (MSMessage message, MSConversation conversation);
[Export ("didCancelSendingMessage:conversation:")]
void DidCancelSendingMessage (MSMessage message, MSConversation conversation);
[Export ("willTransitionToPresentationStyle:")]
void WillTransition (MSMessagesAppPresentationStyle presentationStyle);
[Export ("didTransitionToPresentationStyle:")]
void DidTransition (MSMessagesAppPresentationStyle presentationStyle);
[iOS (12, 0)]
[MacCatalyst (14, 0)]
[Export ("presentationContext")]
MSMessagesAppPresentationContext PresentationContext { get; }
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (NSObject))]
interface MSConversation {
[Export ("localParticipantIdentifier")]
NSUuid LocalParticipantIdentifier { get; }
[Export ("remoteParticipantIdentifiers")]
NSUuid [] RemoteParticipantIdentifiers { get; }
[NullAllowed, Export ("selectedMessage")]
MSMessage SelectedMessage { get; }
[Export ("insertMessage:completionHandler:")]
[Async]
void InsertMessage (MSMessage message, [NullAllowed] Action<NSError> completionHandler);
[Export ("insertSticker:completionHandler:")]
[Async]
void InsertSticker (MSSticker sticker, [NullAllowed] Action<NSError> completionHandler);
[Export ("insertText:completionHandler:")]
[Async]
void InsertText (string text, [NullAllowed] Action<NSError> completionHandler);
[Export ("insertAttachment:withAlternateFilename:completionHandler:")]
[Async]
void InsertAttachment (NSUrl url, [NullAllowed] string filename, [NullAllowed] Action<NSError> completionHandler);
[iOS (11, 0)]
[MacCatalyst (14, 0)]
[Export ("sendMessage:completionHandler:")]
[Async]
void SendMessage (MSMessage message, [NullAllowed] Action<NSError> completionHandler);
[iOS (11, 0)]
[MacCatalyst (14, 0)]
[Export ("sendSticker:completionHandler:")]
[Async]
void SendSticker (MSSticker sticker, [NullAllowed] Action<NSError> completionHandler);
[iOS (11, 0)]
[MacCatalyst (14, 0)]
[Export ("sendText:completionHandler:")]
[Async]
void SendText (string text, [NullAllowed] Action<NSError> completionHandler);
[iOS (11, 0)]
[MacCatalyst (14, 0)]
[Export ("sendAttachment:withAlternateFilename:completionHandler:")]
[Async]
void SendAttachment (NSUrl url, [NullAllowed] string filename, [NullAllowed] Action<NSError> completionHandler);
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (NSObject))]
[DisableDefaultCtor] // designated
interface MSMessage : NSCopying, NSSecureCoding {
[DesignatedInitializer]
[Export ("init")]
NativeHandle Constructor ();
[Export ("initWithSession:")]
[DesignatedInitializer]
NativeHandle Constructor (MSSession session);
[NullAllowed, Export ("session")]
MSSession Session { get; }
[iOS (11, 0)]
[MacCatalyst (14, 0)]
[Export ("pending")]
bool Pending { [Bind ("isPending")] get; }
[Export ("senderParticipantIdentifier")]
NSUuid SenderParticipantIdentifier { get; }
[NullAllowed, Export ("layout", ArgumentSemantic.Copy)]
MSMessageLayout Layout { get; set; }
[NullAllowed, Export ("URL", ArgumentSemantic.Copy)]
NSUrl Url { get; set; }
[Export ("shouldExpire")]
bool ShouldExpire { get; set; }
[NullAllowed, Export ("accessibilityLabel")]
string AccessibilityLabel { get; set; }
[NullAllowed, Export ("summaryText")]
string SummaryText { get; set; }
[NullAllowed, Export ("error", ArgumentSemantic.Copy)]
NSError Error { get; set; }
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (NSObject))]
[Abstract] // as per docs
[DisableDefaultCtor]
interface MSMessageLayout : NSCopying { }
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (MSMessageLayout))]
interface MSMessageTemplateLayout {
[NullAllowed, Export ("caption")]
string Caption { get; set; }
[NullAllowed, Export ("subcaption")]
string Subcaption { get; set; }
[NullAllowed, Export ("trailingCaption")]
string TrailingCaption { get; set; }
[NullAllowed, Export ("trailingSubcaption")]
string TrailingSubcaption { get; set; }
[NullAllowed, Export ("image", ArgumentSemantic.Strong)]
UIImage Image { get; set; }
[NullAllowed, Export ("mediaFileURL", ArgumentSemantic.Copy)]
NSUrl MediaFileUrl { get; set; }
[NullAllowed, Export ("imageTitle")]
string ImageTitle { get; set; }
[NullAllowed, Export ("imageSubtitle")]
string ImageSubtitle { get; set; }
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (NSObject))]
interface MSSession : NSSecureCoding { }
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (NSObject))]
[DisableDefaultCtor]
interface MSSticker {
[Export ("initWithContentsOfFileURL:localizedDescription:error:")]
[DesignatedInitializer]
NativeHandle Constructor (NSUrl fileUrl, string localizedDescription, [NullAllowed] out NSError error);
[Export ("imageFileURL", ArgumentSemantic.Strong)]
NSUrl ImageFileUrl { get; }
[Export ("localizedDescription")]
string LocalizedDescription { get; }
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (UIView))]
interface MSStickerView {
// inlined ctor
[Export ("initWithFrame:")]
NativeHandle Constructor (CGRect frame);
[Export ("initWithFrame:sticker:")]
NativeHandle Constructor (CGRect frame, [NullAllowed] MSSticker sticker);
[NullAllowed, Export ("sticker", ArgumentSemantic.Strong)]
MSSticker Sticker { get; set; }
[Export ("animationDuration")]
double AnimationDuration { get; }
[Export ("startAnimating")]
void StartAnimating ();
[Export ("stopAnimating")]
void StopAnimating ();
[Export ("isAnimating")]
bool IsAnimating { get; }
}
interface IMSStickerBrowserViewDataSource { }
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[Protocol, Model]
[BaseType (typeof (NSObject))]
interface MSStickerBrowserViewDataSource {
[Abstract]
[Export ("numberOfStickersInStickerBrowserView:")]
nint GetNumberOfStickers (MSStickerBrowserView stickerBrowserView);
[Abstract]
[Export ("stickerBrowserView:stickerAtIndex:")]
MSSticker GetSticker (MSStickerBrowserView stickerBrowserView, nint index);
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (UIView))]
interface MSStickerBrowserView {
[Export ("initWithFrame:")]
[DesignatedInitializer]
NativeHandle Constructor (CGRect frame);
[Export ("initWithFrame:stickerSize:")]
[DesignatedInitializer]
NativeHandle Constructor (CGRect frame, MSStickerSize stickerSize);
[Export ("stickerSize", ArgumentSemantic.Assign)]
MSStickerSize StickerSize { get; }
[NullAllowed, Export ("dataSource", ArgumentSemantic.Weak)]
IMSStickerBrowserViewDataSource DataSource { get; set; }
[Export ("contentOffset", ArgumentSemantic.Assign)]
CGPoint ContentOffset { get; set; }
[Export ("contentInset", ArgumentSemantic.Assign)]
UIEdgeInsets ContentInset { get; set; }
[Export ("setContentOffset:animated:")]
void SetContentOffset (CGPoint contentOffset, bool animated);
[Export ("reloadData")]
void ReloadData ();
}
[MacCatalyst (14, 0)]
[iOS (10, 0)]
[BaseType (typeof (UIViewController))]
interface MSStickerBrowserViewController : MSStickerBrowserViewDataSource {
[Export ("initWithStickerSize:")]
[DesignatedInitializer]
NativeHandle Constructor (MSStickerSize stickerSize);
[Export ("stickerBrowserView", ArgumentSemantic.Strong)]
MSStickerBrowserView StickerBrowserView { get; }
[Export ("stickerSize")]
MSStickerSize StickerSize { get; }
}
[MacCatalyst (14, 0)]
[iOS (11, 0)]
[BaseType (typeof (MSMessageLayout))]
[DisableDefaultCtor]
interface MSMessageLiveLayout {
[Export ("initWithAlternateLayout:")]
[DesignatedInitializer]
NativeHandle Constructor (MSMessageTemplateLayout alternateLayout);
[Export ("alternateLayout")]
MSMessageTemplateLayout AlternateLayout { get; }
}
}
#endif // !MONOMAC