Toggle mute with Ctrl+M

Closes #117
This commit is contained in:
Rafał Dzięgiel
2021-09-06 12:34:11 +02:00
parent d49df86397
commit 574e084383
4 changed files with 45 additions and 11 deletions

View File

@@ -18,6 +18,7 @@ var actions = {
prev_track: ['<Ctrl>Left'],
volume_up: ['Up'],
volume_down: ['Down'],
mute: ['<Ctrl>m'],
toggle_play: ['space'],
change_repeat: ['<Ctrl>r'],
reveal_controls: ['Return'],
@@ -74,6 +75,9 @@ function handleAction(action, window)
case 'volume_down':
player.adjust_volume(bool);
break;
case 'mute':
player.mute ^= true;
break;
case 'next_track':
player.playlistWidget.nextTrack();
break;

View File

@@ -206,9 +206,30 @@ var VolumeButton = GObject.registerClass({
GTypeName: 'ClapperVolumeButton',
Template: Misc.getResourceUri('ui/volume-button.ui'),
Children: ['volumeScale'],
Properties: {
'muted': GObject.ParamSpec.boolean(
'muted',
'Set muted',
'Mark scale as muted',
GObject.ParamFlags.WRITABLE,
false
),
}
},
class ClapperVolumeButton extends PopoverButtonBase
{
_init(opts)
{
super._init(opts);
this._isMuted = false;
}
set muted(isMuted)
{
this._isMuted = isMuted;
this._onVolumeScaleValueChanged(this.volumeScale);
}
_onVolumeScaleValueChanged(scale)
{
const volume = scale.get_value();
@@ -224,7 +245,7 @@ class ClapperVolumeButton extends PopoverButtonBase
scale.remove_css_class(cssClass);
}
const icon = (volume <= 0)
const icon = (volume <= 0 || this._isMuted)
? 'muted'
: (volume <= 0.3)
? 'low'

3
src/controls.js vendored
View File

@@ -376,6 +376,9 @@ class ClapperControls extends Gtk.Box
: settings.get_double('volume-last');
clapperWidget.player.volume = initialVolume;
clapperWidget.player.bind_property('mute', this.volumeButton, 'muted',
GObject.BindingFlags.DEFAULT
);
}
_onPlayerResize(width, height)

View File

@@ -100,6 +100,20 @@
<property name="accelerator">space</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Seek forward</property>
<property name="subtitle" translatable="yes">Swipe right | Scroll right</property>
<property name="accelerator">Right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Seek backward</property>
<property name="subtitle" translatable="yes">Swipe left | Scroll left</property>
<property name="accelerator">Left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Volume up</property>
@@ -116,16 +130,8 @@
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Seek forward</property>
<property name="subtitle" translatable="yes">Swipe right | Scroll right</property>
<property name="accelerator">Right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Seek backward</property>
<property name="subtitle" translatable="yes">Swipe left | Scroll left</property>
<property name="accelerator">Left</property>
<property name="title" translatable="yes">Mute volume</property>
<property name="accelerator">&lt;Ctrl&gt;M</property>
</object>
</child>
<child>