From 6d68d25b821cc7e717c9fa134f5b1204e13ecf65 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Sat, 3 Sep 2022 01:51:11 +0200 Subject: Convert Mute menuitem to switch fixes https://github.com/AyatanaIndicators/ayatana-indicator-sound/issues/83 --- src/service.vala | 22 +++++++++++++++++----- src/sound-menu.vala | 15 +++++++++++++-- 2 files changed, 30 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index c2c425c..c437475 100644 --- a/src/service.vala +++ b/src/service.vala @@ -1,6 +1,6 @@ /* * Copyright 2013 Canonical Ltd. - * Copyright 2021 Robert Tari + * Copyright 2021-2022 Robert Tari * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -362,11 +362,23 @@ public class IndicatorSound.Service: Object { SimpleAction mute_action; Action create_mute_action () { - mute_action = new SimpleAction.stateful ("mute", null, new Variant.boolean (this.volume_control.mute)); - mute_action.activate.connect ( (action, param) => { - action.change_state (new Variant.boolean (!action.get_state ().get_boolean ())); - }); + if (AyatanaCommon.utils_is_lomiri()) + { + mute_action = new SimpleAction.stateful ("mute", null, new Variant.boolean (this.volume_control.mute)); + + mute_action.activate.connect ( (action, param) => { + action.change_state (new Variant.boolean (!action.get_state ().get_boolean ())); + }); + } + else + { + mute_action = new SimpleAction.stateful ("mute", VariantType.BOOLEAN, new Variant.boolean (this.volume_control.mute)); + + mute_action.activate.connect ((action, param) => { + action.change_state (param); + }); + } mute_action.change_state.connect ( (action, val) => { volume_control.set_mute (val.get_boolean ()); diff --git a/src/sound-menu.vala b/src/sound-menu.vala index fe2b7ff..338f7c1 100644 --- a/src/sound-menu.vala +++ b/src/sound-menu.vala @@ -1,6 +1,6 @@ /* * Copyright 2013 Canonical Ltd. - * Copyright 2021 Robert Tari + * Copyright 2021-2022 Robert Tari * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,7 +49,18 @@ public class SoundMenu: Object this.volume_section = new Menu (); if ((flags & DisplayFlags.SHOW_MUTE) != 0) - volume_section.append (_("Mute"), "indicator.mute"); + { + if (AyatanaCommon.utils_is_lomiri()) + { + volume_section.append (_("Mute"), "indicator.mute"); + } + else + { + var item = new MenuItem (_("Mute"), "indicator.mute(true)"); + item.set_attribute ("x-ayatana-type", "s", "org.ayatana.indicator.switch"); + volume_section.append_item (item); + } + } if ((flags & DisplayFlags.SHOW_SILENT_MODE) != 0) { var item = new MenuItem(_("Silent Mode"), "indicator.silent-mode(true)"); item.set_attribute("x-ayatana-type", "s", "org.ayatana.indicator.switch"); -- cgit v1.2.3