mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-30 04:19:28 +00:00
feat: add tray icon and context menu for main window and queues
This commit is contained in:
@@ -15,7 +15,7 @@ struct FirelinkApp: App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var body: some Scene {
|
var body: some Scene {
|
||||||
WindowGroup {
|
WindowGroup(id: "main") {
|
||||||
ContentView()
|
ContentView()
|
||||||
.environmentObject(controller)
|
.environmentObject(controller)
|
||||||
.environmentObject(settings)
|
.environmentObject(settings)
|
||||||
@@ -50,5 +50,10 @@ struct FirelinkApp: App {
|
|||||||
.keyboardShortcut("r", modifiers: [.command])
|
.keyboardShortcut("r", modifiers: [.command])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MenuBarExtra("Firelink", systemImage: "arrow.down.circle") {
|
||||||
|
TrayMenuView()
|
||||||
|
.environmentObject(controller)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user