rewrite using IoC and DI

This commit is contained in:
Aynakeya
2022-12-23 05:06:57 -08:00
parent 0498d2dbf3
commit c47d338a9e
88 changed files with 2295 additions and 1856 deletions

View File

@@ -1,9 +1,9 @@
package gui
import (
"AynaLivePlayer/common/event"
"AynaLivePlayer/controller"
"AynaLivePlayer/event"
"AynaLivePlayer/player"
"AynaLivePlayer/model"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
@@ -16,9 +16,9 @@ func createLyricWindow() fyne.Window {
w := App.NewWindow("Lyric")
currentLrc := newLabelWithWrapping("", fyne.TextWrapBreak)
currentLrc.Alignment = fyne.TextAlignCenter
lrcs := make([]string, len(controller.CurrentLyric.Lyrics))
lrcs := make([]string, len(controller.Instance.PlayControl().GetLyric().Get().Lyrics))
for i := 0; i < len(lrcs); i++ {
lrcs[i] = controller.CurrentLyric.Lyrics[i].Lyric
lrcs[i] = controller.Instance.PlayControl().GetLyric().Get().Lyrics[i].Lyric
}
fullLrc := widget.NewRichTextWithText(strings.Join(lrcs, "\n\n"))
fullLrc.Scroll = container.ScrollVerticalOnly
@@ -31,30 +31,32 @@ func createLyricWindow() fyne.Window {
w.CenterOnScreen()
// register handlers
controller.CurrentLyric.Handler.RegisterA(player.EventLyricUpdate, "player.lyric.current_lyric", func(event *event.Event) {
e := event.Data.(player.LyricUpdateEvent)
if e.Lyric == nil {
currentLrc.SetText("")
return
}
currentLrc.SetText(e.Lyric.Lyric)
})
controller.CurrentLyric.Handler.RegisterA(player.EventLyricReload, "player.lyric.new_media", func(event *event.Event) {
e := event.Data.(player.LyricReloadEvent)
lrcs := make([]string, len(e.Lyrics.Lyrics))
for i := 0; i < len(lrcs); i++ {
lrcs[i] = e.Lyrics.Lyrics[i].Lyric
}
fullLrc.Segments[0] = &widget.TextSegment{
Style: widget.RichTextStyleInline,
Text: strings.Join(lrcs, "\n\n"),
}
fullLrc.Refresh()
})
controller.Instance.PlayControl().GetLyric().EventManager().RegisterA(
model.EventLyricUpdate, "player.lyric.current_lyric", func(event *event.Event) {
e := event.Data.(model.LyricUpdateEvent)
if e.Lyric == nil {
currentLrc.SetText("")
return
}
currentLrc.SetText(e.Lyric.Lyric)
})
controller.Instance.PlayControl().GetLyric().EventManager().RegisterA(
model.EventLyricReload, "player.lyric.new_media", func(event *event.Event) {
e := event.Data.(model.LyricReloadEvent)
lrcs := make([]string, len(e.Lyrics.Lyrics))
for i := 0; i < len(lrcs); i++ {
lrcs[i] = e.Lyrics.Lyrics[i].Lyric
}
fullLrc.Segments[0] = &widget.TextSegment{
Style: widget.RichTextStyleInline,
Text: strings.Join(lrcs, "\n\n"),
}
fullLrc.Refresh()
})
w.SetOnClosed(func() {
controller.CurrentLyric.Handler.Unregister("player.lyric.current_lyric")
controller.CurrentLyric.Handler.Unregister("player.lyric.new_media")
controller.Instance.PlayControl().GetLyric().EventManager().Unregister("player.lyric.current_lyric")
controller.Instance.PlayControl().GetLyric().EventManager().Unregister("player.lyric.new_media")
PlayController.LrcWindowOpen = false
})
return w