mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2024-12-12 09:26:26 +01:00
55 lines
1.7 KiB
Swift
55 lines
1.7 KiB
Swift
|
//
|
||
|
// SharingServicePickerDelegate.swift
|
||
|
// NetNewsWire
|
||
|
//
|
||
|
// Created by Brent Simmons on 2/17/18.
|
||
|
// Copyright © 2018 Ranchero Software. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import AppKit
|
||
|
import RSCore
|
||
|
|
||
|
@objc final class SharingServicePickerDelegate: NSObject, NSSharingServicePickerDelegate {
|
||
|
|
||
|
private let sharingServiceDelegate: SharingServiceDelegate
|
||
|
private let completion: (() -> Void)?
|
||
|
|
||
|
init(_ window: NSWindow?, completion: (() -> Void)?) {
|
||
|
self.sharingServiceDelegate = SharingServiceDelegate(window)
|
||
|
self.completion = completion
|
||
|
}
|
||
|
|
||
|
func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, sharingServicesForItems items: [Any], proposedSharingServices proposedServices: [NSSharingService]) -> [NSSharingService] {
|
||
|
return proposedServices + SharingServicePickerDelegate.customSharingServices(for: items)
|
||
|
}
|
||
|
|
||
|
func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, delegateFor sharingService: NSSharingService) -> NSSharingServiceDelegate? {
|
||
|
return sharingServiceDelegate
|
||
|
}
|
||
|
|
||
|
func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, didChoose service: NSSharingService?) {
|
||
|
completion?()
|
||
|
}
|
||
|
|
||
|
static func customSharingServices(for items: [Any]) -> [NSSharingService] {
|
||
|
let customServices = ExtensionPointManager.shared.activeSendToCommands.compactMap { (sendToCommand) -> NSSharingService? in
|
||
|
|
||
|
guard let object = items.first else {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
guard sendToCommand.canSendObject(object, selectedText: nil) else {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
let image = sendToCommand.image ?? NSImage()
|
||
|
return NSSharingService(title: sendToCommand.title, image: image, alternateImage: nil) {
|
||
|
sendToCommand.sendObject(object, selectedText: nil)
|
||
|
}
|
||
|
}
|
||
|
return customServices
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|