feat: add tray icon and context menu for main window and queues

This commit is contained in:
nimbold
2026-06-03 04:35:18 +03:30
parent 59d0c2dec1
commit 992d448e60
2 changed files with 44 additions and 1 deletions
+6 -1
View File
@@ -15,7 +15,7 @@ struct FirelinkApp: App {
}
var body: some Scene {
WindowGroup {
WindowGroup(id: "main") {
ContentView()
.environmentObject(controller)
.environmentObject(settings)
@@ -50,5 +50,10 @@ struct FirelinkApp: App {
.keyboardShortcut("r", modifiers: [.command])
}
}
MenuBarExtra("Firelink", systemImage: "arrow.down.circle") {
TrayMenuView()
.environmentObject(controller)
}
}
}
+38
View File
@@ -0,0 +1,38 @@
import SwiftUI
struct TrayMenuView: View {
@Environment(\.openWindow) private var openWindow
@EnvironmentObject private var controller: DownloadController
var body: some View {
Button("Show main window") {
openWindow(id: "main")
NSApp.activate(ignoringOtherApps: true)
}
Button("Add downloads") {
openWindow(id: "add-downloads")
NSApp.activate(ignoringOtherApps: true)
}
Menu("Start queue") {
ForEach(controller.queues) { queue in
Button(queue.name) {
controller.startQueue(queueID: queue.id)
}
}
}
Button("Stop downloads") {
for download in controller.downloads where download.status == .downloading {
controller.pause(download)
}
}
Divider()
Button("Exit") {
NSApplication.shared.terminate(nil)
}
}
}