NSItemProvider skeleton implementation.

This commit is contained in:
Gregory John Casamento 2019-11-12 22:59:47 -05:00
parent 814f492a55
commit d33e0f2605
2 changed files with 284 additions and 2 deletions

View file

@ -27,16 +27,154 @@
#include <Foundation/NSObject.h>
#if OS_API_VERSION(MAC_OS_X_VERSION_10_0, GS_API_LATEST)
#if OS_API_VERSION(MAC_OS_X_VERSION_10_10, GS_API_LATEST)
#if defined(__cplusplus)
extern "C" {
#endif
@interface NSItemProvider : NSObject
@class NSItemProvider, NSProgress, NSData, NSError, NSURL, NSProgress, NSDictionary;;
DEFINE_BLOCK_TYPE(GSProviderCompletionHandler, void, NSData*, NSError**);
DEFINE_BLOCK_TYPE(GSProviderURLCompletionHandler, void, NSURL*, NSError**);
DEFINE_BLOCK_TYPE(GSProviderURLBOOLCompletionHandler, void, NSURL*, BOOL, NSError**);
DEFINE_BLOCK_TYPE(GSProgressHandler, NSProgress*, GSProviderCompletionHandler);
DEFINE_BLOCK_TYPE(GSProgressURLBOOLHandler, NSProgress*, GSProviderURLBOOLCompletionHandler);
DEFINE_BLOCK_TYPE(GSItemProviderWritingHandler, id, NSError**);
DEFINE_BLOCK_TYPE(GSItemProviderReadingHandler, id, NSError**);
DEFINE_BLOCK_TYPE(GSProgressItemProviderWritingLoadHandler, NSProgress*, GSItemProviderWritingHandler);
DEFINE_BLOCK_TYPE(GSProgressItemProviderReadingLoadHandler, NSProgress*, GSItemProviderReadingHandler);
DEFINE_BLOCK_TYPE(NSItemProviderCompletionHandler, void, id, NSError**);
DEFINE_BLOCK_TYPE(NSItemProviderLoadHandler, NSItemProviderCompletionHandler, Class, NSDictionary*);
enum
{
NSItemProviderRepresentationVisibilityAll = 0,
NSItemProviderRepresentationVisibilityTeam = 1,
NSItemProviderRepresentationVisibilityGroup = 2 ,
NSItemProviderRepresentationVisibilityOwnProcess = 3,
};
typedef NSInteger NSItemProviderRepresentationVisibility;
enum
{
NSItemProviderFileOptionOpenInPlace = 1,
};
typedef NSInteger NSItemProviderFileOptions;
@protocol NSItemProviderWriting <NSObject>
- (NSArray *) writableTypeIdentifiersForItemProvider;
- (void) setWritableTypeIdentifiersForItemProvider: (NSArray *)anArray;
+ (NSItemProviderRepresentationVisibility) itemProviderVisibilityForRepresentationWithTypeIdentifier: (NSString *)typeIdentifier;
- (NSItemProviderRepresentationVisibility) itemProviderVisibilityForRepresentationWithTypeIdentifier: (NSString *)typeIdentifier;
- (NSProgress *) loadDataWithTypeIdentifier: (NSString *)typeIdentifier
forItemProviderCompletionHandler: (GSProviderCompletionHandler)completionHandler;
@end
@protocol NSItemProviderReading <NSObject>
- (NSArray *) readableTypeIdentifiersForItemProvider;
- (void) setReadableTypeIdentifiersForItemProvider: (NSArray *)array;
+ (instancetype) objectWithItemProviderData: (NSData *)data
typeIdentifier: (NSString *)typeIdentifier
error: (NSError **)outError;
@end
@interface NSItemProvider : NSObject <NSCopying>
- (instancetype) init;
- (void) registerDataRepresentationForTypeIdentifier: (NSString *)typeIdentifier
visibility: (NSItemProviderRepresentationVisibility)visibility
loadHandler: (GSProgressHandler)loadHandler;
- (void) registerFileRepresentationForTypeIdentifier: (NSString *)typeIdentifier
fileOptions: (NSItemProviderFileOptions)fileOptions
visibility: (NSItemProviderRepresentationVisibility)visibility
loadHandler: (GSProgressURLBOOLHandler)loadHandler;
- (NSArray *) registeredTypeIdentifiers;
- (NSArray *) registeredTypeIdentifiersWithFileOptions: (NSItemProviderFileOptions)fileOptions;
- (BOOL) hasItemConformingToTypeIdentifier: (NSString *)typeIdentifier;
- (BOOL) hasRepresentationConformingToTypeIdentifier: (NSString *)typeIdentifier
fileOptions: (NSItemProviderFileOptions)fileOptions;
- (NSProgress *) loadDataRepresentationForTypeIdentifier: (NSString *)typeIdentifier
completionHandler: (GSProviderCompletionHandler)completionHandler;
- (NSProgress *) loadFileRepresentationForTypeIdentifier: (NSString *)typeIdentifier
completionHandler: (GSProviderURLCompletionHandler)completionHandler;
- (NSProgress *) loadInPlaceFileRepresentationForTypeIdentifier: (NSString *)typeIdentifier
completionHandler: (GSProviderURLBOOLCompletionHandler)completionHandler;
- (NSString *) suggestedName;
- (void) setSuggestedName: (NSString *)suggestedName;
- (instancetype) initWithObject: (id<NSItemProviderWriting>)object;
- (void) registerObject: (id<NSItemProviderWriting>)object visibility: (NSItemProviderRepresentationVisibility)visibility;
- (void) registerObjectOfClass: (Class<NSItemProviderWriting>)aClass // NSItemProviderWriting conforming class...
visibility: (NSItemProviderRepresentationVisibility)visibility
loadHandler: (GSItemProviderWritingHandler)loadHandler;
- (BOOL) canLoadObjectOfClass: (Class<NSItemProviderReading>)aClass;
- (NSProgress *) loadObjectOfClass: (Class<NSItemProviderReading>)aClass // NSItemProviderReading conforming class...
completionHandler: (GSItemProviderReadingHandler)completionHandler;
- (instancetype) initWithItem: (id<NSSecureCoding>)item typeIdentifier: (NSString *)typeIdentifier; // designated init
- (instancetype) initWithContentsOfURL: (NSURL *)fileURL;
- (void) registerItemForTypeIdentifier: (NSString *)typeIdentifier loadHandler: (NSItemProviderLoadHandler)loadHandler;
- (void)loadItemForTypeIdentifier: (NSString *)typeIdentifier
options: (NSDictionary *)options
completionHandler: (NSItemProviderCompletionHandler)completionHandler;
@end
// Preview support
GS_EXPORT NSString * const NSItemProviderPreferredImageSizeKey;
@interface NSItemProvider (NSPreviewSupport)
- (NSItemProviderLoadHandler) previewImageHandler;
- (void) setPreviewImageHandler: (NSItemProviderLoadHandler) previewImageHandler;
- (void) loadPreviewImageWithOptions: (NSDictionary *)options
completionHandler: (NSItemProviderCompletionHandler)completionHandler;
@end
GS_EXPORT NSString * const NSExtensionJavaScriptPreprocessingResultsKey;
GS_EXPORT NSString * const NSExtensionJavaScriptFinalizeArgumentKey;
GS_EXPORT NSString * const NSItemProviderErrorDomain;
enum {
NSItemProviderUnknownError = -1,
NSItemProviderItemUnavailableError = -1000,
NSItemProviderUnexpectedValueClassError = -1100,
NSItemProviderUnavailableCoercionError = -1200
};
typedef NSInteger NSItemProviderErrorCode;
#if defined(__cplusplus)
}
#endif

