transmission/macosx/ShareTorrentFileHelper.m

65 lines
1.9 KiB
Objective-C

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