fix gui freeze bug (work round)

This commit is contained in:
Aynakeya
2023-02-19 04:23:03 -08:00
parent 9d99a74faf
commit 6f2349e17b
106 changed files with 2051 additions and 1580 deletions

View File

@@ -2,8 +2,8 @@ package gui
import (
"AynaLivePlayer/common/i18n"
"AynaLivePlayer/controller"
"AynaLivePlayer/model"
"AynaLivePlayer/core/model"
"AynaLivePlayer/gui/component"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
@@ -33,25 +33,25 @@ func (b *bascicConfig) CreatePanel() fyne.CanvasObject {
func(b bool) {
l().Infof("Set random playlist for user: %t", b)
if b {
controller.Instance.Playlists().GetCurrent().Model().Mode = model.PlaylistModeRandom
API.Playlists().GetCurrent().Model().Mode = model.PlaylistModeRandom
} else {
controller.Instance.Playlists().GetCurrent().Model().Mode = model.PlaylistModeNormal
API.Playlists().GetCurrent().Model().Mode = model.PlaylistModeNormal
}
},
controller.Instance.Playlists().GetCurrent().Model().Mode == model.PlaylistModeRandom),
API.Playlists().GetCurrent().Model().Mode == model.PlaylistModeRandom),
newCheckInit(
i18n.T("gui.config.basic.random_playlist.system"),
func(b bool) {
l().Infof("Set random playlist for system: %t", b)
if b {
controller.Instance.Playlists().GetDefault().Model().Mode = model.PlaylistModeRandom
API.Playlists().GetDefault().Model().Mode = model.PlaylistModeRandom
} else {
controller.Instance.Playlists().GetDefault().Model().Mode = model.PlaylistModeNormal
API.Playlists().GetDefault().Model().Mode = model.PlaylistModeNormal
}
},
controller.Instance.Playlists().GetDefault().Model().Mode == model.PlaylistModeRandom),
API.Playlists().GetDefault().Model().Mode == model.PlaylistModeRandom),
)
devices := controller.Instance.PlayControl().GetAudioDevices()
devices := API.PlayControl().GetAudioDevices()
deviceDesc := make([]string, len(devices))
deviceDesc2Name := make(map[string]string)
for i, device := range devices {
@@ -59,22 +59,26 @@ func (b *bascicConfig) CreatePanel() fyne.CanvasObject {
deviceDesc2Name[device.Description] = device.Name
}
deviceSel := widget.NewSelect(deviceDesc, func(s string) {
controller.Instance.PlayControl().SetAudioDevice(deviceDesc2Name[s])
API.PlayControl().SetAudioDevice(deviceDesc2Name[s])
})
deviceSel.Selected = controller.Instance.PlayControl().GetCurrentAudioDevice()
deviceSel.Selected = API.PlayControl().GetCurrentAudioDevice()
outputDevice := container.NewBorder(nil, nil,
widget.NewLabel(i18n.T("gui.config.basic.audio_device")), nil,
deviceSel)
skipPlaylist := container.NewHBox(
widget.NewLabel(i18n.T("gui.config.basic.skip_playlist")),
newCheckInit(
component.NewCheckOneWayBinding(
i18n.T("gui.config.basic.skip_playlist.prompt"),
func(b bool) {
controller.Instance.PlayControl().SetSkipPlaylist(b)
},
controller.Instance.PlayControl().GetSkipPlaylist(),
),
&API.PlayControl().Config().SkipPlaylist,
API.PlayControl().Config().SkipPlaylist),
)
b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist)
skipWhenErr := container.NewHBox(
widget.NewLabel(i18n.T("gui.config.basic.skip_when_error")),
component.NewCheckOneWayBinding(
i18n.T("gui.config.basic.skip_when_error.prompt"),
&API.PlayControl().Config().AutoNextWhenFail,
API.PlayControl().Config().AutoNextWhenFail),
)
b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist, skipWhenErr)
return b.panel
}