From 21e96083dfdd38e3a747f38b394bf16b95ef07cb Mon Sep 17 00:00:00 2001 From: CJ Pais Date: Fri, 11 Jul 2025 18:01:12 -0700 Subject: [PATCH] add ui toggle back --- src-tauri/src/managers/transcription.rs | 8 +++-- src-tauri/tauri.conf.json | 4 +-- src/components/settings/Settings.tsx | 2 ++ .../settings/TranslateToEnglish.tsx | 29 +++++++++++++++++++ src/components/settings/index.ts | 1 + src/hooks/useSettings.ts | 6 ++++ 6 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/components/settings/TranslateToEnglish.tsx diff --git a/src-tauri/src/managers/transcription.rs b/src-tauri/src/managers/transcription.rs index 01035fe..5212f7e 100644 --- a/src-tauri/src/managers/transcription.rs +++ b/src-tauri/src/managers/transcription.rs @@ -185,7 +185,7 @@ impl TranscriptionManager { params.set_print_timestamps(false); params.set_suppress_blank(true); params.set_suppress_non_speech_tokens(true); - + // Enable translation to English if requested if settings.translate_to_english { params.set_translate(true); @@ -207,7 +207,11 @@ impl TranscriptionManager { } let et = std::time::Instant::now(); - let translation_note = if settings.translate_to_english { " (translated)" } else { "" }; + let translation_note = if settings.translate_to_english { + " (translated)" + } else { + "" + }; println!("\ntook {}ms{}", (et - st).as_millis(), translation_note); Ok(result.trim().to_string()) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ffc77be..bd90ebc 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -14,9 +14,9 @@ { "title": "Handy", "width": 540, - "height": 590, + "height": 630, "minWidth": 540, - "minHeight": 590, + "minHeight": 630, "resizable": true, "maximizable": false } diff --git a/src/components/settings/Settings.tsx b/src/components/settings/Settings.tsx index 423174d..9d31e16 100644 --- a/src/components/settings/Settings.tsx +++ b/src/components/settings/Settings.tsx @@ -5,6 +5,7 @@ import { PushToTalk } from "./PushToTalk"; import { AudioFeedback } from "./AudioFeedback"; import { OutputDeviceSelector } from "./OutputDeviceSelector"; import { HandyShortcut } from "./HandyShortcut"; +import { TranslateToEnglish } from "./TranslateToEnglish"; import { SettingsGroup } from "../ui/SettingsGroup"; export const Settings: React.FC = () => { @@ -19,6 +20,7 @@ export const Settings: React.FC = () => { + diff --git a/src/components/settings/TranslateToEnglish.tsx b/src/components/settings/TranslateToEnglish.tsx new file mode 100644 index 0000000..92917c3 --- /dev/null +++ b/src/components/settings/TranslateToEnglish.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import { ToggleSwitch } from "../ui/ToggleSwitch"; +import { useSettings } from "../../hooks/useSettings"; + +interface TranslateToEnglishProps { + descriptionMode?: "inline" | "tooltip"; + grouped?: boolean; +} + +export const TranslateToEnglish: React.FC = ({ + descriptionMode = "tooltip", + grouped = false, +}) => { + const { getSetting, updateSetting, isUpdating } = useSettings(); + + const translateToEnglish = getSetting("translate_to_english") || false; + + return ( + updateSetting("translate_to_english", enabled)} + isUpdating={isUpdating("translate_to_english")} + label="Translate to English" + description="Automatically translate speech from other languages to English during transcription." + descriptionMode={descriptionMode} + grouped={grouped} + /> + ); +}; diff --git a/src/components/settings/index.ts b/src/components/settings/index.ts index 81c1d65..b6f37bf 100644 --- a/src/components/settings/index.ts +++ b/src/components/settings/index.ts @@ -5,3 +5,4 @@ export { AlwaysOnMicrophone } from "./AlwaysOnMicrophone"; export { PushToTalk } from "./PushToTalk"; export { AudioFeedback } from "./AudioFeedback"; export { HandyShortcut } from "./HandyShortcut"; +export { TranslateToEnglish } from "./TranslateToEnglish"; diff --git a/src/hooks/useSettings.ts b/src/hooks/useSettings.ts index 103e611..e1170ae 100644 --- a/src/hooks/useSettings.ts +++ b/src/hooks/useSettings.ts @@ -189,6 +189,11 @@ export const useSettings = (): UseSettingsReturn => { deviceName: outputDeviceName, }); break; + case "translate_to_english": + await invoke("change_translate_to_english_setting", { + enabled: value, + }); + break; case "bindings": // Handle bindings separately - they use their own invoke methods break; @@ -231,6 +236,7 @@ export const useSettings = (): UseSettingsReturn => { push_to_talk: false, selected_microphone: "Default", selected_output_device: "Default", + translate_to_english: false, }; const defaultValue = defaults[key];