AccentPomodoro / Accent Pomodoro / AppDelegate.swift
AppDelegate.swift
Raw
//
//  AppDelegate.swift
//  Accent Pomodoro
//
//  Created by Luke Jenquin on 11/20/21.
//

import Foundation
import SwiftUI
import Cocoa


class AppDelegate: NSObject, NSApplicationDelegate {
    
    var popover: NSPopover!
    var statusBarItem: NSStatusItem!
    public var userSelections: userSelectionsModel = userSelectionsModel()
    
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        let changer = MenuBarColorChanger.init(currentUserSelections: userSelections)
        let contentView = ContentView(changer: changer, userSelections: userSelections)
        let popover = NSPopover()
        popover.contentSize = NSSize(width: 115, height: 500)
        popover.behavior = .transient
        popover.contentViewController = NSHostingController(rootView: contentView)
        self.popover = popover
        
        self.statusBarItem = NSStatusBar.system.statusItem(withLength: CGFloat(NSStatusItem.variableLength))
        if let button = self.statusBarItem.button {
            button.image = NSImage(named: "Accent_Pomodoro_Icon")?.crop(size: NSSize(width: 18.0, height: 18.0))
            button.image?.isTemplate = true
            button.action = #selector(togglePopover(_:))
        }
        NSApp.activate(ignoringOtherApps: true)
    }
    
    @objc func togglePopover(_ sender: AnyObject?) {
        if let button = self.statusBarItem.button {
            if self.popover.isShown {
                self.popover.performClose(sender)
            } else {
                self.popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY)
            }
        }
    }
}