mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
#5576 Share Button (to iMessage, email, etc) for torrent file
This commit is contained in:
@@ -44,6 +44,7 @@
|
||||
#import "GlobalOptionsPopoverViewController.h"
|
||||
#import "ButtonToolbarItem.h"
|
||||
#import "GroupToolbarItem.h"
|
||||
#import "ShareToolbarItem.h"
|
||||
#import "ToolbarSegmentedCell.h"
|
||||
#import "BlocklistDownloader.h"
|
||||
#import "StatusBarController.h"
|
||||
@@ -78,6 +79,7 @@
|
||||
#define TOOLBAR_PAUSE_RESUME_SELECTED @"Toolbar Pause / Resume Selected"
|
||||
#define TOOLBAR_FILTER @"Toolbar Toggle Filter"
|
||||
#define TOOLBAR_QUICKLOOK @"Toolbar QuickLook"
|
||||
#define TOOLBAR_SHARE @"Toolbar Share"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@@ -1783,6 +1785,11 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||
[self applyFilter];
|
||||
}
|
||||
|
||||
- (NSArray *)selectedTorrents
|
||||
{
|
||||
return [fTableView selectedTorrents];
|
||||
}
|
||||
|
||||
- (void) showPreferenceWindow: (id) sender
|
||||
{
|
||||
NSWindow * window = [fPrefsController window];
|
||||
@@ -3804,9 +3811,34 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||
}
|
||||
}
|
||||
|
||||
- (void) showToolbarShare: (id) sender
|
||||
{
|
||||
NSParameterAssert([sender isKindOfClass:[NSButton class]]);
|
||||
|
||||
NSSharingServicePicker * picker = [[NSSharingServicePicker alloc] initWithItems: [ShareToolbarItem shareTorrentURLs]];
|
||||
picker.delegate = self;
|
||||
|
||||
[picker showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
|
||||
}
|
||||
|
||||
- (id<NSSharingServiceDelegate>)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker delegateForSharingService:(NSSharingService *)sharingService
|
||||
{
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSWindow *)sharingService:(NSSharingService *)sharingService sourceWindowForShareItems:(NSArray *)items sharingContentScope:(NSSharingContentScope *)sharingContentScope
|
||||
{
|
||||
return fWindow;
|
||||
}
|
||||
|
||||
- (ButtonToolbarItem *) standardToolbarButtonWithIdentifier: (NSString *) ident
|
||||
{
|
||||
ButtonToolbarItem * item = [[ButtonToolbarItem alloc] initWithItemIdentifier: ident];
|
||||
return [self toolbarButtonWithIdentifier: ident forToolbarButtonClass: [ButtonToolbarItem class]];
|
||||
}
|
||||
|
||||
- (id) toolbarButtonWithIdentifier: (NSString *) ident forToolbarButtonClass:(Class)class
|
||||
{
|
||||
ButtonToolbarItem * item = [[class alloc] initWithItemIdentifier: ident];
|
||||
|
||||
NSButton * button = [[NSButton alloc] init];
|
||||
[button setBezelStyle: NSTexturedRoundedBezelStyle];
|
||||
@@ -4007,6 +4039,23 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||
|
||||
return item;
|
||||
}
|
||||
else if ([ident isEqualToString: TOOLBAR_SHARE])
|
||||
{
|
||||
ShareToolbarItem * item = [self toolbarButtonWithIdentifier: ident forToolbarButtonClass: [ShareToolbarItem class]];
|
||||
|
||||
[item setLabel: NSLocalizedString(@"Share", "Share toolbar item -> label")];
|
||||
[item setPaletteLabel: NSLocalizedString(@"Share", "Share toolbar item -> palette label")];
|
||||
[item setToolTip: NSLocalizedString(@"Share torrent file", "Share toolbar item -> tooltip")];
|
||||
[item setImage: [NSImage imageNamed: NSImageNameShareTemplate]];
|
||||
[item setVisibilityPriority: NSToolbarItemVisibilityPriorityLow];
|
||||
|
||||
NSButton *itemButton = (NSButton *)[item view];
|
||||
[itemButton setTarget: self];
|
||||
[itemButton setAction: @selector(showToolbarShare:)];
|
||||
[itemButton sendActionOn:NSLeftMouseDownMask];
|
||||
|
||||
return item;
|
||||
}
|
||||
else
|
||||
return nil;
|
||||
}
|
||||
@@ -4043,22 +4092,30 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||
|
||||
- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar
|
||||
{
|
||||
return [NSArray arrayWithObjects:
|
||||
TOOLBAR_CREATE, TOOLBAR_OPEN_FILE, TOOLBAR_OPEN_WEB, TOOLBAR_REMOVE,
|
||||
TOOLBAR_PAUSE_RESUME_SELECTED, TOOLBAR_PAUSE_RESUME_ALL,
|
||||
TOOLBAR_QUICKLOOK, TOOLBAR_FILTER, TOOLBAR_INFO,
|
||||
NSToolbarSeparatorItemIdentifier,
|
||||
NSToolbarSpaceItemIdentifier,
|
||||
NSToolbarFlexibleSpaceItemIdentifier,
|
||||
NSToolbarCustomizeToolbarItemIdentifier, nil];
|
||||
NSMutableArray *items = [NSMutableArray arrayWithObjects:
|
||||
TOOLBAR_CREATE, TOOLBAR_OPEN_FILE, TOOLBAR_OPEN_WEB, TOOLBAR_REMOVE,
|
||||
TOOLBAR_PAUSE_RESUME_SELECTED, TOOLBAR_PAUSE_RESUME_ALL,
|
||||
TOOLBAR_SHARE, TOOLBAR_QUICKLOOK, TOOLBAR_FILTER, TOOLBAR_INFO,
|
||||
NSToolbarSeparatorItemIdentifier,
|
||||
NSToolbarSpaceItemIdentifier,
|
||||
NSToolbarFlexibleSpaceItemIdentifier,
|
||||
NSToolbarCustomizeToolbarItemIdentifier, nil];
|
||||
if (![NSApp isOnMountainLionOrBetter]) {
|
||||
[items removeObject:TOOLBAR_SHARE];
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar
|
||||
{
|
||||
return [NSArray arrayWithObjects:
|
||||
TOOLBAR_CREATE, TOOLBAR_OPEN_FILE, TOOLBAR_REMOVE, NSToolbarSpaceItemIdentifier,
|
||||
TOOLBAR_PAUSE_RESUME_ALL, NSToolbarFlexibleSpaceItemIdentifier,
|
||||
TOOLBAR_QUICKLOOK, TOOLBAR_FILTER, TOOLBAR_INFO, nil];
|
||||
NSMutableArray *items = [NSMutableArray arrayWithObjects:
|
||||
TOOLBAR_CREATE, TOOLBAR_OPEN_FILE, TOOLBAR_REMOVE, NSToolbarSpaceItemIdentifier,
|
||||
TOOLBAR_PAUSE_RESUME_ALL, NSToolbarFlexibleSpaceItemIdentifier,
|
||||
TOOLBAR_SHARE, TOOLBAR_QUICKLOOK, TOOLBAR_FILTER, TOOLBAR_INFO, nil];
|
||||
if (![NSApp isOnMountainLionOrBetter]) {
|
||||
[items removeObject:TOOLBAR_SHARE];
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
- (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem
|
||||
@@ -4125,7 +4182,11 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||
[(NSButton *)[toolbarItem view] setState: [QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]];
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
//enable share item
|
||||
if ([ident isEqualToString: TOOLBAR_SHARE])
|
||||
return [fTableView numberOfSelectedRows] > 0;
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user