diff --git a/barnard.go b/barnard.go index 813c560..849cd3f 100644 --- a/barnard.go +++ b/barnard.go @@ -112,6 +112,9 @@ func (b *Barnard) TreeItemKeyPress(ui *uiterm.Ui, tree *uiterm.Tree, item uiterm if key == *b.Hotkeys.VolumeUp { b.changeVolume(makeUsersArray(treeItem.Channel.Users), 0.1) } + if key == *b.Hotkeys.VolumeReset { + b.resetVolume(makeUsersArray(treeItem.Channel.Users)) + } } if treeItem.User != nil { @@ -134,5 +137,8 @@ func (b *Barnard) TreeItemKeyPress(ui *uiterm.Ui, tree *uiterm.Tree, item uiterm if key == *b.Hotkeys.VolumeUp { b.changeVolume([]*gumble.User{treeItem.User}, 0.1) } + if key == *b.Hotkeys.VolumeReset { + b.resetVolume([]*gumble.User{treeItem.User}) + } } } diff --git a/config/hotkey_config.go b/config/hotkey_config.go index c6118e2..13b19eb 100644 --- a/config/hotkey_config.go +++ b/config/hotkey_config.go @@ -8,6 +8,7 @@ type Hotkeys struct { Talk *uiterm.Key VolumeDown *uiterm.Key VolumeUp *uiterm.Key + VolumeReset *uiterm.Key MuteToggle *uiterm.Key Exit *uiterm.Key ToggleTimestamps *uiterm.Key diff --git a/config/user_config.go b/config/user_config.go index 4487069..2102622 100644 --- a/config/user_config.go +++ b/config/user_config.go @@ -68,6 +68,7 @@ func (c *Config) LoadConfig() { Talk: key(uiterm.KeyF1), VolumeDown: key(uiterm.KeyF5), VolumeUp: key(uiterm.KeyF6), + VolumeReset: key(uiterm.KeyF8), MuteToggle: key(uiterm.KeyF7), // Added mute toggle hotkey Exit: key(uiterm.KeyF10), ToggleTimestamps: key(uiterm.KeyF3), diff --git a/ui_tree.go b/ui_tree.go index 3ed7bfe..1a519cf 100644 --- a/ui_tree.go +++ b/ui_tree.go @@ -62,6 +62,23 @@ func (b *Barnard) changeVolume(users []*gumble.User, change float32) { b.UserConfig.SaveConfig() } +func (b *Barnard) resetVolume(users []*gumble.User) { + for _, u := range users { + au := u.AudioSource + if au == nil { + continue + } + // Reset to original volume (1.0) and boost (1) + u.Boost = uint16(1) + u.Volume = 1.0 + if !u.LocallyMuted { + au.SetGain(1.0) + } + b.UserConfig.UpdateConfig(u) + } + b.UserConfig.SaveConfig() +} + func makeUsersArray(users gumble.Users) []*gumble.User { t := make([]*gumble.User, 0, len(users)) for _, u := range users {