From 1ab33b13b8776c27ba438142101718979daebb73 Mon Sep 17 00:00:00 2001 From: lihaoyun6 Date: Fri, 3 Jan 2025 15:00:40 +0800 Subject: [PATCH] fix system audio, fix outline, fix preview --- QuickRecorder.xcodeproj/project.pbxproj | 8 ++--- .../Others/audioIcon.imageset/Contents.json | 22 ++++++++++++ ...ark_55A54008AD1BA589AA210D2629C1DF41_0.png | Bin 0 -> 6626 bytes ...ght_55A54008AD1BA589AA210D2629C1DF41_0.png | Bin 0 -> 6657 bytes QuickRecorder/SCContext.swift | 33 ++++++++++++------ QuickRecorder/ViewModel/AreaSelector.swift | 6 ++-- 6 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/Contents.json create mode 100644 QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/MissingArtwork_Music_onDark_55A54008AD1BA589AA210D2629C1DF41_0.png create mode 100644 QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/MissingArtwork_Music_onLight_55A54008AD1BA589AA210D2629C1DF41_0.png diff --git a/QuickRecorder.xcodeproj/project.pbxproj b/QuickRecorder.xcodeproj/project.pbxproj index bab8bf4..e5271fd 100644 --- a/QuickRecorder.xcodeproj/project.pbxproj +++ b/QuickRecorder.xcodeproj/project.pbxproj @@ -487,7 +487,7 @@ CODE_SIGN_ENTITLEMENTS = QuickRecorder/QuickRecorder.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 161; + CURRENT_PROJECT_VERSION = 162; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"QuickRecorder/Preview Content\""; DEVELOPMENT_TEAM = L4T783637F; @@ -505,7 +505,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 12.3; - MARKETING_VERSION = 1.6.1; + MARKETING_VERSION = 1.6.2; PRODUCT_BUNDLE_IDENTIFIER = com.lihaoyun6.QuickRecorder; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -521,7 +521,7 @@ CODE_SIGN_ENTITLEMENTS = QuickRecorder/QuickRecorder.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 161; + CURRENT_PROJECT_VERSION = 162; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"QuickRecorder/Preview Content\""; DEVELOPMENT_TEAM = L4T783637F; @@ -539,7 +539,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 12.3; - MARKETING_VERSION = 1.6.1; + MARKETING_VERSION = 1.6.2; PRODUCT_BUNDLE_IDENTIFIER = com.lihaoyun6.QuickRecorder; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/Contents.json b/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/Contents.json new file mode 100644 index 0000000..ccf5a6d --- /dev/null +++ b/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "MissingArtwork_Music_onLight_55A54008AD1BA589AA210D2629C1DF41_0.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "MissingArtwork_Music_onDark_55A54008AD1BA589AA210D2629C1DF41_0.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/MissingArtwork_Music_onDark_55A54008AD1BA589AA210D2629C1DF41_0.png b/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/MissingArtwork_Music_onDark_55A54008AD1BA589AA210D2629C1DF41_0.png new file mode 100644 index 0000000000000000000000000000000000000000..72d2e40c2f09c06c6aedd4533b87664152234c02 GIT binary patch literal 6626 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 H=YIQNi_;Pa literal 0 HcmV?d00001 diff --git a/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/MissingArtwork_Music_onLight_55A54008AD1BA589AA210D2629C1DF41_0.png b/QuickRecorder/Assets.xcassets/Others/audioIcon.imageset/MissingArtwork_Music_onLight_55A54008AD1BA589AA210D2629C1DF41_0.png new file mode 100644 index 0000000000000000000000000000000000000000..58bda1729ee1d29dbaae4ed8fd63dd6d1fecb7c5 GIT binary patch literal 6657 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 Q{_}@us_LrLDA`8+A7xc6Y5)KL literal 0 HcmV?d00001 diff --git a/QuickRecorder/SCContext.swift b/QuickRecorder/SCContext.swift index 0ac48c4..e56ad67 100644 --- a/QuickRecorder/SCContext.swift +++ b/QuickRecorder/SCContext.swift @@ -367,7 +367,7 @@ class SCContext { } dispatchGroup.wait() } else { - vW.finishWriting {} + if ud.bool(forKey: "recordMic") { vW.finishWriting {} } } DispatchQueue.main.async { @@ -387,21 +387,21 @@ class SCContext { Task { let outPutUrl = URL(fileURLWithPath: String(filePath.dropLast(4)) + ".mp3") do { - let title = "Recording Completed".local - let body = String(format: "File saved to: %@".local, outPutUrl.path.removingPercentEncoding!) - let id = "quickrecorder.completed.\(UUID().uuidString)" try await m4a2mp3(inputUrl: URL(fileURLWithPath: filePath1), outputUrl: outPutUrl) try? fd.removeItem(atPath: filePath1) - showNotification(title: title, body: body, id: id) + if !ud.bool(forKey: "showPreview") { + let title = "Recording Completed".local + let body = String(format: "File saved to: %@".local, outPutUrl.path.removingPercentEncoding!) + let id = "quickrecorder.completed.\(UUID().uuidString)" + showNotification(title: title, body: body, id: id) + } else { + DispatchQueue.main.async { showPreview(path: outPutUrl.path, image: NSImage(named: "audioIcon")) } + } } catch { showNotification(title: "Failed to save file".local, body: "\(error.localizedDescription)", id: "quickrecorder.error.\(UUID().uuidString)") } } } else { - let title = "Recording Completed".local - let body = String(format: "File saved to: %@".local, filePath) - let id = "quickrecorder.completed.\(UUID().uuidString)" - showNotification(title: title, body: body, id: id) if ud.bool(forKey: "remuxAudio") && ud.bool(forKey: "recordMic") { let fileURL = URL(fileURLWithPath: filePath) let document = try? qmaPackageHandle.load(from: fileURL) @@ -415,6 +415,15 @@ class SCContext { let saveURL = fileURL.deletingPathExtension().appendingPathExtension(format) audioPlayerManager.saveFile(saveURL, saveAsMP3: exportMP3) } + } else { + if !ud.bool(forKey: "showPreview") { + let title = "Recording Completed".local + let body = String(format: "File saved to: %@".local, filePath) + let id = "quickrecorder.completed.\(UUID().uuidString)" + showNotification(title: title, body: body, id: id) + } else { + showPreview(path: filePath, image: NSImage(named: "qmaIcon")) + } } } } @@ -448,9 +457,11 @@ class SCContext { streamType = nil } - static func showPreview(path: String) { + static func showPreview(path: String, image: NSImage? = nil) { if !ud.bool(forKey: "showPreview") { return } - if let frame = firstFrame?.nsImage, let screen = getScreenWithMouse() { + var frame: NSImage? + if let i = image { frame = i } else { if let f = firstFrame?.nsImage { frame = f }} + if let frame = frame, let screen = getScreenWithMouse() { let previewWindow = NSWindow(contentRect: NSMakeRect(0, 0, 260, 150), styleMask: [.fullSizeContentView], backing: .buffered, defer: false) let contentView = NSHostingView(rootView: PreviewView(frame: frame, filePath: path)) previewWindow.contentView = contentView diff --git a/QuickRecorder/ViewModel/AreaSelector.swift b/QuickRecorder/ViewModel/AreaSelector.swift index 375e6bd..0ffaee5 100644 --- a/QuickRecorder/ViewModel/AreaSelector.swift +++ b/QuickRecorder/ViewModel/AreaSelector.swift @@ -204,9 +204,9 @@ struct AreaSelector: View { var window = NSWindow() let area = SCContext.screenArea! guard let nsScreen = screen.nsScreen else { return } - let frame = NSRect(x: Int(area.origin.x + nsScreen.frame.minX - 3), - y: Int(area.origin.y + nsScreen.frame.minY - 3), - width: Int(area.width + 6), height: Int(area.height + 6)) + let frame = NSRect(x: Int(area.origin.x + nsScreen.frame.minX - 4), + y: Int(area.origin.y + nsScreen.frame.minY - 4), + width: Int(area.width + 8), height: Int(area.height + 8)) window = NSWindow(contentRect: frame, styleMask: [.fullSizeContentView], backing: .buffered, defer: false) window.hasShadow = false window.level = .screenSaver