61 lines
1.9 KiB
Swift
61 lines
1.9 KiB
Swift
//
|
|
// GazeApp.swift
|
|
// Gaze
|
|
//
|
|
// Created by Mike Freno on 1/7/26.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
@main
|
|
struct GazeApp: App {
|
|
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
|
|
@StateObject private var settingsManager = SettingsManager.shared
|
|
|
|
var body: some Scene {
|
|
// Onboarding window (only shown when not completed)
|
|
WindowGroup {
|
|
if settingsManager.settings.hasCompletedOnboarding {
|
|
EmptyView()
|
|
.onAppear {
|
|
closeAllWindows()
|
|
}
|
|
} else {
|
|
OnboardingContainerView(settingsManager: settingsManager)
|
|
.onChange(of: settingsManager.settings.hasCompletedOnboarding) {
|
|
completed in
|
|
if completed {
|
|
closeAllWindows()
|
|
appDelegate.onboardingCompleted()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.windowStyle(.hiddenTitleBar)
|
|
.windowResizability(.contentSize)
|
|
.defaultSize(width: 700, height: 700)
|
|
.commands {
|
|
CommandGroup(replacing: .newItem) {}
|
|
}
|
|
|
|
// Menu bar extra (always present)
|
|
MenuBarExtra("Gaze", systemImage: "eye.fill") {
|
|
MenuBarContentWrapper(
|
|
appDelegate: appDelegate,
|
|
settingsManager: settingsManager,
|
|
onQuit: { NSApplication.shared.terminate(nil) },
|
|
onOpenSettings: { appDelegate.openSettings() },
|
|
onOpenSettingsTab: { tab in appDelegate.openSettings(tab: tab) },
|
|
onOpenOnboarding: { appDelegate.openOnboarding() }
|
|
)
|
|
}
|
|
.menuBarExtraStyle(.window)
|
|
}
|
|
|
|
private func closeAllWindows() {
|
|
for window in NSApplication.shared.windows {
|
|
window.close()
|
|
}
|
|
}
|
|
}
|