diff --git a/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/applet.js b/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/applet.js index 3578a8cc72..0a870c71d4 100644 --- a/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/applet.js +++ b/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/applet.js @@ -12,6 +12,40 @@ const Util = imports.misc.util; const INHIBIT_IDLE_FLAG = 8; const INHIBIT_SLEEP_FLAG = 4; +class InhibitAppletIcon { + constructor(applet, notificationStatus, inhibitStatus) { + this._applet = applet; + this.icon_name = 'inhibit'; + this.notificationStatus = notificationStatus; + this.inhibitStatus = inhibitStatus; + } + + setAppletIcon() { + this._applet.set_applet_icon_symbolic_name(this.getAppletIcon()); + } + + getAppletIcon() { + let appletIcon = this.icon_name; + if (this.inhibitStatus) { + appletIcon += '-active'; + } + if (this.notificationStatus) { + appletIcon += '-notifications-disabled'; + } + return appletIcon; + } + + toggleNotificationStatus() { + this.notificationStatus = !this.notificationStatus; + this.setAppletIcon(); + } + + toggleInhibitStatus(status) { + this.inhibitStatus = status; + this.setAppletIcon(); + } +} + class InhibitSwitch extends PopupMenu.PopupBaseMenuItem { constructor(applet) { super(); @@ -80,10 +114,10 @@ class InhibitSwitch extends PopupMenu.PopupBaseMenuItem { if (current_state & INHIBIT_IDLE_FLAG || current_state & INHIBIT_SLEEP_FLAG) { - this._applet.set_applet_icon_symbolic_name('inhibit-active'); + this._applet.icon.toggleInhibitStatus(true); this._applet.set_applet_tooltip(_("Power management: inhibited")); } else { - this._applet.set_applet_icon_symbolic_name('inhibit'); + this._applet.icon.toggleInhibitStatus(false); this._applet.set_applet_tooltip(_("Power management: active")); } @@ -214,7 +248,7 @@ class InhibitorMenuSection extends PopupMenu.PopupMenuSection { } resetInhibitors() { - // Abort any in-progress update or else it may continue to add menu items + // Abort any in-progress update or else it may continue to add menu items // even after we've cleared them. this._updateId++; @@ -232,7 +266,7 @@ class InhibitorMenuSection extends PopupMenu.PopupMenuSection { } updateInhibitors(sessionProxy) { - // Grab a new ID for this update while at the same time aborting any other in-progress + // Grab a new ID for this update while at the same time aborting any other in-progress // update. We don't want to end up with duplicate menu items! let updateId = ++this._updateId; @@ -358,17 +392,20 @@ class CinnamonInhibitApplet extends Applet.IconApplet { this.inhibitSwitch = new InhibitSwitch(this); this.menu.addMenuItem(this.inhibitSwitch); - this.set_applet_icon_symbolic_name('inhibit'); this.set_applet_tooltip(_("Inhibit applet")); this.notif_settings = new Gio.Settings({ schema_id: "org.cinnamon.desktop.notifications" }); this.notificationsSwitch = new PopupMenu.PopupSwitchMenuItem(_("Notifications"), this.notif_settings.get_boolean("display-notifications")); + this.icon = new InhibitAppletIcon(this, !this.notificationsSwitch.state, !this.inhibitSwitch.state); + this.icon.setAppletIcon(); + this.notif_settings.connect('changed::display-notifications', Lang.bind(this, function() { this.notificationsSwitch.setToggleState(this.notif_settings.get_boolean("display-notifications")); })); this.notificationsSwitch.connect('toggled', Lang.bind(this, function() { this.notif_settings.set_boolean("display-notifications", this.notificationsSwitch.state); + this.icon.toggleNotificationStatus(); })); this.menu.addMenuItem(this.notificationsSwitch); diff --git a/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-active-notifications-disabled-symbolic.svg b/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-active-notifications-disabled-symbolic.svg new file mode 100644 index 0000000000..e969c6363d --- /dev/null +++ b/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-active-notifications-disabled-symbolic.svg @@ -0,0 +1,51 @@ + + + + + + + Gnome Symbolic Icon Theme + + + + diff --git a/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-notifications-disabled-symbolic.svg b/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-notifications-disabled-symbolic.svg new file mode 100644 index 0000000000..9d4b8bdf77 --- /dev/null +++ b/files/usr/share/cinnamon/applets/inhibit@cinnamon.org/icons/inhibit-notifications-disabled-symbolic.svg @@ -0,0 +1,48 @@ + + + + + + + Gnome Symbolic Icon Theme + + + + +