diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index deb9dcb..cf5887b 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ C46FA23F246C358E00944F05 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46FA23E246C358E00944F05 /* StringExtension.swift */; }; C473319F2470923A009A0597 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C473319E2470923A009A0597 /* Localizable.strings */; }; C47331A2247093B7009A0597 /* StatusMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47331A1247093B7009A0597 /* StatusMenu.swift */; }; + C474B00624C0E98C00066A22 /* LocalNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C474B00524C0E98C00066A22 /* LocalNotification.swift */; }; C476FF9822B0DD830098105B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; }; C4811D2422D70A4700B5F6B3 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; }; C4811D2A22D70F9A00B5F6B3 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; }; @@ -45,6 +46,7 @@ C46FA23E246C358E00944F05 /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; C473319E2470923A009A0597 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; C47331A1247093B7009A0597 /* StatusMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusMenu.swift; sourceTree = ""; }; + C474B00524C0E98C00066A22 /* LocalNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalNotification.swift; sourceTree = ""; }; C476FF9722B0DD830098105B /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = ""; }; C4811D2322D70A4700B5F6B3 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = ""; }; C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = ""; }; @@ -161,6 +163,7 @@ C476FF9722B0DD830098105B /* Alert.swift */, C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */, C41C1B4822B00A9800E7CF16 /* MenuBarImageGenerator.swift */, + C474B00524C0E98C00066A22 /* LocalNotification.swift */, ); path = Helpers; sourceTree = ""; @@ -258,6 +261,7 @@ C41C1B3722B0097F00E7CF16 /* AppDelegate.swift in Sources */, C41C1B4B22B019FF00E7CF16 /* PhpVersion.swift in Sources */, C476FF9822B0DD830098105B /* Alert.swift in Sources */, + C474B00624C0E98C00066A22 /* LocalNotification.swift in Sources */, C47331A2247093B7009A0597 /* StatusMenu.swift in Sources */, C46FA23F246C358E00944F05 /* StringExtension.swift in Sources */, C4EE188422D3386B00E126E5 /* Constants.swift in Sources */, diff --git a/phpmon/AppDelegate.swift b/phpmon/AppDelegate.swift index 61cc6fa..f43e0b4 100644 --- a/phpmon/AppDelegate.swift +++ b/phpmon/AppDelegate.swift @@ -7,6 +7,7 @@ // import Cocoa +import UserNotifications @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { @@ -27,8 +28,9 @@ class AppDelegate: NSObject, NSApplicationDelegate { } // MARK: - Lifecycle - + func applicationDidFinishLaunching(_ aNotification: Notification) { + NSUserNotificationCenter.default.delegate = self self.menu.startup() } @@ -37,3 +39,10 @@ class AppDelegate: NSObject, NSApplicationDelegate { } } +extension AppDelegate: NSUserNotificationCenterDelegate { + func userNotificationCenter(_ center: NSUserNotificationCenter, + shouldPresent notification: NSUserNotification) -> Bool { + return true + } +} + diff --git a/phpmon/Classes/Helpers/LocalNotification.swift b/phpmon/Classes/Helpers/LocalNotification.swift new file mode 100644 index 0000000..c4dfbf2 --- /dev/null +++ b/phpmon/Classes/Helpers/LocalNotification.swift @@ -0,0 +1,19 @@ +// +// LocalNotification.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 16/07/2020. +// Copyright © 2020 Nico Verbruggen. All rights reserved. +// + +import Foundation + +class LocalNotification { + public static func send(title: String, subtitle: String) + { + let notification = NSUserNotification() + notification.title = title + notification.subtitle = subtitle + NSUserNotificationCenter.default.deliver(notification) + } +} diff --git a/phpmon/Singletons/MainMenu.swift b/phpmon/Singletons/MainMenu.swift index 429741c..eba7700 100644 --- a/phpmon/Singletons/MainMenu.swift +++ b/phpmon/Singletons/MainMenu.swift @@ -211,6 +211,10 @@ class MainMenu: NSObject, NSWindowDelegate { DispatchQueue.main.async { self.updatePhpVersionInStatusBar() self.update() + LocalNotification.send( + title: "PHP \(version) is now active", + subtitle: "PHP Monitor has finished switching to PHP \(version)." + ) } } }