Skip to content

Commit

Permalink
Add option to hide status item icon
Browse files Browse the repository at this point in the history
  • Loading branch information
rurza committed Nov 20, 2024
1 parent 32ab666 commit d152265
Show file tree
Hide file tree
Showing 8 changed files with 416 additions and 338 deletions.
5 changes: 5 additions & 0 deletions App/BatFiApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
return .terminateLater
}

func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows: Bool) -> Bool {
app?.shouldHandleReopen()
return false
}

@IBAction
func openSettings(_ sender: Any?) {
app?.openSettings()
Expand Down
87 changes: 47 additions & 40 deletions BatFiKit/Sources/App/App.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,14 @@ import Shared
import Settings
import StatusItemArrowKit

public final class BatFi: MenuControllerDelegate, StatusItemManagerDelegate, HelperConnectionManagerDelegate, Sendable {
private lazy var statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
public final class BatFi: StatusItemManagerDelegate, HelperConnectionManagerDelegate, Sendable {
private lazy var settingsController = SettingsController()
private lazy var persistenceManager = PersistenceManager()
private lazy var magSafeColorManager = MagSafeColorManager()
private lazy var analyticsManager = AnalyticsManager()
private lazy var helperConnectionManager = HelperConnectionManager(delegate: self)

private var chargingManager = ChargingManager()
private var menuController: MenuController?
private var notificationsManager: NotificationsManager?
private var statusItemIconController: StatusItemManager?

Expand All @@ -49,7 +47,7 @@ public final class BatFi: MenuControllerDelegate, StatusItemManagerDelegate, Hel


public init() {}

public func start(isBeta: Bool) {
guard powerSourceClient.isRunningOnLaptop() else {
showAppIsNotRunningOnLaptop()
Expand Down Expand Up @@ -85,34 +83,9 @@ public final class BatFi: MenuControllerDelegate, StatusItemManagerDelegate, Hel
}
}

private func setUpTheApp() async {
menuController = MenuController(statusItem: statusItem)
await chargingManager.setUpObserving()
persistenceManager.setUpObserving()
await magSafeColorManager.setUpObserving()
menuController?.delegate = self
notificationsManager = NotificationsManager()
statusItemIconController = StatusItemManager(statusItem: statusItem)
}

private func runMigration() async {
if systemVersion.currentSystemIsSequoiaOrNewer() && defaults.value(.turnOnSystemChargeLimitingWhenGoingToSleep) {
defaults.setValue(.turnOnSystemChargeLimitingWhenGoingToSleep, value: false)
try? await userNotificationsClient.showUserNotification(
title: "System charge limit removed",
body: "It looks like you're running on macOS 15. The \"Enable System charge limit 80% on sleep\" option was removed from this macOS",
identifier: "software.micropixels.BatFi.migration.system_charge_limit",
threadIdentifier: nil,
delay: nil
)
}
}

private func setFeatureFlags(
beta isBeta: Bool
) {
if isBeta {
featureFlags.enableFeatureFlag(.beta)
public func shouldHandleReopen() {
if !defaults.value(.showMenuBarIcon) {
openSettings()
}
}

Expand Down Expand Up @@ -161,7 +134,7 @@ public final class BatFi: MenuControllerDelegate, StatusItemManagerDelegate, Hel
guard let self else { return }
Task {
await self.setUpTheApp()
self.statusItemIconController?.delegate = self
self.showStatusItemArrow()
}
} onClose: { [weak self] in
Task {
Expand All @@ -178,15 +151,49 @@ public final class BatFi: MenuControllerDelegate, StatusItemManagerDelegate, Hel
}
}

// MARKL -
// MARK: -

private func setUpTheApp() async {
await chargingManager.setUpObserving()
persistenceManager.setUpObserving()
await magSafeColorManager.setUpObserving()

notificationsManager = NotificationsManager()
statusItemIconController = StatusItemManager()
statusItemIconController?.delegate = self
}

private func runMigration() async {
if systemVersion.currentSystemIsSequoiaOrNewer() && defaults.value(.turnOnSystemChargeLimitingWhenGoingToSleep) {
defaults.setValue(.turnOnSystemChargeLimitingWhenGoingToSleep, value: false)
try? await userNotificationsClient.showUserNotification(
title: "System charge limit removed",
body: "It looks like you're running on macOS 15. The \"Enable System charge limit 80% on sleep\" option was removed from this macOS",
identifier: "software.micropixels.BatFi.migration.system_charge_limit",
threadIdentifier: nil,
delay: nil
)
}
}

private func setFeatureFlags(
beta isBeta: Bool
) {
if isBeta {
featureFlags.enableFeatureFlag(.beta)
}
}

@MainActor
private func showStatusItemArrow() {
let window = ArrowWindow(arrowSize: NSSize(width: 40, height: 120), statusItem: statusItem)
arrowWindow = window
window.show()
Task {
try await clock.sleep(for: .seconds(7))
arrowWindow?.close()
if let statusItem = statusItemIconController?.statusItem {
let window = ArrowWindow(arrowSize: NSSize(width: 40, height: 120), statusItem: statusItem)
arrowWindow = window
window.show()
Task {
try await clock.sleep(for: .seconds(7))
arrowWindow?.close()
}
}
}

Expand Down
Loading

0 comments on commit d152265

Please sign in to comment.