Remove language selection to a new settings section.
This commit is contained in:
88
menu/view_setting.go
Normal file
88
menu/view_setting.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package menu
|
||||
|
||||
import (
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/canvas"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
|
||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||
"image/color"
|
||||
)
|
||||
|
||||
type ViewSettingContract interface {
|
||||
Main(
|
||||
save func(*SettingForm) error,
|
||||
cancel func(),
|
||||
)
|
||||
}
|
||||
|
||||
type SettingForm struct {
|
||||
Language kernel.Lang
|
||||
}
|
||||
|
||||
type ViewSetting struct {
|
||||
app kernel.AppContract
|
||||
}
|
||||
|
||||
func NewViewSetting(app kernel.AppContract) *ViewSetting {
|
||||
return &ViewSetting{
|
||||
app: app,
|
||||
}
|
||||
}
|
||||
|
||||
func (v ViewSetting) Main(save func(*SettingForm) error, cancel func()) {
|
||||
errorMessage := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
|
||||
errorMessage.TextSize = 16
|
||||
errorMessage.TextStyle = fyne.TextStyle{Bold: true}
|
||||
|
||||
viewSettingForm := &SettingForm{
|
||||
Language: v.app.GetLocalizerService().GetCurrentLanguage().Lang,
|
||||
}
|
||||
|
||||
languageItems := []string{}
|
||||
langByTitle := map[string]kernel.Lang{}
|
||||
for _, language := range v.app.GetLocalizerService().GetLanguages() {
|
||||
languageItems = append(languageItems, language.Title)
|
||||
langByTitle[language.Title] = language
|
||||
}
|
||||
selectLanguages := widget.NewSelect(languageItems, func(s string) {
|
||||
if lang, ok := langByTitle[s]; ok {
|
||||
viewSettingForm.Language = lang
|
||||
}
|
||||
})
|
||||
selectLanguages.Selected = v.app.GetLocalizerService().GetCurrentLanguage().Lang.Title
|
||||
|
||||
form := &widget.Form{
|
||||
Items: []*widget.FormItem{
|
||||
{
|
||||
Text: v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "menuSettingsLanguage",
|
||||
}),
|
||||
Widget: selectLanguages,
|
||||
},
|
||||
{
|
||||
Widget: errorMessage,
|
||||
},
|
||||
},
|
||||
SubmitText: v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "save",
|
||||
}),
|
||||
OnSubmit: func() {
|
||||
err := save(viewSettingForm)
|
||||
if err != nil {
|
||||
errorMessage.Text = err.Error()
|
||||
}
|
||||
},
|
||||
}
|
||||
if cancel != nil {
|
||||
form.OnCancel = cancel
|
||||
form.CancelText = v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "cancel",
|
||||
})
|
||||
}
|
||||
|
||||
messageHead := v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "settings",
|
||||
})
|
||||
v.app.GetWindow().SetContent(widget.NewCard(messageHead, "", form))
|
||||
}
|
Reference in New Issue
Block a user