feat: adiciona suporte para definir título e faixa padrão em faixas de áudio e legenda
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
use eframe::egui;
|
||||
use crate::adapters::filesystem::FilePickerAdapter;
|
||||
use crate::domain::value_objects::{FilePath, SyncOffset, TrackLanguage};
|
||||
use crate::ui::components::{language_field::LanguageField, sync_offset_field::SyncOffsetField};
|
||||
use eframe::egui;
|
||||
|
||||
/// Evento emitido ao confirmar adição de faixa de áudio.
|
||||
pub struct AddAudioTrackRequest {
|
||||
pub path: FilePath,
|
||||
pub offset: SyncOffset,
|
||||
pub language: TrackLanguage,
|
||||
pub is_default: bool,
|
||||
pub title: String,
|
||||
}
|
||||
|
||||
/// Formulário para adicionar uma faixa de áudio externa.
|
||||
@@ -15,6 +17,8 @@ pub struct AddAudioTrackForm {
|
||||
selected_path: Option<FilePath>,
|
||||
offset_field: SyncOffsetField,
|
||||
language_field: LanguageField,
|
||||
is_default: bool,
|
||||
title_input: String,
|
||||
}
|
||||
|
||||
impl AddAudioTrackForm {
|
||||
@@ -23,6 +27,8 @@ impl AddAudioTrackForm {
|
||||
selected_path: None,
|
||||
offset_field: SyncOffsetField::new(SyncOffset::default()),
|
||||
language_field: LanguageField::new(None),
|
||||
is_default: false,
|
||||
title_input: String::new(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +54,22 @@ impl AddAudioTrackForm {
|
||||
self.offset_field.ui(ui, "Atraso:");
|
||||
self.language_field.ui(ui);
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Nome da faixa:");
|
||||
ui.text_edit_singleline(&mut self.title_input)
|
||||
.on_hover_text(
|
||||
"Nome exibido no player (ex: \"Português\", \"Comentários\").\n\
|
||||
Deixe vazio para remover o nome original do arquivo fonte.\n\
|
||||
Recomendado para evitar nomes como \"ISO Media file produced by Google Inc.\"",
|
||||
);
|
||||
});
|
||||
|
||||
ui.checkbox(&mut self.is_default, "Definir como faixa padrão")
|
||||
.on_hover_text(
|
||||
"Marca esta faixa como padrão no container MKV.\n\
|
||||
Recomendado para que players como Jellyfin selecionem este áudio automaticamente.",
|
||||
);
|
||||
|
||||
ui.add_space(4.0);
|
||||
|
||||
let can_add = self.selected_path.is_some();
|
||||
@@ -60,11 +82,19 @@ impl AddAudioTrackForm {
|
||||
self.offset_field.parse(),
|
||||
self.language_field.parse(),
|
||||
) {
|
||||
result = Some(AddAudioTrackRequest { path, offset, language });
|
||||
result = Some(AddAudioTrackRequest {
|
||||
path,
|
||||
offset,
|
||||
language,
|
||||
is_default: self.is_default,
|
||||
title: self.title_input.trim().to_string(),
|
||||
});
|
||||
// Reset form
|
||||
self.selected_path = None;
|
||||
self.offset_field = SyncOffsetField::new(SyncOffset::default());
|
||||
self.language_field = LanguageField::new(None);
|
||||
self.is_default = false;
|
||||
self.title_input = String::new();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user