feat: atualiza terminologia de "carrinho" para "fila" na interface de lote e ajusta comentários

This commit is contained in:
2026-03-01 00:37:56 -03:00
parent 3e38c51e3a
commit c7031cbdce
2 changed files with 30 additions and 13 deletions
+20 -4
View File
@@ -410,8 +410,12 @@ impl eframe::App for App {
{
match crate::infrastructure::persistence::load_session() {
Ok(data) => {
let probe = FfprobeGateway;
// Restaura projeto único
if let Some(project) = data.single_project {
if let Some(mut project) = data.single_project {
// Re-executa ffprobe para garantir que existing_tracks
// está atualizado independentemente do que foi salvo.
let _ = LoadMediaInfo::execute(&mut project, &probe);
self.pending_source =
Some(project.source.path.clone());
self.pending_output =
@@ -421,12 +425,20 @@ impl eframe::App for App {
self.project = Some(project);
}
// Restaura itens do lote (estado resetado para Idle)
// Re-executa ffprobe em cada projeto para popular
// existing_tracks que podem estar vazios na sessão salva.
if !data.batch_projects.is_empty() {
use crate::ui::components::batch_panel::BatchItem;
self.batch_items = data
.batch_projects
.into_iter()
.map(BatchItem::new)
.map(|mut project| {
let _ = LoadMediaInfo::execute(
&mut project,
&probe,
);
BatchItem::new(project)
})
.collect();
}
let single_ok = self.project.is_some();
@@ -568,10 +580,14 @@ impl eframe::App for App {
let events = self.batch_panel.ui(ui, &self.batch_items, is_processing);
for event in events {
match event {
BatchPanelEvent::AddItem(project) => {
BatchPanelEvent::AddItem(mut project) => {
let probe = FfprobeGateway;
let _ = LoadMediaInfo::execute(&mut project, &probe);
self.batch_items.push(BatchItem::new(project));
}
BatchPanelEvent::EditItem(idx, project) => {
BatchPanelEvent::EditItem(idx, mut project) => {
let probe = FfprobeGateway;
let _ = LoadMediaInfo::execute(&mut project, &probe);
if let Some(item) = self.batch_items.get_mut(idx) {
item.project = project;
item.state = ExecutionState::Idle;
+10 -9
View File
@@ -11,7 +11,8 @@ use crate::ui::components::{
// ── Tipos públicos ─────────────────────────────────────────────────────────────
/// Um item no carrinho de lote — projeto completo com estado individual de execução.
/// Um item na fila
/// de lote — projeto completo com estado individual de execução.
pub struct BatchItem {
pub project: Project,
pub state: ExecutionState,
@@ -30,11 +31,11 @@ impl BatchItem {
/// Eventos emitidos pelo `BatchPanel` para o `App`.
pub enum BatchPanelEvent {
/// Novo projeto confirmado pelo usuário — adicionar ao carrinho.
/// Novo projeto confirmado pelo usuário — adicionar à fila.
AddItem(Project),
/// Substituir o projeto de um item existente (edição confirmada).
EditItem(usize, Project),
/// Remover item do carinho pelo índice.
/// Remover item da fila pelo índice.
RemoveItem(usize),
/// Iniciar o processamento sequencial de todos os itens aguardando.
ProcessAll,
@@ -58,7 +59,7 @@ struct PendingSubtitle {
// ── BatchPanel ─────────────────────────────────────────────────────────────────
/// Painel de modo lote: exibe o carrinho de projetos e um formulário inline
/// Painel de modo lote: exibe a fila de projetos e um formulário inline
/// para adicionar ou editar itens sem abandonar a aba.
pub struct BatchPanel {
// Estado do formulário de adição / edição
@@ -138,18 +139,18 @@ impl BatchPanel {
ui.heading("Modo Lote");
ui.label(
egui::RichText::new(
"Adicione múltiplos projetos ao carrinho e processe-os sequencialmente.",
"Adicione múltiplos projetos à fila e processe-os sequencialmente.",
)
.weak()
.italics(),
);
ui.add_space(8.0);
// ── Lista de itens do carrinho ─────────────────────────────────────────
// ── Lista de itens da fila ─────────────────────────────────────────
if items.is_empty() && !self.form_open {
ui.label(
egui::RichText::new(
"Nenhum item no carrinho. Clique em \"+ Adicionar item\" para começar.",
"Nenhum item na fila. Clique em \"+ Adicionar item\" para começar.",
)
.weak()
.italics(),
@@ -289,7 +290,7 @@ impl BatchPanel {
.fill(egui::Color32::DARK_RED),
)
.on_hover_text(
"Interrompe o item em execução; os demais permanecem no carrinho.",
"Interrompe o item em execução; os demais permanecem na fila.",
)
.clicked()
{
@@ -485,7 +486,7 @@ impl BatchPanel {
let confirm_label = if is_edit {
"Salvar alterações"
} else {
"Adicionar ao carrinho"
"Adicionar à fila"
};
if ui