X-Git-Url: https://git.r.bdr.sh/rbdr/captura/blobdiff_plain/e42019cd38b59e757f6036b132614a471d4cf6fe..3472041dfee0a6e8c8a29e949f239bae13e1a18f:/Captura/CapturaApp.swift?ds=inline diff --git a/Captura/CapturaApp.swift b/Captura/CapturaApp.swift index 2136d72..14e266c 100644 --- a/Captura/CapturaApp.swift +++ b/Captura/CapturaApp.swift @@ -1,5 +1,4 @@ import SwiftUI -import SwiftData import Cocoa import Combine import AVFoundation @@ -59,7 +58,7 @@ struct CapturaApp: App { statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) if let button = statusItem.button { - button.image = NSImage(systemSymbolName: "rectangle.dashed.badge.record", accessibilityDescription: "Captura") + button.image = NSImage(named: "Idle") } statusItem.isVisible = true @@ -133,9 +132,14 @@ struct CapturaApp: App { func menuWillOpen(_ menu: NSMenu) { if captureState != .idle { - menu.cancelTracking() + menu.cancelTrackingWithoutAnimation() + if captureState == .selectingArea { + NotificationCenter.default.post(name: .startRecording, object: nil, userInfo: nil) + return + } if captureState == .recording { NotificationCenter.default.post(name: .stopRecording, object: nil, userInfo: nil) + return } } } @@ -233,6 +237,7 @@ struct CapturaApp: App { helpShown = false if captureState != .selectingArea { captureState = .selectingArea + updateImage() if let button = statusItem.button { let rectInWindow = button.convert(button.bounds, to: nil) let rectInScreen = button.window?.convertToScreen(rectInWindow) @@ -327,7 +332,10 @@ struct CapturaApp: App { if now - gifCallbackTimer > .nanoseconds(1_000_000_000 / UInt64(captureSessionConfiguration.frameRate)) { gifCallbackTimer = now DispatchQueue.main.async { - if let cgImage = frame.cgImage?.resize(by: self.pixelDensity) { + if var cgImage = frame.cgImage { + if self.pixelDensity > 1 { + cgImage = cgImage.resize(by: self.pixelDensity) ?? cgImage + } self.images.append(cgImage) } } @@ -394,19 +402,23 @@ struct CapturaApp: App { if let button = statusItem.button { let image: String = switch captureState { case .idle: - "rectangle.dashed.badge.record" + "Idle" case .selectingArea: - "circle.rectangle.dashed" + if recordingWindow?.recordingContentView.box != nil { + "Ready to Record" + } else { + "Selecting" + } case .recording: - "checkmark.rectangle" + "Stop Frame 1" case .uploading: - "dock.arrow.up.rectangle" + "Upload Frame 1" case .uploaded: - "checkmark.rectangle.fill" + "OK" case .error: - "xmark.rectangle.fill" + "ERR" } - button.image = NSImage(systemSymbolName: image, accessibilityDescription: "Captura") + button.image = NSImage(named: image) } }