Skip to content

Commit

Permalink
fix volume slider earrape
Browse files Browse the repository at this point in the history
add hebrewfix module
fix lyrics bug
  • Loading branch information
oq-x committed Jun 7, 2024
1 parent 9f6f81d commit c6082c9
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 10 deletions.
13 changes: 6 additions & 7 deletions lyrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@ import (
var lyricsTxt *fynesyncedlyrics.LyricsViewer
var lyricsRect *canvas.Rectangle
var lyricsAlt *widget.RichText
var lyricPage *fyne.Container

func lyricsPage(w fyne.Window) fyne.CanvasObject {
lyricsTxt = fynesyncedlyrics.NewLyricsViewer()
lyricsRect = canvas.NewRectangle(theme.BackgroundColor())
lyricsAlt = widget.NewRichText()
lyricsAlt.Hide()

page := container.NewStack(lyricsRect, container.NewCenter(lyricsAlt), lyricsTxt)
//lyricsTxt.ActiveLyricPosition = fynesyncedlyrics.ActiveLyricPositionTop
lyricsTxt.TextSizeName = theme.SizeNameHeadingText
lyricPage = container.NewStack(lyricsRect, container.NewCenter(lyricsAlt), lyricsTxt)

editor := lyricsEditorPage(w, page)
editor := lyricsEditorPage(w, lyricPage)
editor.Hide()

return container.NewBorder(container.NewHBox(
Expand All @@ -62,14 +61,14 @@ func lyricsPage(w fyne.Window) fyne.CanvasObject {
return
}
editor.Show()
page.Hide()
lyricPage.Hide()
} else {
editor.Hide()
page.Show()
lyricPage.Show()
}
},
},
), nil, nil, nil, page, editor)
), nil, nil, nil, lyricPage, editor)
}

func syncedLyricsEditorPage() fyne.CanvasObject {
Expand Down
6 changes: 4 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,8 @@ func main() {
songProgressSlider = widget.NewSlider(0, 0)
songProgressSlider.Disable()

songVolumeSlider = widget.NewSlider(-10, 10)
songVolumeSlider = widget.NewSlider(-2, 2)
songVolumeSlider.Step = 0.01

posd, fulld = widget.NewRichText(&widget.TextSegment{Text: "0:00", Style: widget.RichTextStyle{ColorName: theme.ColorNameDisabled}}), widget.NewRichText(&widget.TextSegment{Text: "-:--", Style: widget.RichTextStyle{ColorName: theme.ColorNameDisabled}})
prevf := 0.0
Expand Down Expand Up @@ -192,9 +193,10 @@ func main() {
volumeIcon := widget.NewIcon(theme.VolumeMuteIcon())

songVolumeSlider.OnChanged = func(f float64) {
player.SetMute(f == -1)
player.SetVolume(f)
switch {
case f == -10:
case f == -2:
volumeIcon.SetResource(theme.VolumeMuteIcon())
case f >= 0:
volumeIcon.SetResource(theme.VolumeUpIcon())
Expand Down
8 changes: 8 additions & 0 deletions player/player.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,14 @@ func (p *Player) SetVolume(v float64) {
p.streamer.SetVolume(v)
}

func (p *Player) SetMute(b bool) {
p.streamer.SetMute(b)
}

func (p *Player) Mute() bool {
return p.streamer.Mute()
}

func (p *Player) Queue() []*Song {
return p.queue
}
Expand Down
7 changes: 6 additions & 1 deletion songs.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,15 @@ import (
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
fynesyncedlyrics "github.com/dweymouth/fyne-lyrics"
)

func getLyrics(song *pl.Song) {
lyricsTxt = fynesyncedlyrics.NewLyricsViewer()
lyricsTxt.TextSizeName = theme.SizeNameHeadingText
lyricPage.Objects[2] = lyricsTxt
lyricPage.Refresh()

source := preferences.Preferences.String("lyrics.source")

var err error
Expand Down Expand Up @@ -73,7 +79,6 @@ func setPlayedSong(song *pl.Song, w fyne.Window) {

getLyrics(song)

lyricsTxt.SetCurrentLine(0)
pause.SetIcon(theme.MediaPauseIcon())

d, err := http.Get(song.Thumbnails.Min().URL)
Expand Down
8 changes: 8 additions & 0 deletions streamer/streamer.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,14 @@ func (s *Streamer) Volume() float64 {
return s.v.Volume
}

func (s *Streamer) SetMute(b bool) {
s.v.Silent = b
}

func (s *Streamer) Mute() bool {
return s.v.Silent
}

func (s *Streamer) Stream(samples [][2]float64) (n int, ok bool) {
return s.r.Stream(samples)
}
Expand Down
52 changes: 52 additions & 0 deletions util/hebrewfix.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package util

import "strings"

const (
hebrewRangeMin = 1470
hebrewRangeMax = 1524
)

func reverse[T comparable](sl []T) []T {
rev := make([]T, len(sl))
for i := range sl {
rev[i] = sl[len(sl)-1-i]
}
return rev
}

func HebrewFix(s string) string {
var has bool
words := strings.Split(s, " ")
for i, word := range words {
if checkHeb(word) {
has = true
var (
hebrewPart, englishPart string
hebrewPartDone bool
)
for _, char := range word {
if hebrewPartDone {
englishPart += string(char)
} else {
if char >= hebrewRangeMin && char <= hebrewRangeMax {
hebrewPart += string(char)
} else {
hebrewPartDone = true
englishPart += string(char)
}
}
}
words[i] = englishPart + string(reverse([]rune(hebrewPart)))
}
}
if has {
words = reverse(words)
}
return strings.Join(words, " ")
}

func checkHeb(s string) bool {
r := []rune(s)
return r[0] >= hebrewRangeMin && r[0] <= hebrewRangeMax
}

0 comments on commit c6082c9

Please sign in to comment.