feat(tray): add transcribing state and update icons

This commit is contained in:
Vlad Gerasimov 2025-07-26 16:47:06 +04:00
parent 3d9ab1d8be
commit 7f9244c512
5 changed files with 13 additions and 3 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -77,7 +77,7 @@ impl ShortcutAction for TranscribeAction {
let rm = Arc::clone(&app.state::<Arc<AudioRecordingManager>>()); let rm = Arc::clone(&app.state::<Arc<AudioRecordingManager>>());
let tm = Arc::clone(&app.state::<Arc<TranscriptionManager>>()); let tm = Arc::clone(&app.state::<Arc<TranscriptionManager>>());
change_tray_icon(app, TrayIconState::Idle); change_tray_icon(app, TrayIconState::Transcribing);
// Play audio feedback for recording stop // Play audio feedback for recording stop
play_recording_stop_sound(app); play_recording_stop_sound(app);
@ -112,23 +112,31 @@ impl ShortcutAction for TranscribeAction {
let ah_clone = ah.clone(); let ah_clone = ah.clone();
let paste_time = Instant::now(); let paste_time = Instant::now();
ah.run_on_main_thread(move || { ah.run_on_main_thread(move || {
match utils::paste(transcription_clone, ah_clone) { match utils::paste(transcription_clone, ah_clone.clone()) {
Ok(()) => debug!( Ok(()) => debug!(
"Text pasted successfully in {:?}", "Text pasted successfully in {:?}",
paste_time.elapsed() paste_time.elapsed()
), ),
Err(e) => eprintln!("Failed to paste transcription: {}", e), Err(e) => eprintln!("Failed to paste transcription: {}", e),
} }
change_tray_icon(&ah_clone, TrayIconState::Idle);
}) })
.unwrap_or_else(|e| { .unwrap_or_else(|e| {
eprintln!("Failed to run paste on main thread: {:?}", e); eprintln!("Failed to run paste on main thread: {:?}", e);
change_tray_icon(&ah, TrayIconState::Idle);
}); });
} else {
change_tray_icon(&ah, TrayIconState::Idle);
} }
} }
Err(err) => debug!("Global Shortcut Transcription error: {}", err), Err(err) => {
debug!("Global Shortcut Transcription error: {}", err);
change_tray_icon(&ah, TrayIconState::Idle);
},
} }
} else { } else {
debug!("No samples retrieved from recording stop"); debug!("No samples retrieved from recording stop");
change_tray_icon(&ah, TrayIconState::Idle);
} }
}); });

View file

@ -73,6 +73,7 @@ pub fn paste(text: String, app_handle: AppHandle) -> Result<(), String> {
pub enum TrayIconState { pub enum TrayIconState {
Idle, Idle,
Recording, Recording,
Transcribing,
} }
pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) { pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) {
@ -81,6 +82,7 @@ pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) {
let icon_path = match icon { let icon_path = match icon {
TrayIconState::Idle => "resources/tray_idle.png", TrayIconState::Idle => "resources/tray_idle.png",
TrayIconState::Recording => "resources/tray_recording.png", TrayIconState::Recording => "resources/tray_recording.png",
TrayIconState::Transcribing => "resources/tray_transcribing.png",
}; };
let _ = tray.set_icon(Some( let _ = tray.set_icon(Some(