Refactor application structure and initialize core components
I decided to rewrite the program taking into account the experience gained.
This commit is contained in:
65
internal/application/setting/setting.go
Normal file
65
internal/application/setting/setting.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package setting
|
||||
|
||||
import (
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/lang"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
type SettingContract interface {
|
||||
GetLanguages() []Lang
|
||||
GetCurrentLangOrDefaultLang() (currentLang Lang, isDefault bool)
|
||||
SetLang(language Lang) error
|
||||
GetFFmpegPath() string
|
||||
SetFFmpegPath(path string)
|
||||
GetFFprobePath() string
|
||||
SetFFprobePath(path string)
|
||||
GetFFplayPath() string
|
||||
SetFFplayPath(path string)
|
||||
}
|
||||
|
||||
type setting struct {
|
||||
fyneApp fyne.App
|
||||
}
|
||||
|
||||
func NewSetting(fyneApp fyne.App) SettingContract {
|
||||
return &setting{
|
||||
fyneApp: fyneApp,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *setting) GetLanguages() []Lang {
|
||||
items := []Lang{}
|
||||
for _, item := range supportedLanguages {
|
||||
items = append(items, item)
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
func (s *setting) GetCurrentLangOrDefaultLang() (currentLang Lang, isDefault bool) {
|
||||
languageCode := s.fyneApp.Preferences().String("language")
|
||||
|
||||
if languageCode == "" {
|
||||
languageTag, err := language.Parse(lang.SystemLocale().LanguageString())
|
||||
if err != nil {
|
||||
return currentLang, true
|
||||
}
|
||||
base, _ := languageTag.Base()
|
||||
languageCode = base.String()
|
||||
}
|
||||
|
||||
if currentLang, ok := supportedLanguages[languageCode]; ok {
|
||||
return currentLang, false
|
||||
}
|
||||
|
||||
return defaultLang(), true
|
||||
}
|
||||
|
||||
func (s *setting) SetLang(language Lang) error {
|
||||
err := ChangeLang(language)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.fyneApp.Preferences().SetString("language", language.Code)
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user