// // 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