From d35983a3ace2d869aa478d107f475ca835b66e50 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Thu, 6 Sep 2018 00:10:03 +0200 Subject: Rename the project directory "CopyMailto" -> "Copy Mailto" --- Copy Mailto/AppDelegate.h | 20 ++++ Copy Mailto/AppDelegate.m | 42 +++++++ .../AppIcon.appiconset/Contents.json | 58 ++++++++++ Copy Mailto/Base.lproj/MainMenu.xib | 125 +++++++++++++++++++++ Copy Mailto/CopyMailto.entitlements | 5 + Copy Mailto/DefaultURLHandler.h | 15 +++ Copy Mailto/DefaultURLHandler.m | 24 ++++ Copy Mailto/Info.plist | 43 +++++++ Copy Mailto/QuitButton.h | 16 +++ Copy Mailto/QuitButton.m | 22 ++++ Copy Mailto/main.m | 19 ++++ 11 files changed, 389 insertions(+) create mode 100644 Copy Mailto/AppDelegate.h create mode 100644 Copy Mailto/AppDelegate.m create mode 100644 Copy Mailto/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Copy Mailto/Base.lproj/MainMenu.xib create mode 100644 Copy Mailto/CopyMailto.entitlements create mode 100644 Copy Mailto/DefaultURLHandler.h create mode 100644 Copy Mailto/DefaultURLHandler.m create mode 100644 Copy Mailto/Info.plist create mode 100644 Copy Mailto/QuitButton.h create mode 100644 Copy Mailto/QuitButton.m create mode 100644 Copy Mailto/main.m (limited to 'Copy Mailto') diff --git a/Copy Mailto/AppDelegate.h b/Copy Mailto/AppDelegate.h new file mode 100644 index 0000000..7ba86b3 --- /dev/null +++ b/Copy Mailto/AppDelegate.h @@ -0,0 +1,20 @@ +// +// AppDelegate.h +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import + +@interface AppDelegate : NSObject { + IBOutlet NSWindow *_window; + IBOutlet NSTextField *_email_address; +} + +- (void)handleURLEvent:(NSAppleEventDescriptor *)event + withReplyEvent: (NSAppleEventDescriptor *)replyEvent; +- (IBAction)copyEmailToClipboard:(id)sender; + +@end diff --git a/Copy Mailto/AppDelegate.m b/Copy Mailto/AppDelegate.m new file mode 100644 index 0000000..752b716 --- /dev/null +++ b/Copy Mailto/AppDelegate.m @@ -0,0 +1,42 @@ +// +// AppDelegate.m +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import "AppDelegate.h" + +const NSUInteger MAILTO_INDEX = 7; + +@implementation AppDelegate + +- (void)applicationWillFinishLaunching:(NSNotification *)aNotification { + [[NSAppleEventManager sharedAppleEventManager] + setEventHandler:self + andSelector:@selector(handleURLEvent:withReplyEvent:) + forEventClass:kInternetEventClass + andEventID:kAEGetURL]; +} + +- (void)handleURLEvent:(NSAppleEventDescriptor *)event + withReplyEvent: (NSAppleEventDescriptor *)replyEvent +{ + NSString *url = [[event paramDescriptorForKeyword:keyDirectObject] + stringValue]; + [_email_address setStringValue:[url substringFromIndex:MAILTO_INDEX]]; +} + +- (IBAction)copyEmailToClipboard:(id)sender +{ + NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; + [pasteboard clearContents]; + [pasteboard writeObjects: + [NSArray arrayWithObject: + [_email_address stringValue]]]; + + [NSApp terminate:self]; +} + +@end diff --git a/Copy Mailto/Assets.xcassets/AppIcon.appiconset/Contents.json b/Copy Mailto/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..2db2b1c --- /dev/null +++ b/Copy Mailto/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Copy Mailto/Base.lproj/MainMenu.xib b/Copy Mailto/Base.lproj/MainMenu.xib new file mode 100644 index 0000000..263596f --- /dev/null +++ b/Copy Mailto/Base.lproj/MainMenu.xib @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Copy Mailto/CopyMailto.entitlements b/Copy Mailto/CopyMailto.entitlements new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/Copy Mailto/CopyMailto.entitlements @@ -0,0 +1,5 @@ + + + + + diff --git a/Copy Mailto/DefaultURLHandler.h b/Copy Mailto/DefaultURLHandler.h new file mode 100644 index 0000000..dc09ffc --- /dev/null +++ b/Copy Mailto/DefaultURLHandler.h @@ -0,0 +1,15 @@ +// +// DefaultURLHandler.h +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import + +@interface DefaultURLHandler : NSObject + ++ (OSStatus)setDefaultURLHandler; + +@end diff --git a/Copy Mailto/DefaultURLHandler.m b/Copy Mailto/DefaultURLHandler.m new file mode 100644 index 0000000..424a0ee --- /dev/null +++ b/Copy Mailto/DefaultURLHandler.m @@ -0,0 +1,24 @@ +// +// DefaultURLHandler.m +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import "DefaultURLHandler.h" + +@implementation DefaultURLHandler + ++ (OSStatus)setDefaultURLHandler { + CFStringRef scheme = (CFStringRef)@"mailto"; + CFStringRef bundle_identifier = (__bridge CFStringRef)[[NSBundle mainBundle] bundleIdentifier]; + + OSStatus status = LSSetDefaultHandlerForURLScheme(scheme, bundle_identifier); + + CFRelease(scheme); + + return status; +} + +@end diff --git a/Copy Mailto/Info.plist b/Copy Mailto/Info.plist new file mode 100644 index 0000000..9e3f4b1 --- /dev/null +++ b/Copy Mailto/Info.plist @@ -0,0 +1,43 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2018 tw. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + CFBundleURLTypes + + + CFBundleURLName + com.teddywing.CopyMailto + CFBundleURLSchemes + + mailto + + + + + diff --git a/Copy Mailto/QuitButton.h b/Copy Mailto/QuitButton.h new file mode 100644 index 0000000..73c2e9d --- /dev/null +++ b/Copy Mailto/QuitButton.h @@ -0,0 +1,16 @@ +// +// QuitButton.h +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import +#import + +@interface QuitButton : NSButton + +- (void)keyDown:(NSEvent *)theEvent; + +@end diff --git a/Copy Mailto/QuitButton.m b/Copy Mailto/QuitButton.m new file mode 100644 index 0000000..8b8bb52 --- /dev/null +++ b/Copy Mailto/QuitButton.m @@ -0,0 +1,22 @@ +// +// QuitButton.m +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import "QuitButton.h" + +@implementation QuitButton + +// Quit the application on "q" or "Escape" +- (void)keyDown:(NSEvent *)theEvent +{ + if ([[theEvent characters] isEqualToString:@"q"] || + [theEvent keyCode] == kVK_Escape) { + [NSApp terminate:self]; + } +} + +@end diff --git a/Copy Mailto/main.m b/Copy Mailto/main.m new file mode 100644 index 0000000..e61f04e --- /dev/null +++ b/Copy Mailto/main.m @@ -0,0 +1,19 @@ +// +// main.m +// CopyMailto +// +// Created by tw on 9/5/18. +// Copyright © 2018 tw. All rights reserved. +// + +#import + +#import "DefaultURLHandler.h" + +int main(int argc, const char * argv[]) { + if (argc == 2 && strcmp(argv[1], "--set-url-handler") == 0) { + return [DefaultURLHandler setDefaultURLHandler]; + } + + return NSApplicationMain(argc, argv); +} -- cgit v1.2.3