Track current convert filenames to label UI correctly

This commit is contained in:
Stu Leak 2025-11-30 01:13:06 -05:00
parent ab79c79208
commit 50293d8af7

27
main.go
View File

@ -176,6 +176,8 @@ type appState struct {
playerSurf *playerSurface playerSurf *playerSurface
convertBusy bool convertBusy bool
convertStatus string convertStatus string
convertActiveIn string
convertActiveOut string
convertProgress float64 convertProgress float64
playSess *playSession playSess *playSession
jobQueue *queue.Queue jobQueue *queue.Queue
@ -214,7 +216,11 @@ func (s *appState) updateStatsBar() {
} else if s.convertBusy { } else if s.convertBusy {
// Reflect direct conversion as an active job in the stats bar // Reflect direct conversion as an active job in the stats bar
running = 1 running = 1
jobTitle = fmt.Sprintf("Direct convert: %s", filepath.Base(s.source.Path)) in := filepath.Base(s.convertActiveIn)
if in == "" && s.source != nil {
in = filepath.Base(s.source.Path)
}
jobTitle = fmt.Sprintf("Direct convert: %s", in)
progress = s.convertProgress progress = s.convertProgress
} }
@ -456,12 +462,17 @@ func (s *appState) refreshQueueView() {
jobs := s.jobQueue.List() jobs := s.jobQueue.List()
// If a direct conversion is running but not represented in the queue, surface it as a pseudo job. // If a direct conversion is running but not represented in the queue, surface it as a pseudo job.
if s.convertBusy { if s.convertBusy {
in := filepath.Base(s.convertActiveIn)
if in == "" && s.source != nil {
in = filepath.Base(s.source.Path)
}
out := filepath.Base(s.convertActiveOut)
jobs = append([]*queue.Job{{ jobs = append([]*queue.Job{{
ID: "active-convert", ID: "active-convert",
Type: queue.JobTypeConvert, Type: queue.JobTypeConvert,
Status: queue.JobStatusRunning, Status: queue.JobStatusRunning,
Title: fmt.Sprintf("Direct convert: %s", filepath.Base(s.source.Path)), Title: fmt.Sprintf("Direct convert: %s", in),
Description: fmt.Sprintf("Output: %s", s.convert.OutputFile()), Description: fmt.Sprintf("Output: %s", out),
Progress: s.convertProgress, Progress: s.convertProgress,
}}, jobs...) }}, jobs...)
} }
@ -3698,6 +3709,8 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
logging.Debug(logging.CatFFMPEG, "convert command: ffmpeg %s", strings.Join(args, " ")) logging.Debug(logging.CatFFMPEG, "convert command: ffmpeg %s", strings.Join(args, " "))
s.convertBusy = true s.convertBusy = true
s.convertProgress = 0 s.convertProgress = 0
s.convertActiveIn = src.Path
s.convertActiveOut = outPath
setStatus("Preparing conversion…") setStatus("Preparing conversion…")
// Widget states will be updated by the UI refresh ticker // Widget states will be updated by the UI refresh ticker
@ -3801,6 +3814,8 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
logging.Debug(logging.CatFFMPEG, "convert cancelled") logging.Debug(logging.CatFFMPEG, "convert cancelled")
fyne.CurrentApp().Driver().DoFromGoroutine(func() { fyne.CurrentApp().Driver().DoFromGoroutine(func() {
s.convertBusy = false s.convertBusy = false
s.convertActiveIn = ""
s.convertActiveOut = ""
s.convertProgress = 0 s.convertProgress = 0
setStatus("Cancelled") setStatus("Cancelled")
}, false) }, false)
@ -3811,6 +3826,8 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
fyne.CurrentApp().Driver().DoFromGoroutine(func() { fyne.CurrentApp().Driver().DoFromGoroutine(func() {
s.showErrorWithCopy("Conversion Failed", fmt.Errorf("convert failed: %w", err)) s.showErrorWithCopy("Conversion Failed", fmt.Errorf("convert failed: %w", err))
s.convertBusy = false s.convertBusy = false
s.convertActiveIn = ""
s.convertActiveOut = ""
s.convertProgress = 0 s.convertProgress = 0
setStatus("Failed") setStatus("Failed")
}, false) }, false)
@ -3825,6 +3842,8 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
fyne.CurrentApp().Driver().DoFromGoroutine(func() { fyne.CurrentApp().Driver().DoFromGoroutine(func() {
s.showErrorWithCopy("Conversion Failed", fmt.Errorf("conversion output is invalid: %w", probeErr)) s.showErrorWithCopy("Conversion Failed", fmt.Errorf("conversion output is invalid: %w", probeErr))
s.convertBusy = false s.convertBusy = false
s.convertActiveIn = ""
s.convertActiveOut = ""
s.convertProgress = 0 s.convertProgress = 0
setStatus("Failed") setStatus("Failed")
}, false) }, false)
@ -3835,6 +3854,8 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
fyne.CurrentApp().Driver().DoFromGoroutine(func() { fyne.CurrentApp().Driver().DoFromGoroutine(func() {
dialog.ShowInformation("Convert", fmt.Sprintf("Saved %s", outPath), s.window) dialog.ShowInformation("Convert", fmt.Sprintf("Saved %s", outPath), s.window)
s.convertBusy = false s.convertBusy = false
s.convertActiveIn = ""
s.convertActiveOut = ""
s.convertProgress = 100 s.convertProgress = 100
setStatus("Done") setStatus("Done")
}, false) }, false)