Fix #157: Add "Auto" ReplayGain mode to auto-choose between Track and Album

This commit is contained in:
Drew Weymouth
2023-11-15 08:14:31 -08:00
parent 5af55ac2dc
commit 87fc88e308
5 changed files with 60 additions and 5 deletions
+1 -1
View File
@@ -98,7 +98,7 @@ func newAlbumPage(
a.tracklist.OnVisibleColumnsChanged = func(cols []string) {
a.cfg.TracklistColumns = cols
}
a.contr.ConnectTracklistActions(a.tracklist)
a.contr.ConnectTracklistActionsWithReplayGainAlbum(a.tracklist)
a.container = container.NewBorder(
container.New(&layouts.MaxPadLayout{PadLeft: 15, PadRight: 15, PadTop: 15, PadBottom: 10}, a.header),
+17
View File
@@ -97,17 +97,31 @@ func (m *Controller) ShowPopUpImage(img image.Image) {
))
}
func (m *Controller) ConnectTracklistActionsWithReplayGainAlbum(tracklist *widgets.Tracklist) {
m.connectTracklistActionsWithReplayGainMode(tracklist, player.ReplayGainAlbum)
}
func (m *Controller) ConnectTracklistActions(tracklist *widgets.Tracklist) {
m.connectTracklistActionsWithReplayGainMode(tracklist, player.ReplayGainTrack)
}
func (m *Controller) connectTracklistActionsWithReplayGainMode(tracklist *widgets.Tracklist, mode player.ReplayGainMode) {
tracklist.OnAddToPlaylist = m.DoAddTracksToPlaylistWorkflow
tracklist.OnAddToQueue = func(tracks []*mediaprovider.Track) {
m.App.PlaybackManager.LoadTracks(tracks, true, false)
}
tracklist.OnPlayTrackAt = func(idx int) {
m.App.PlaybackManager.LoadTracks(tracklist.GetTracks(), false, false)
if m.App.Config.ReplayGain.Mode == backend.ReplayGainAuto {
m.App.PlaybackManager.SetReplayGainMode(mode)
}
m.App.PlaybackManager.PlayTrackAt(idx)
}
tracklist.OnPlaySelection = func(tracks []*mediaprovider.Track, shuffle bool) {
m.App.PlaybackManager.LoadTracks(tracks, false, shuffle)
if m.App.Config.ReplayGain.Mode == backend.ReplayGainAuto {
m.App.PlaybackManager.SetReplayGainMode(mode)
}
m.App.PlaybackManager.PlayFromBeginning()
}
tracklist.OnSetFavorite = m.SetTrackFavorites
@@ -208,6 +222,9 @@ func (m *Controller) GetArtistTracks(artistID string) []*mediaprovider.Track {
func (m *Controller) PlayArtistDiscography(artistID string, shuffle bool) {
m.App.PlaybackManager.LoadTracks(m.GetArtistTracks(artistID), false, shuffle)
if m.App.Config.ReplayGain.Mode == backend.ReplayGainAuto {
m.App.PlaybackManager.SetReplayGainMode(player.ReplayGainAlbum)
}
m.App.PlaybackManager.PlayFromBeginning()
}
+5 -1
View File
@@ -271,7 +271,7 @@ func (s *SettingsDialog) createPlaybackTab() *container.TabItem {
}
}
replayGainSelect := widget.NewSelect([]string{"None", "Album", "Track"}, nil)
replayGainSelect := widget.NewSelect([]string{"None", "Album", "Track", "Auto"}, nil)
replayGainSelect.OnChanged = func(_ string) {
switch replayGainSelect.SelectedIndex() {
case 0:
@@ -280,6 +280,8 @@ func (s *SettingsDialog) createPlaybackTab() *container.TabItem {
s.config.ReplayGain.Mode = backend.ReplayGainAlbum
case 2:
s.config.ReplayGain.Mode = backend.ReplayGainTrack
case 3:
s.config.ReplayGain.Mode = backend.ReplayGainAuto
}
s.onReplayGainSettingsChanged()
}
@@ -290,6 +292,8 @@ func (s *SettingsDialog) createPlaybackTab() *container.TabItem {
replayGainSelect.SetSelectedIndex(1)
case backend.ReplayGainTrack:
replayGainSelect.SetSelectedIndex(2)
case backend.ReplayGainAuto:
replayGainSelect.SetSelectedIndex(3)
default:
replayGainSelect.SetSelectedIndex(0)
}