View file

@ -26,5 +26,149 @@
@implementation NSItemProvider
- (instancetype) init
{
return nil;
}
- (void) registerDataRepresentationForTypeIdentifier: (NSString *)typeIdentifier
visibility: (NSItemProviderRepresentationVisibility)visibility
loadHandler: (GSProgressHandler)loadHandler
{
}
- (void) registerFileRepresentationForTypeIdentifier: (NSString *)typeIdentifier
fileOptions: (NSItemProviderFileOptions)fileOptions
visibility: (NSItemProviderRepresentationVisibility)visibility
loadHandler: (GSProgressURLBOOLHandler)loadHandler
{
}
- (NSArray *) registeredTypeIdentifiers
{
return nil;
}
- (NSArray *) registeredTypeIdentifiersWithFileOptions: (NSItemProviderFileOptions)fileOptions
{
return nil;
}
- (BOOL) hasItemConformingToTypeIdentifier: (NSString *)typeIdentifier
{
return NO;
}
- (BOOL) hasRepresentationConformingToTypeIdentifier: (NSString *)typeIdentifier
fileOptions: (NSItemProviderFileOptions)fileOptions
{
return NO;
}
- (NSProgress *) loadDataRepresentationForTypeIdentifier: (NSString *)typeIdentifier
completionHandler: (GSProviderCompletionHandler)completionHandler
{
return nil;
}
- (NSProgress *) loadFileRepresentationForTypeIdentifier: (NSString *)typeIdentifier
completionHandler: (GSProviderURLCompletionHandler)completionHandler
{
return nil;
}
- (NSProgress *) loadInPlaceFileRepresentationForTypeIdentifier: (NSString *)typeIdentifier
completionHandler: (GSProviderURLBOOLCompletionHandler)completionHandler
{
return nil;
}
- (NSString *) suggestedName
{
return nil;
}
- (void) setSuggestedName: (NSString *)suggestedName
{
}
- (instancetype) initWithObject: (id<NSItemProviderWriting>)object
{
return nil;
}
- (void) registerObject: (id<NSItemProviderWriting>)object visibility: (NSItemProviderRepresentationVisibility)visibility
{
}
- (void) registerObjectOfClass: (Class<NSItemProviderWriting>)aClass // NSItemProviderWriting conforming class...
visibility: (NSItemProviderRepresentationVisibility)visibility
loadHandler: (GSItemProviderWritingHandler)loadHandler
{
}
- (BOOL) canLoadObjectOfClass: (Class<NSItemProviderReading>)aClass
{
return NO;
}
- (NSProgress *) loadObjectOfClass: (Class<NSItemProviderReading>)aClass // NSItemProviderReading conforming class...
completionHandler: (GSItemProviderReadingHandler)completionHandler
{
return nil;
}
- (instancetype) initWithItem: (id<NSSecureCoding>)item typeIdentifier: (NSString *)typeIdentifier // designated init
{
return nil;
}
- (instancetype) initWithContentsOfURL: (NSURL *)fileURL
{
return nil;
}
- (void) registerItemForTypeIdentifier: (NSString *)typeIdentifier loadHandler: (NSItemProviderLoadHandler)loadHandler
{
}
- (void)loadItemForTypeIdentifier: (NSString *)typeIdentifier
options: (NSDictionary *)options
completionHandler: (NSItemProviderCompletionHandler)completionHandler
{
}
- (instancetype) copyWithZone: (NSZone*)zone
{
return nil;
}
@end
// Preview support
NSString * const NSItemProviderPreferredImageSizeKey = @"NSItemProviderPreferredImageSizeKey";
@implementation NSItemProvider (NSPreviewSupport)
- (NSItemProviderLoadHandler) previewImageHandler
{
return nil;
}
- (void) setPreviewImageHandler: (NSItemProviderLoadHandler) previewImageHandler
{
}
- (void) loadPreviewImageWithOptions: (NSDictionary *)options
completionHandler: (NSItemProviderCompletionHandler)completionHandler
{
}
@end
NSString * const NSExtensionJavaScriptPreprocessingResultsKey = @"NSExtensionJavaScriptPreprocessingResultsKey";
NSString * const NSExtensionJavaScriptFinalizeArgumentKey = @"NSExtensionJavaScriptFinalizeArgumentKey";
NSString * const NSItemProviderErrorDomain = @"NSItemProviderErrorDomain" ;