diff --git a/macGist.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macGist.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macGist.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macGist/Assets.xcassets/x-icon.imageset/Contents.json b/macGist/Assets.xcassets/x-icon.imageset/Contents.json new file mode 100644 index 0000000..4ba0368 --- /dev/null +++ b/macGist/Assets.xcassets/x-icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "x-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "x-icon@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/macGist/Assets.xcassets/x-icon.imageset/x-icon.png b/macGist/Assets.xcassets/x-icon.imageset/x-icon.png new file mode 100644 index 0000000..1195601 Binary files /dev/null and b/macGist/Assets.xcassets/x-icon.imageset/x-icon.png differ diff --git a/macGist/Assets.xcassets/x-icon.imageset/x-icon@2x.png b/macGist/Assets.xcassets/x-icon.imageset/x-icon@2x.png new file mode 100644 index 0000000..d5b0871 Binary files /dev/null and b/macGist/Assets.xcassets/x-icon.imageset/x-icon@2x.png differ diff --git a/macGist/Menu.swift b/macGist/Menu.swift index b3cf8f2..f246428 100644 --- a/macGist/Menu.swift +++ b/macGist/Menu.swift @@ -9,20 +9,23 @@ import Foundation import AppKit -enum Images { +public enum Images { case standardIcon case checkmarkIcon + case failureIcon - var image: NSImage? { - var image: NSImage? + var image: NSImage { + var image: NSImage switch self { case .standardIcon: - image = NSImage(named: "icon") + image = NSImage(named: "icon")! case .checkmarkIcon: - image = NSImage(named: "check_white_icon") + image = NSImage(named: "check_white_icon")! + case .failureIcon: + image = NSImage(named: "x-icon")! } - image?.isTemplate = true + image.isTemplate = true return image } } @@ -39,15 +42,11 @@ class Menu { let githubAPI = GitHubAPI() if githubAPI.isAuthenticated { - let authenticatedItem = NSMenuItem(title: "Authenticated Gist", action: #selector(Menu.createAuthenticatedGist), keyEquivalent: "") + let authenticatedItem = NSMenuItem(title: "Post Gist", action: #selector(Menu.createAuthenticatedGist), keyEquivalent: "") authenticatedItem.target = self menu.addItem(authenticatedItem) } - let anonymousItem = NSMenuItem(title: "Anonymous Gist", action: #selector(Menu.createAnonymousGist), keyEquivalent: "") - anonymousItem.target = self - menu.addItem(anonymousItem) - let settingsMenuItem = NSMenuItem(title: "Settings", action: #selector(Menu.openSettings), keyEquivalent: "") settingsMenuItem.target = self menu.addItem(settingsMenuItem) @@ -65,8 +64,16 @@ class Menu { } private func displaySuccessIcon() { + displayTemporary(icon: Images.checkmarkIcon.image) + } + + private func displayFailureIcon() { + displayTemporary(icon: Images.failureIcon.image) + } + + private func displayTemporary(icon: NSImage) { DispatchQueue.main.async { - self.item.image = Images.checkmarkIcon.image + self.item.image = icon } let deadlineTime = DispatchTime.now() + .seconds(2) @@ -83,6 +90,8 @@ class Menu { PasteboardHelper().save(string: value) self.displaySuccessIcon() self.notificationHelper.sendNotification(withIdentifier: value) + } else { + self.displayFailureIcon() } } }