Skip to content

Commit 71c53cf

Browse files
authored
Merge pull request #12 from emrepbu/refactor/code-cleanup
Refactor/code cleanup
2 parents 1d80e14 + 6d0512a commit 71c53cf

3 files changed

Lines changed: 98 additions & 128 deletions

File tree

AggregateVolumeMenu/AggregateVolumeMenuApp.swift

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import SwiftUI
1010
@main
1111
struct AggregateVolumeMenuApp: App {
1212
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
13-
13+
1414
var body: some Scene {
1515
Settings {
1616
EmptyView()
@@ -23,7 +23,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2323
private var popover: NSPopover?
2424
private var audioManager = AudioDeviceManager.shared
2525
private var volumeObserverTimer: Timer?
26-
26+
2727
func applicationDidFinishLaunching(_ notification: Notification) {
2828
setupStatusItem()
2929
setupPopover()
@@ -34,96 +34,85 @@ class AppDelegate: NSObject, NSApplicationDelegate {
3434
func applicationWillTerminate(_ notification: Notification) {
3535
volumeObserverTimer?.invalidate()
3636
}
37-
37+
3838
private func setupStatusItem() {
3939
statusItem = NSStatusBar.system.statusItem(withLength: 30)
40-
40+
4141
if let button = statusItem?.button {
4242
updateMenuBarIcon()
4343
button.action = #selector(togglePopover)
4444
button.target = self
4545
button.sendAction(on: [.leftMouseUp, .rightMouseUp])
4646
}
4747
}
48-
48+
4949
private func observeVolumeChanges() {
5050
volumeObserverTimer = Timer.scheduledTimer(withTimeInterval: 0.05, repeats: true) { _ in
5151
self.updateMenuBarIcon()
5252
}
5353
}
54-
54+
5555
private func updateMenuBarIcon() {
5656
guard let button = statusItem?.button else { return }
57-
57+
5858
let volume = audioManager.currentVolume
5959
let isMuted = audioManager.isMuted
6060
let volumePercentage = Int(volume * 100)
61-
61+
6262
let iconName = AudioDeviceManager.getVolumeIcon(for: volume, isMuted: isMuted)
63-
63+
6464
let image = NSImage(systemSymbolName: iconName, accessibilityDescription: "Volume: \(volumePercentage)%")
6565
image?.isTemplate = true
6666

6767
button.image = image
6868
button.imagePosition = .imageOnly
6969

7070
updateTooltip(button: button, volume: volumePercentage, isMuted: isMuted)
71-
72-
if isMuted {
73-
button.contentTintColor = NSColor.systemRed
74-
button.alphaValue = 0.9
75-
} else if volume == 0 {
76-
button.contentTintColor = NSColor.systemGray
77-
button.alphaValue = 0.7
78-
} else {
79-
button.contentTintColor = nil
80-
button.alphaValue = 1.0
81-
}
8271
}
83-
72+
8473
private func updateTooltip(button: NSButton, volume: Int, isMuted: Bool) {
8574
var tooltipComponents: [String] = []
86-
75+
8776
if isMuted {
8877
tooltipComponents.append("Muted")
8978
} else {
9079
tooltipComponents.append("Volume: \(volume)%")
9180
}
92-
81+
9382
if let device = audioManager.currentDevice {
9483
tooltipComponents.append("Device: \(device.name)")
9584
}
96-
85+
9786
tooltipComponents.append("Click to open • Space to mute")
9887
button.toolTip = tooltipComponents.joined(separator: "\n")
9988
}
100-
89+
10190
private func setupPopover() {
10291
popover = NSPopover()
10392
popover?.contentSize = NSSize(width: 320, height: 420)
10493
popover?.behavior = .transient
10594
popover?.animates = true
10695
popover?.contentViewController = NSHostingController(rootView: ContentView())
10796
}
108-
97+
10998
private func setupMediaKeyHandling() {
11099
NSEvent.addGlobalMonitorForEvents(matching: .systemDefined) { event in
111100
self.handleMediaKey(event: event)
112101
}
113-
102+
114103
NSEvent.addLocalMonitorForEvents(matching: .systemDefined) { event in
115104
self.handleMediaKey(event: event)
116105
return event
117106
}
118107
}
119-
108+
120109
private func handleMediaKey(event: NSEvent) {
121110
guard event.subtype == .screenChanged else { return }
122-
111+
123112
let keyCode = ((event.data1 & 0xFFFF0000) >> 16)
124113
let keyFlags = (event.data1 & 0x0000FFFF)
125114
let keyState = ((keyFlags & 0xFF00) >> 8) == 0xA
126-
115+
127116
if keyState {
128117
switch Int32(keyCode) {
129118
case NX_KEYTYPE_SOUND_UP:
@@ -143,10 +132,10 @@ class AppDelegate: NSObject, NSApplicationDelegate {
143132
}
144133
}
145134
}
146-
135+
147136
@objc private func togglePopover() {
148137
guard let button = statusItem?.button else { return }
149-
138+
150139
if let popover = popover {
151140
if popover.isShown {
152141
popover.performClose(nil)

0 commit comments

Comments
 (0)