Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > media > main-backports-src > by-pkgid > 2f919d9249118e356bfa4acb219ef43f > files > 5

lxpanel-0.5.6-11mdv2010.2.src.rpm

From 6e79fbc3643995b77f379400126921316d8bec4c Mon Sep 17 00:00:00 2001
From: Julien Lavergne <julien.lavergne@gmail.com>
Date: Tue, 21 Dec 2010 22:41:12 +0100
Subject: [PATCH] Apply patch from ID 3103192

---
 data/Makefile.am                    |    4 ++-
 data/images/volume-high.png         |  Bin 0 -> 3453 bytes
 data/images/volume-low.png          |  Bin 0 -> 3455 bytes
 data/images/volume-medium.png       |  Bin 0 -> 3464 bytes
 src/plugins/volumealsa/volumealsa.c |   37 ++++++++++++++++++++++++++++++----
 5 files changed, 35 insertions(+), 6 deletions(-)
 create mode 100644 data/images/volume-high.png
 create mode 100644 data/images/volume-low.png
 create mode 100644 data/images/volume-medium.png

diff --git a/data/Makefile.am b/data/Makefile.am
index 3759308..bd7b68b 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -30,7 +30,9 @@ lxpanel_images_DATA = \
 	images/gnome-netstatus-txrx.png \
 	images/gnome-netstatus-tx.png \
 	images/background.png \
-	images/volume.png \
+	images/volume-low.png \
+	images/volume-medium.png \
+	images/volume-high.png \
 	images/mute.png \
 	images/ns-bothrs.png \
 	images/ns-connected.png \

diff --git a/src/plugins/volumealsa/volumealsa.c b/src/plugins/volumealsa/volumealsa.c
index f9489e8..5af5d9a 100644
--- a/src/plugins/volumealsa/volumealsa.c
+++ b/src/plugins/volumealsa/volumealsa.c
@@ -30,8 +30,10 @@
 #include "plugin.h"
 #include "dbg.h"
 
-#define ICONS_VOLUME PACKAGE_DATA_DIR "/lxpanel/images/volume.png"
-#define ICONS_MUTE PACKAGE_DATA_DIR "/lxpanel/images/mute.png"
+#define ICONS_VOLUME_HIGH   PACKAGE_DATA_DIR "/lxpanel/images/volume-high.png"
+#define ICONS_VOLUME_MEDIUM PACKAGE_DATA_DIR "/lxpanel/images/volume-medium.png"
+#define ICONS_VOLUME_LOW    PACKAGE_DATA_DIR "/lxpanel/images/volume-low.png"
+#define ICONS_MUTE          PACKAGE_DATA_DIR "/lxpanel/images/mute.png"
 
 typedef struct {
 
@@ -228,10 +230,36 @@ static void volumealsa_update_display(VolumeALSAPlugin * vol)
 {
     /* Mute status. */
     gboolean mute = asound_is_muted(vol);
+    int level = asound_get_volume(vol);
     
-    if ( ! panel_image_set_icon_theme(vol->plugin->panel, vol->tray_icon, ((mute) ? "audio-volume-muted" : "audio-volume-high")))
+    /* Change icon according to mute / volume */
+    const char* icon="audio-volume-muted";
+    const char* icon_fallback=ICONS_MUTE;
+    if (mute)
+    {
+         icon="audio-volume-muted";
+         icon_fallback=ICONS_MUTE;
+    }
+    else if (level >= 75)
     {
-         panel_image_set_from_file(vol->plugin->panel, vol->tray_icon, ((mute) ? ICONS_MUTE : ICONS_VOLUME));
+         icon="audio-volume-high";
+         icon_fallback=ICONS_VOLUME_HIGH;
+    }
+    else if (level >= 50)
+    {
+         icon="audio-volume-medium";
+         icon_fallback=ICONS_VOLUME_MEDIUM;
+    }
+    else if (level > 0)
+    {
+         icon="audio-volume-low";
+         icon_fallback=ICONS_VOLUME_LOW;
+    }
+
+    /* Change icon, fallback to default icon if theme doesn't exsit */
+    if ( ! panel_image_set_icon_theme(vol->plugin->panel, vol->tray_icon, icon))
+    {
+         panel_image_set_from_file(vol->plugin->panel, vol->tray_icon, icon_fallback);
     }
 
     g_signal_handler_block(vol->mute_check, vol->mute_check_handler);
@@ -240,7 +268,6 @@ static void volumealsa_update_display(VolumeALSAPlugin * vol)
     g_signal_handler_unblock(vol->mute_check, vol->mute_check_handler);
 
     /* Volume. */
-    int level = asound_get_volume(vol);
     if (vol->volume_scale != NULL)
     {
         g_signal_handler_block(vol->volume_scale, vol->volume_scale_handler);
-- 
1.7.0.1