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() {
|
match crate::infrastructure::persistence::load_session() {
|
||||||
Ok(data) => {
|
Ok(data) => {
|
||||||
|
let probe = FfprobeGateway;
|
||||||
// Restaura projeto único
|
// 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 =
|
self.pending_source =
|
||||||
Some(project.source.path.clone());
|
Some(project.source.path.clone());
|
||||||
self.pending_output =
|
self.pending_output =
|
||||||
@@ -421,12 +425,20 @@ impl eframe::App for App {
|
|||||||
self.project = Some(project);
|
self.project = Some(project);
|
||||||
}
|
}
|
||||||
// Restaura itens do lote (estado resetado para Idle)
|
// 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() {
|
if !data.batch_projects.is_empty() {
|
||||||
use crate::ui::components::batch_panel::BatchItem;
|
use crate::ui::components::batch_panel::BatchItem;
|
||||||
self.batch_items = data
|
self.batch_items = data
|
||||||
.batch_projects
|
.batch_projects
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(BatchItem::new)
|
.map(|mut project| {
|
||||||
|
let _ = LoadMediaInfo::execute(
|
||||||
|
&mut project,
|
||||||
|
&probe,
|
||||||
|
);
|
||||||
|
BatchItem::new(project)
|
||||||
|
})
|
||||||
.collect();
|
.collect();
|
||||||
}
|
}
|
||||||
let single_ok = self.project.is_some();
|
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);
|
let events = self.batch_panel.ui(ui, &self.batch_items, is_processing);
|
||||||
for event in events {
|
for event in events {
|
||||||
match event {
|
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));
|
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) {
|
if let Some(item) = self.batch_items.get_mut(idx) {
|
||||||
item.project = project;
|
item.project = project;
|
||||||
item.state = ExecutionState::Idle;
|
item.state = ExecutionState::Idle;
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ use crate::ui::components::{
|
|||||||
|
|
||||||
// ── Tipos públicos ─────────────────────────────────────────────────────────────
|
// ── 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 struct BatchItem {
|
||||||
pub project: Project,
|
pub project: Project,
|
||||||
pub state: ExecutionState,
|
pub state: ExecutionState,
|
||||||
@@ -30,11 +31,11 @@ impl BatchItem {
|
|||||||
|
|
||||||
/// Eventos emitidos pelo `BatchPanel` para o `App`.
|
/// Eventos emitidos pelo `BatchPanel` para o `App`.
|
||||||
pub enum BatchPanelEvent {
|
pub enum BatchPanelEvent {
|
||||||
/// Novo projeto confirmado pelo usuário — adicionar ao carrinho.
|
/// Novo projeto confirmado pelo usuário — adicionar à fila.
|
||||||
AddItem(Project),
|
AddItem(Project),
|
||||||
/// Substituir o projeto de um item existente (edição confirmada).
|
/// Substituir o projeto de um item existente (edição confirmada).
|
||||||
EditItem(usize, Project),
|
EditItem(usize, Project),
|
||||||
/// Remover item do carinho pelo índice.
|
/// Remover item da fila pelo índice.
|
||||||
RemoveItem(usize),
|
RemoveItem(usize),
|
||||||
/// Iniciar o processamento sequencial de todos os itens aguardando.
|
/// Iniciar o processamento sequencial de todos os itens aguardando.
|
||||||
ProcessAll,
|
ProcessAll,
|
||||||
@@ -58,7 +59,7 @@ struct PendingSubtitle {
|
|||||||
|
|
||||||
// ── BatchPanel ─────────────────────────────────────────────────────────────────
|
// ── 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.
|
/// para adicionar ou editar itens sem abandonar a aba.
|
||||||
pub struct BatchPanel {
|
pub struct BatchPanel {
|
||||||
// Estado do formulário de adição / edição
|
// Estado do formulário de adição / edição
|
||||||
@@ -138,18 +139,18 @@ impl BatchPanel {
|
|||||||
ui.heading("Modo Lote");
|
ui.heading("Modo Lote");
|
||||||
ui.label(
|
ui.label(
|
||||||
egui::RichText::new(
|
egui::RichText::new(
|
||||||
"Adicione múltiplos projetos ao carrinho e processe-os sequencialmente.",
|
"Adicione múltiplos projetos à fila e processe-os sequencialmente.",
|
||||||
)
|
)
|
||||||
.weak()
|
.weak()
|
||||||
.italics(),
|
.italics(),
|
||||||
);
|
);
|
||||||
ui.add_space(8.0);
|
ui.add_space(8.0);
|
||||||
|
|
||||||
// ── Lista de itens do carrinho ─────────────────────────────────────────
|
// ── Lista de itens da fila ─────────────────────────────────────────
|
||||||
if items.is_empty() && !self.form_open {
|
if items.is_empty() && !self.form_open {
|
||||||
ui.label(
|
ui.label(
|
||||||
egui::RichText::new(
|
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()
|
.weak()
|
||||||
.italics(),
|
.italics(),
|
||||||
@@ -289,7 +290,7 @@ impl BatchPanel {
|
|||||||
.fill(egui::Color32::DARK_RED),
|
.fill(egui::Color32::DARK_RED),
|
||||||
)
|
)
|
||||||
.on_hover_text(
|
.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()
|
.clicked()
|
||||||
{
|
{
|
||||||
@@ -485,7 +486,7 @@ impl BatchPanel {
|
|||||||
let confirm_label = if is_edit {
|
let confirm_label = if is_edit {
|
||||||
"Salvar alterações"
|
"Salvar alterações"
|
||||||
} else {
|
} else {
|
||||||
"Adicionar ao carrinho"
|
"Adicionar à fila"
|
||||||
};
|
};
|
||||||
|
|
||||||
if ui
|
if ui
|
||||||
|
|||||||
Reference in New Issue
Block a user