77
88import Cocoa
99import MediaPlayer
10+
1011
1112@MainActor
1213class AppDelegate : NSObject , NSApplicationDelegate {
@@ -15,6 +16,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
1516 var sleepManager : SleepManager !
1617 var launchManager : LaunchManager !
1718 var libraryManager : LibraryManager !
19+ var configManager : ConfigManager !
1820 var statusMenuController : StatusMenuController !
1921
2022 // Strong reference to the window
@@ -27,6 +29,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2729 sleepManager = SleepManager ( )
2830 launchManager = LaunchManager ( )
2931 libraryManager = LibraryManager ( )
32+ configManager = ConfigManager . shared
3033 DownloadManager . shared. updateLibraryManager ( libraryManager)
3134
3235 if let currentLibrary = libraryManager. currentLibrary {
@@ -60,6 +63,10 @@ class AppDelegate: NSObject, NSApplicationDelegate {
6063 name: NSNotification . Name ( " AddNewLibrary " ) ,
6164 object: nil
6265 )
66+
67+ DispatchQueue . main. async { [ weak self] in
68+ self ? . showSongPickerIfPreferred ( )
69+ }
6370 }
6471
6572 func setupRemoteCommandCenter( ) {
@@ -151,6 +158,11 @@ class AppDelegate: NSObject, NSApplicationDelegate {
151158 sleepManager. cleanupResourcesOnly ( )
152159 }
153160
161+ func applicationShouldHandleReopen( _ sender: NSApplication , hasVisibleWindows flag: Bool ) -> Bool {
162+ showSongPickerIfPreferred ( )
163+ return true
164+ }
165+
154166 @objc func showDownloadWindow( ) {
155167 if let existingWindow = self . downloadWindow {
156168 existingWindow. makeKeyAndOrderFront ( nil )
@@ -310,6 +322,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
310322 songPickerWindow. makeKeyAndOrderFront ( nil )
311323 NSApp . activate ( ignoringOtherApps: true )
312324 }
325+
326+ private func showSongPickerIfPreferred( ) {
327+ guard configManager. showSongPickerOnLaunch else { return }
328+ showSongPickerWindow ( )
329+ }
330+
331+
313332}
314333
315334extension AppDelegate : NSWindowDelegate {
0 commit comments