97 lines
2.1 KiB
Go

package controller
import (
"fyne.io/fyne/v2"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/setting"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/menu"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/view"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/window"
)
type ControllerContract interface {
Start()
}
type controller struct {
app application.AppContract
window window.WindowContract
}
func NewController(app application.AppContract) ControllerContract {
fyneWindow := app.FyneApp().NewWindow("GUI for FFmpeg")
fyneWindow.SetMaster()
queueLayout := window.NewQueueLayout(app.GetFFmpegService())
app.GetQueueService().AddListener(queueLayout)
return &controller{
app: app,
window: window.NewMainWindow(
fyneWindow,
app.GetProgressBarService(),
app.GetItemsToConvert(),
queueLayout,
),
}
}
func (c *controller) Start() {
isDefault, err := c.initLanguage()
if err != nil {
c.startWithError(err)
c.window.Show()
return
}
c.app.GetSetting().ThemeInit()
if isDefault {
languages := c.app.GetSetting().GetLanguages()
content := view.StartWithoutSupportLang(languages, func(lang setting.Lang) {
err = c.app.GetSetting().SetLang(lang)
if err != nil {
c.startWithError(err)
return
}
c.initLayout()
c.verificareaFFmpeg()
})
c.window.SetContent(content)
c.window.Show()
return
}
c.initLayout()
c.verificareaFFmpeg()
c.window.Show()
}
func (c *controller) verificareaFFmpeg() {
if !c.app.GetFFmpegService().UtilityCheck() {
c.settingConvertor(false)
return
}
c.convertor()
}
func (c *controller) initLanguage() (isDefault bool, err error) {
lang, isDefault := c.app.GetSetting().GetCurrentLangOrDefaultLang()
err = setting.ChangeLang(lang)
return isDefault, err
}
func (c *controller) initLayout() {
c.window.SetMainMenu(fyne.NewMainMenu(
menu.MainMenuSettings(
c.actionMainSettings,
c.actionSettingConvertor,
),
menu.MainMenuHelp(
c.actionAbout,
c.actionHelpFFplay,
),
))
c.window.InitLayout()
}