feat: atualiza terminologia de "carrinho" para "fila" na interface de lote e ajusta comentários
This commit is contained in:
+20
-4
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user