diff --git a/internal/gui/view/convertor.go b/internal/gui/view/convertor.go index eb7b2b9..7eb722d 100644 --- a/internal/gui/view/convertor.go +++ b/internal/gui/view/convertor.go @@ -18,19 +18,33 @@ import ( "path/filepath" ) +type ConvertSetting struct { + DirectoryForSave string + OverwriteOutputFiles bool + Format string + Encoder encoder2.EncoderContract +} + func Convertor( window window.WindowContract, addFileForConversion func(file ffmpeg.File), directoryForSavingPath string, directoryForSaving func(path string), formats encoder.ConvertorFormatsContract, + addToConversion func(convertSetting ConvertSetting) error, ) fyne.CanvasObject { + conversionMessage := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255}) + conversionMessage.TextSize = 16 + conversionMessage.TextStyle = fyne.TextStyle{Bold: true} + form := newFormConvertor( window, addFileForConversion, directoryForSavingPath, directoryForSaving, formats, + addToConversion, + conversionMessage, ) converterVideoFilesTitle := lang.L("converterVideoFilesTitle") @@ -38,8 +52,9 @@ func Convertor( } type formConvertor struct { - form *widget.Form - items []*widget.FormItem + form *widget.Form + items []*widget.FormItem + conversionMessage *canvas.Text window window.WindowContract addFileForConversion func(file ffmpeg.File) @@ -52,6 +67,8 @@ func newFormConvertor( directoryForSavingPath string, directoryForSaving func(path string), formats encoder.ConvertorFormatsContract, + addToConversion func(convertSetting ConvertSetting) error, + conversionMessage *canvas.Text, ) *formConvertor { f := widget.NewForm() f.SubmitText = lang.L("converterVideoFilesSubmitTitle") @@ -61,6 +78,7 @@ func newFormConvertor( window: window, addFileForConversion: addFileForConversion, directoryForSaving: directoryForSaving, + conversionMessage: conversionMessage, } fileForConversion := formConvertor.newFileForConversion() @@ -109,11 +127,50 @@ func newFormConvertor( formConvertor.changeEncoder(selectEncoder.Encoder) selectEncoder.ChangeEncoder = formConvertor.changeEncoder + formConvertor.form.OnSubmit = func() { + formConvertor.conversionMessage.Text = "" + if len(directoryForSavingButton.path) == 0 { + formConvertor.conversionMessage.Text = lang.L("errorSelectedFolderSave") + return + } + + if len(selectEncoder.SelectFormat.Selected) == 0 { + formConvertor.conversionMessage.Text = lang.L("errorSelectedFormat") + return + } + + if selectEncoder.Encoder == nil { + formConvertor.conversionMessage.Text = lang.L("errorSelectedEncoder") + return + } + + fileForConversion.button.Disable() + directoryForSavingButton.button.Disable() + formConvertor.form.Disable() + + err := addToConversion(ConvertSetting{ + DirectoryForSave: directoryForSavingButton.path, + OverwriteOutputFiles: isOverwriteOutputFiles, + Format: selectEncoder.SelectFormat.Selected, + Encoder: selectEncoder.Encoder, + }) + if err != nil { + formConvertor.conversionMessage.Text = err.Error() + } + + fileForConversion.button.Enable() + directoryForSavingButton.button.Enable() + formConvertor.form.Enable() + } + return formConvertor } -func (f *formConvertor) getForm() *widget.Form { - return f.form +func (f *formConvertor) getForm() fyne.CanvasObject { + return container.NewVBox( + f.form, + container.NewHScroll(f.conversionMessage), + ) } type fileForConversion struct {