97 lines
2.1 KiB
Go
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()
|
|
}
|