| | |
| | | import ( |
| | | "voicesnap/internal/config" |
| | | "voicesnap/internal/dock" |
| | | "voicesnap/internal/language" |
| | | "voicesnap/internal/model" |
| | | "voicesnap/internal/startup" |
| | | ) |
| | | |
| | | // ConfigService provides configuration read/write methods to the frontend. |
| | | type ConfigService struct { |
| | | cfg *config.Config |
| | | cfg *config.Config |
| | | localeDetector language.SystemLocaleDetector |
| | | } |
| | | |
| | | func NewConfigService(cfg *config.Config) *ConfigService { |
| | | return &ConfigService{cfg: cfg} |
| | | return NewConfigServiceWithDetector(cfg, language.NewSystemDetector()) |
| | | } |
| | | |
| | | func NewConfigServiceWithDetector(cfg *config.Config, detector language.SystemLocaleDetector) *ConfigService { |
| | | if detector == nil { |
| | | detector = language.NewSystemDetector() |
| | | } |
| | | return &ConfigService{cfg: cfg, localeDetector: detector} |
| | | } |
| | | |
| | | // GetConfig returns the current configuration. |
| | |
| | | return s.cfg |
| | | } |
| | | |
| | | // GetLanguageSettings returns the configured and effective UI language. |
| | | func (s *ConfigService) GetLanguageSettings() language.LanguageSettings { |
| | | return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector) |
| | | } |
| | | |
| | | // SetLanguageAuto makes the UI language follow the system language. |
| | | func (s *ConfigService) SetLanguageAuto() language.LanguageSettings { |
| | | s.cfg.LanguageMode = config.LanguageModeAuto |
| | | resolved := language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector) |
| | | s.cfg.LanguageID = resolved.EffectiveLanguageID |
| | | config.Save(s.cfg) |
| | | return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector) |
| | | } |
| | | |
| | | // SetLanguageManual persists a user-selected UI language. |
| | | func (s *ConfigService) SetLanguageManual(languageID string) language.LanguageSettings { |
| | | s.cfg.LanguageMode = config.LanguageModeManual |
| | | s.cfg.LanguageID = model.NormalizeLanguageID(languageID) |
| | | config.Save(s.cfg) |
| | | return language.Resolve(s.cfg.LanguageMode, s.cfg.LanguageID, s.localeDetector) |
| | | } |
| | | |
| | | // SetAutoHide sets the auto-hide indicator preference. |
| | | func (s *ConfigService) SetAutoHide(enabled bool) { |
| | | s.cfg.AutoHide = enabled |