// // ShareTorrentFileHelper.m // Transmission // // Created by Mitchell Livingston on 1/10/14. // Copyright (c) 2014 The Transmission Project. All rights reserved. // #import "ShareTorrentFileHelper.h" #import "Controller.h" #import "Torrent.h" @implementation ShareTorrentFileHelper + (ShareTorrentFileHelper *) sharedHelper { static ShareTorrentFileHelper *helper; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ helper = [[ShareTorrentFileHelper alloc] init]; }); return helper; } - (NSArray *) shareTorrentURLs { NSArray * torrents = [(Controller *)[NSApp delegate] selectedTorrents]; NSMutableArray * fileURLs = [NSMutableArray arrayWithCapacity: [torrents count]]; for (Torrent * torrent in torrents) { NSString * location = [torrent torrentLocation]; if ([location length] > 0) { [fileURLs addObject: [NSURL fileURLWithPath: location]]; } } return fileURLs; } - (NSArray *) menuItems { NSArray * services = [NSSharingService sharingServicesForItems: [self shareTorrentURLs]]; NSMutableArray * items = [NSMutableArray arrayWithCapacity: [services count]]; for (NSSharingService * service in services) { NSMenuItem *item = [[NSMenuItem alloc] initWithTitle: service.title // 10.9: change to menuItemTitle action: @selector(performShareAction:) keyEquivalent: @""]; item.image = service.image; item.representedObject = service; service.delegate = (Controller *)[NSApp delegate]; item.target = self; [items addObject: item]; } return items; } - (void) performShareAction: (NSMenuItem *) item { NSSharingService * service = item.representedObject; [service performWithItems: [self shareTorrentURLs]]; // on 10.9, use attachmentFileURLs? } @end