diff --git a/src/main.rs b/src/main.rs index 6c2cc14..9b8a035 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,10 +44,10 @@ enum Word { } impl Word { - fn speaker(&self) -> u8 { + fn speaker(&self) -> usize { match self { - Word::Live(word) => word.speaker, - Word::Prerecorded(word) => word.speaker.unwrap() as u8, + Word::Live(word) => word.speaker as usize, + Word::Prerecorded(word) => word.speaker.unwrap(), } } fn word(&self) -> &str { @@ -222,7 +222,10 @@ impl App { if let Some(word) = word { if word.speaker() != current_speaker { current_speaker = word.speaker(); - transcript.push_str(&format!("\n[{}]: ", self.speaker_names[current_speaker as usize])); + transcript.push_str(&format!( + "\n[{}]: ", + self.speaker_names.get(current_speaker).unwrap_or(&String::new()) + )); } transcript.push_str(&format!("{} ", word.word())); } @@ -432,10 +435,6 @@ impl eframe::App for App { } } - while self.speaker_names.len() < 20 { - self.speaker_names.push(format!("{}", self.speaker_names.len())); - } - if ui .add_enabled( !self.is_recording, @@ -753,11 +752,17 @@ impl eframe::App for App { if let Some(word) = word { if word.speaker() != current_speaker { current_speaker = word.speaker(); + while current_speaker >= self.speaker_names.len() { + self.speaker_names.push(format!("{}", current_speaker)); + } ui.end_row(); ui.horizontal_wrapped(|ui| { ui.label( - RichText::new(format!("[{}]: ", self.speaker_names[current_speaker as usize])) - .size(30.0), + RichText::new(format!( + "[{}]: ", + self.speaker_names.get(current_speaker).unwrap_or(&String::new()) + )) + .size(30.0), ); }); }