airobot/ui/ui.go
2022-12-16 11:09:19 +08:00

58 lines
923 B
Go

package ui
import (
"os"
"fyne.io/fyne/v2"
"github.com/sirupsen/logrus"
"legu.airobot/lib"
"legu.airobot/storage"
"legu.airobot/theme"
)
type UIImpl struct {
app fyne.App
storage storage.Storage
config *storage.Config
scenes []lib.IScene
obs lib.Observer
}
func NewUI(app fyne.App, scenes []lib.IScene) (*UIImpl, error) {
app.Settings().SetTheme(&theme.MyTheme{})
storage, err := storage.NewOSStorage()
if err != nil {
logrus.Errorf("new storage err:%v", err)
return nil, err
}
// 加载配置
config, err := storage.LoadConfig()
if err != nil {
logrus.Errorf("Load config err:%v", err)
return nil, err
}
return &UIImpl{
app: app,
storage: storage,
config: config,
scenes: scenes,
obs: lib.NewObserver(),
}, nil
}
func (ui *UIImpl) Run() {
defer func() {
_ = os.Unsetenv("FYNE_SCALE")
}()
ui.app.Run()
}
func (ui *UIImpl) Stop() {
ui.app.Quit()
}