Skip to content

Commit

Permalink
Add Copy to the share menu
Browse files Browse the repository at this point in the history
  • Loading branch information
buddax2 committed Nov 4, 2018
1 parent ad05207 commit 4132ff9
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
24 changes: 24 additions & 0 deletions tmpNote/Assets.xcassets/copy.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "copy.pdf",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"template-rendering-intent" : "template"
}
}
Binary file added tmpNote/Assets.xcassets/copy.imageset/copy.pdf
Binary file not shown.
25 changes: 25 additions & 0 deletions tmpNote/TmpNoteViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ class TmpNoteViewController: NSViewController {
textView?.window?.makeKeyAndOrderFront(self)
}

func copyText() {
let pasteboard = NSPasteboard.general
pasteboard.declareTypes([NSPasteboard.PasteboardType.string], owner: nil)
pasteboard.setString(textView.string, forType: NSPasteboard.PasteboardType.string)
}

@objc fileprivate func setupTextView() {

let fontSize = UserDefaults.standard.value(forKey: TmpNoteViewController.kFontSizeKey) as? Int ?? TmpNoteViewController.defaultFontSize
Expand Down Expand Up @@ -132,6 +138,7 @@ class TmpNoteViewController: NSViewController {
let sharedItems = [textView.string];

let servicePicker = NSSharingServicePicker(items: sharedItems)
servicePicker.delegate = self
servicePicker.show(relativeTo: sender.bounds, of: sender, preferredEdge: .minY)
}

Expand All @@ -150,6 +157,24 @@ class TmpNoteViewController: NSViewController {

}

// MARK: NSSharingServicePickerDelegate
extension TmpNoteViewController: NSSharingServicePickerDelegate {
func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, sharingServicesForItems items: [Any], proposedSharingServices proposedServices: [NSSharingService]) -> [NSSharingService] {

guard let image = NSImage(named: NSImage.Name(rawValue: "copy")) else {
return proposedServices
}

var share = proposedServices
let plainText = NSSharingService(title: "Copy", image: image, alternateImage: image, handler: {
self.copyText()
})
share.insert(plainText, at: 0)

return share
}
}

extension TmpNoteViewController {

static func freshController() -> TmpNoteViewController {
Expand Down

0 comments on commit 4132ff9

Please sign in to comment.