feat: adiciona funcionalidade para reordenar faixas externas com botões ↑↓ na interface

This commit is contained in:
2026-03-02 00:04:47 -03:00
parent d86135ad6b
commit e4e836e86b
5 changed files with 375 additions and 9 deletions
+14 -4
View File
@@ -1,9 +1,9 @@
# PRD — Simple Multimedia Track Audio Editor
**Versão:** 1.4
**Data:** 01/03/2026
**Status:** v1.0 funcional — Fases 19 concluídas; 33 testes passando; aplicação executável
**Revisão:** v1.4 — Adicionado RF-15 (Excluir faixa existente do output)
**Versão:** 1.5
**Data:** 02/03/2026
**Status:** v1.0 funcional — Fases 19 concluídas; 72 testes passando; aplicação executável
**Revisão:** v1.5 — Adicionado RF-16 (Reordenar faixas externas)
---
@@ -167,6 +167,15 @@ As ferramentas existentes são complexas (ex: interface direta do FFmpeg via CLI
- Ambos os pipelines (FFmpeg e mkvmerge) respeitam o flag: faixas excluídas são filtradas antes da geração dos argumentos de `-map` / `--audio-tracks` / `--subtitle-tracks`
- O estado `excluded` é persistido junto com a sessão (RF-14)
### RF-16 — Reordenar faixas externas
- O usuário pode alterar a ordem das faixas externas adicionadas (áudio e legenda) usando os botões **↑** e **↓** na lista de faixas
- A ordem determina o índice de stream no container MKV final — relevante para players que selecionam faixas por posição (ex: VLC, Jellyfin)
- O botão ↑ fica desabilitado na primeira faixa da lista; o botão ↓, na última
- Implementado via método `move_track(id, delta: i8)` em `Project`, usando `Vec::swap` — ambos os pipelines (FFmpeg e mkvmerge) iteram `project.tracks` em ordem e não precisam de alteração
- Somente faixas **externas** (`project.tracks`) são reordenáveis; faixas existentes (`project.existing_tracks`, lidas via ffprobe) permanecem na ordem detectada
- A nova ordem é persistida automaticamente junto com a sessão (RF-14)
---
## 7. Requisitos Não Funcionais
@@ -422,6 +431,7 @@ src/
- [x] É possível exportar uma faixa existente para arquivo separado (RF-13)
- [x] É possível salvar e restaurar a sessão em disco (RF-14)
- [x] É possível excluir faixas de áudio ou legenda existentes do arquivo de saída, com possibilidade de restauração antes da geração (RF-15)
- [x] É possível reordenar as faixas externas adicionadas com botões ↑↓; a ordem reflete o índice no container final (RF-16)
- [x] O modo lote permite configurar e processar múltiplos projetos sequencialmente (RF-09)
- [x] É possível definir fator de correção de drift por faixa (RF-12; requer mkvmerge)
- [x] O arquivo MKV é gerado corretamente ao confirmar