Add implementation of -cancel

This commit is contained in:
Gregory John Casamento 2019-09-22 23:26:30 -04:00
parent f355d97b3e
commit 2a935c4d53
3 changed files with 28 additions and 6 deletions

View file

@ -35,8 +35,6 @@
@protocol NSFilePresenter;
const static NSArray *__presenters = nil;
enum {
NSFileCoordinatorReadingWithoutChanges = 1 << 0,
NSFileCoordinatorReadingResolvesSymbolicLink = 1 << 1,
@ -78,7 +76,7 @@ DEFINE_BLOCK_TYPE(GSAccessorHandlerBlock, void, GSBatchAccessorHandler);
{
id _accessArbiter;
id _fileReactor;
id _purposeID;
id _purposeIdentifier;
NSURL *_recentFilePresenterURL;
id _accessClaimIDOrIDs;
BOOL _isCancelled;

View file

@ -50,7 +50,7 @@ DEFINE_BLOCK_TYPE(GSFilePresentedItemChangesWithCompletionHandler, void, NSError
- (void)accommodatePresentedItemDeletionWithCompletionHandler:(GSFilePresenterCompletionHandler)completionHandler;
- (void)accommodatePresentedSubitemDeletionAtURL:(NSURL *)url completionHandler:(GSFilePresenterSubitemDeletionHandler)completionHandler;
- (void)presentedItemDidChange;
- (void)presentedItemDidChangeUbiquityAttributes:(NSSet *)attributes; // API_AVAILABLE(macos(10.13), ios(11.0)) API_UNAVAILABLE(watchos, tvos);
- (void)presentedItemDidChangeUbiquityAttributes:(NSSet *)attributes; // 10.13
- (void)presentedItemDidGainVersion:(NSFileVersion *)version;
- (void)presentedItemDidLoseVersion:(NSFileVersion *)version;
- (void)presentedItemDidMoveToURL:(NSURL *)newURL;

View file

@ -26,6 +26,10 @@
#import <Foundation/NSFileCoordinator.h>
#import <Foundation/NSURL.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSFilePresenter.h>
#import <Foundation/NSOperation.h>
static NSMutableArray *__presenters = nil;
@implementation NSFileAccessIntent
- (instancetype) init
@ -78,26 +82,46 @@
+ (NSArray *) filePresenters
{
return nil;
return __presenters;
}
+ (void) addFilePresenter: (id)presenter
{
[__presenters addObject: presenter];
}
+ (void) removeFilePresenter: (id)presenter
{
[__presenters removeObject: presenter];
}
- (NSString *) purposeIdentifier
{
return nil;
return _purposeIdentifier;
}
- (void) setPurposeIdentifier: (NSString *)ident // copy
{
ASSIGNCOPY(_purposeIdentifier, ident);
}
- (void)cancel
{
NSEnumerator *en = [__presenters objectEnumerator];
id obj = nil;
while((obj = [en nextObject]) != nil)
{
id<NSFilePresenter> o = (id<NSFilePresenter>)obj;
NSOperationQueue *q = [o presentedItemOperationQueue];
[q cancelAllOperations];
}
}
- (void)coordinateAccessWithIntents: (NSArray *)intents
queue: (NSOperationQueue *)queue
byAccessor: (GSAccessorCallbackHandler)accessor
{
}
- (void)coordinateReadingItemAtURL: (NSURL *)readingURL