Added the AI model switcher to the menu bar.
This commit is contained in:
parent
71fdbdfc75
commit
7828afadfe
@ -14,12 +14,37 @@ struct MenuBarView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Button("Toggle Mini Recorder") {
|
||||
Task {
|
||||
await whisperState.toggleMiniRecorder()
|
||||
Menu {
|
||||
ForEach(whisperState.usableModels, id: \.id) { model in
|
||||
Button {
|
||||
Task {
|
||||
await whisperState.setDefaultTranscriptionModel(model)
|
||||
}
|
||||
} label: {
|
||||
HStack {
|
||||
Text(model.displayName)
|
||||
if whisperState.currentTranscriptionModel?.id == model.id {
|
||||
Image(systemName: "checkmark")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Divider()
|
||||
|
||||
Button("Manage Models") {
|
||||
menuBarManager.openMainWindowAndNavigate(to: "AI Models")
|
||||
}
|
||||
} label: {
|
||||
HStack {
|
||||
Text("Transcription Model: \(whisperState.currentTranscriptionModel?.displayName ?? "None")")
|
||||
Image(systemName: "chevron.up.chevron.down")
|
||||
.font(.system(size: 10))
|
||||
}
|
||||
}
|
||||
|
||||
Divider()
|
||||
|
||||
Toggle("AI Enhancement", isOn: $enhancementService.isEnhancementEnabled)
|
||||
|
||||
Menu {
|
||||
@ -78,70 +103,71 @@ struct MenuBarView: View {
|
||||
.font(.system(size: 10))
|
||||
}
|
||||
}
|
||||
.disabled(!enhancementService.isEnhancementEnabled)
|
||||
|
||||
Menu {
|
||||
ForEach(whisperState.usableModels, id: \.id) { model in
|
||||
ForEach(aiService.availableModels, id: \.self) { model in
|
||||
Button {
|
||||
Task {
|
||||
await whisperState.setDefaultTranscriptionModel(model)
|
||||
}
|
||||
aiService.selectModel(model)
|
||||
} label: {
|
||||
HStack {
|
||||
Text(model.displayName)
|
||||
if whisperState.currentTranscriptionModel?.id == model.id {
|
||||
Text(model)
|
||||
if aiService.currentModel == model {
|
||||
Image(systemName: "checkmark")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if aiService.availableModels.isEmpty {
|
||||
Text("No models available")
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
|
||||
Divider()
|
||||
|
||||
Button("Manage Models") {
|
||||
menuBarManager.openMainWindowAndNavigate(to: "AI Models")
|
||||
Button("Manage AI Models") {
|
||||
menuBarManager.openMainWindowAndNavigate(to: "Enhancement")
|
||||
}
|
||||
} label: {
|
||||
HStack {
|
||||
Text("Model: \(whisperState.currentTranscriptionModel?.displayName ?? "None")")
|
||||
Text("AI Model: \(aiService.currentModel)")
|
||||
Image(systemName: "chevron.up.chevron.down")
|
||||
.font(.system(size: 10))
|
||||
}
|
||||
}
|
||||
.disabled(!enhancementService.isEnhancementEnabled)
|
||||
|
||||
LanguageSelectionView(whisperState: whisperState, displayMode: .menuItem, whisperPrompt: whisperState.whisperPrompt)
|
||||
|
||||
Toggle("Use Clipboard Context", isOn: $enhancementService.useClipboardContext)
|
||||
.disabled(!enhancementService.isEnhancementEnabled)
|
||||
|
||||
Toggle("Use Screen Context", isOn: $enhancementService.useScreenCaptureContext)
|
||||
.disabled(!enhancementService.isEnhancementEnabled)
|
||||
|
||||
Menu("Additional") {
|
||||
Button {
|
||||
SoundManager.shared.isEnabled.toggle()
|
||||
enhancementService.useClipboardContext.toggle()
|
||||
menuRefreshTrigger.toggle()
|
||||
} label: {
|
||||
HStack {
|
||||
Text("Sound Feedback")
|
||||
Text("Clipboard Context")
|
||||
Spacer()
|
||||
if SoundManager.shared.isEnabled {
|
||||
if enhancementService.useClipboardContext {
|
||||
Image(systemName: "checkmark")
|
||||
}
|
||||
}
|
||||
}
|
||||
.disabled(!enhancementService.isEnhancementEnabled)
|
||||
|
||||
Button {
|
||||
MediaController.shared.isSystemMuteEnabled.toggle()
|
||||
enhancementService.useScreenCaptureContext.toggle()
|
||||
menuRefreshTrigger.toggle()
|
||||
} label: {
|
||||
HStack {
|
||||
Text("Mute System Audio During Recording")
|
||||
Text("Context Awareness")
|
||||
Spacer()
|
||||
if MediaController.shared.isSystemMuteEnabled {
|
||||
if enhancementService.useScreenCaptureContext {
|
||||
Image(systemName: "checkmark")
|
||||
}
|
||||
}
|
||||
}
|
||||
.disabled(!enhancementService.isEnhancementEnabled)
|
||||
}
|
||||
.id("additional-menu-\(menuRefreshTrigger)")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user