Make it possible to drag and drop multiple files

It is now possible to add multiple files before sending them to the processing queue.
This commit is contained in:
2025-05-25 01:25:40 +05:00
parent 82167f042f
commit 84b36dd29e
11 changed files with 741 additions and 255 deletions

View File

@@ -12,6 +12,7 @@ type AppContract interface {
GetQueue() QueueListContract
GetLocalizerService() LocalizerContract
GetConvertorService() ConvertorContract
GetFFplayService() FFplayContract
AfterClosing()
RunConvertor()
}
@@ -21,27 +22,36 @@ type App struct {
Window WindowContract
Queue QueueListContract
localizerService LocalizerContract
convertorService ConvertorContract
localizerService LocalizerContract
convertorService ConvertorContract
blockProgressbarService BlockProgressbarContract
ffplayService FFplayContract
}
func NewApp(
metadata *fyne.AppMetadata,
localizerService LocalizerContract,
queue QueueListContract,
queueLayoutObject QueueLayoutObjectContract,
ffplayService FFplayContract,
convertorService ConvertorContract,
) *App {
app.SetMetadata(*metadata)
a := app.New()
statusesText := GetBlockProgressbarStatusesText(localizerService)
blockProgressbarService := NewBlockProgressbar(statusesText, ffplayService)
rightTabsService := NewRightTabs(localizerService)
queueLayoutObject := NewQueueLayoutObject(queue, localizerService, ffplayService, rightTabsService, blockProgressbarService.GetContainer())
return &App{
AppFyne: a,
Window: newWindow(a.NewWindow("GUI for FFmpeg"), NewLayout(queueLayoutObject, localizerService)),
Window: newWindow(a.NewWindow("GUI for FFmpeg"), NewLayout(queueLayoutObject, localizerService, rightTabsService)),
Queue: queue,
localizerService: localizerService,
convertorService: convertorService,
localizerService: localizerService,
convertorService: convertorService,
blockProgressbarService: blockProgressbarService,
ffplayService: ffplayService,
}
}
@@ -65,6 +75,10 @@ func (a App) GetConvertorService() ConvertorContract {
return a.convertorService
}
func (a App) GetFFplayService() FFplayContract {
return a.ffplayService
}
func (a App) AfterClosing() {
for _, cmd := range a.convertorService.GetRunningProcesses() {
_ = cmd.Process.Kill()
@@ -81,22 +95,33 @@ func (a App) RunConvertor() {
}
queue.Status = StatusType(InProgress)
a.Window.GetLayout().ChangeQueueStatus(queueId, queue)
if a.blockProgressbarService.GetContainer().Hidden {
a.blockProgressbarService.GetContainer().Show()
}
totalDuration, err := a.convertorService.GetTotalDuration(&queue.Setting.VideoFileInput)
if err != nil {
totalDuration = 0
}
progress := a.Window.GetLayout().NewProgressbar(queueId, totalDuration)
progress := a.blockProgressbarService.GetProgressbar(
totalDuration,
queue.Setting.VideoFileInput.Path,
a.localizerService,
)
err = a.convertorService.RunConvert(*queue.Setting, progress)
if err != nil {
queue.Status = StatusType(Error)
queue.Error = err
a.Window.GetLayout().ChangeQueueStatus(queueId, queue)
a.blockProgressbarService.ProcessEndedWithError(err.Error())
continue
}
queue.Status = StatusType(Completed)
a.Window.GetLayout().ChangeQueueStatus(queueId, queue)
a.blockProgressbarService.ProcessEndedWithSuccess(queue.Setting.VideoFileOut.Path)
}
}()
}