[Banshee-List] TrayIcon MouseWheel Volume Change diffs



Title: TrayIcon MouseWheel Volume Change diffs

Hi abock,

Trying to understand the code.
Started with an easy feature request.

the diff is atteched for it.
It was half implemented :). So was an easy one.
I guess it is a clean hack. and can make its way through the repo i hope..

Best.
ulaas.

? ChangeVolumeFromTrayIcon.diff
? mdupdate.diff
? burn-sharp/.deps
? burn-sharp/.libs
? burn-sharp/glue.lo
? burn-sharp/libnautilusburnglue.la
? libbanshee/.deps
? libbanshee/.libs
? libbanshee/cd-detect.lo
? libbanshee/cd-rip.lo
? libbanshee/gst-encode.lo
? libbanshee/gst-init.lo
? libbanshee/gst-misc.lo
? libbanshee/gst-player-engine.lo
? libbanshee/libbanshee.la
? libbanshee/xing/.deps
? mediaengines/gst/plugin-core.dll
? mediaengines/gst/plugin-core.dll.mdb
? mediaengines/helix/plugin-core.dll
? mediaengines/helix/plugin-core.dll.mdb
? po/.intltool-merge-cache
? src/MusicBrainz.dll
? src/MusicBrainz.dll.mdb
? src/burn-sharp.dll
? src/burn-sharp.dll.mdb
? src/entagged-sharp.dll
? src/entagged-sharp.dll.mdb
? src/gst-player.dll
? src/gst-player.dll.mdb
? src/hal-sharp.dll
? src/hal-sharp.dll.mdb
? src/helix-sharp.dll
? src/helix-sharp.dll.mdb
? src/ipod-sharp-ui.dll
? src/ipod-sharp.dll
? src/ipod-sharp.dll.mdb
? src/plugin-core.dll
? src/plugin-core.dll.mdb
Index: src/NotificationAreaIcon.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/NotificationAreaIcon.cs,v
retrieving revision 1.9
diff -u -r1.9 NotificationAreaIcon.cs
--- src/NotificationAreaIcon.cs	31 Oct 2005 05:33:33 -0000	1.9
+++ src/NotificationAreaIcon.cs	1 Nov 2005 22:30:20 -0000
@@ -55,6 +55,7 @@
 		private int menu_y;
 
 		public event EventHandler ClickEvent;
+		public event ScrollEventHandler MouseScrollEvent;
 
 		public NotificationAreaIcon()
 		{
@@ -67,16 +68,26 @@
 		public void Init()
 		{
 			ticon.DestroyEvent += OnDestroyEvent;
-
 			traybox = new EventBox();
 			traybox.ButtonPressEvent += 
-				new ButtonPressEventHandler(OnTrayIconClick); 
+				new ButtonPressEventHandler(OnTrayIconClick);
+			//ScrollEvent for mouse wheel handling.
+			traybox.ScrollEvent += 
+				new ScrollEventHandler(OnMouseScroll);
 			traybox.Add(new Gtk.Image(Gdk.Pixbuf.
 				LoadFromResource("tray-icon.png")));
 			
 			ticon.Add(traybox);
 			ticon.ShowAll();
 		}
+		
+		private void OnMouseScroll(object o, ScrollEventArgs args)
+		{
+			if(MouseScrollEvent != null)
+						MouseScrollEvent(o, args);
+			
+			args.RetVal = false;
+		}
 
 		private void OnTrayIconClick(object o, ButtonPressEventArgs args)
 		{
@@ -157,8 +168,8 @@
 			set { 
 				tooltips.SetTip(traybox, value, null); 
 			}
-		}	
-
+		}
+		
 	}
 	
 	public class TrayIcon : Plug
Index: src/PlayerInterface.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/PlayerInterface.cs,v
retrieving revision 1.81
diff -u -r1.81 PlayerInterface.cs
--- src/PlayerInterface.cs	1 Nov 2005 00:38:47 -0000	1.81
+++ src/PlayerInterface.cs	1 Nov 2005 22:30:26 -0000
@@ -398,7 +398,7 @@
             try {
                 trayIcon = new NotificationAreaIcon();
                 trayIcon.ClickEvent += new EventHandler(OnTrayClick);
-                //trayIcon.ScrollEvent += new ScrollEventHandler(OnTrayScroll);
+                trayIcon.MouseScrollEvent += new ScrollEventHandler(OnTrayScroll);
                 
                 trayIcon.PlayItem.Activated += OnButtonPlayPauseClicked;
                 trayIcon.NextItem.Activated += OnButtonNextClicked;
@@ -696,14 +696,24 @@
           
         private void OnTrayScroll(object o, ScrollEventArgs args)
         {
-            switch(args.Event.Direction) {
+            int tmp_vol = volumeButton.Volume;
+			
+            switch (args.Event.Direction) {
                 case Gdk.ScrollDirection.Up:
-                    OnButtonNextClicked(o, args);
+                    tmp_vol += 10;
                     break;
                 case Gdk.ScrollDirection.Down:
-                    OnButtonPreviousClicked(o, args);
+                    tmp_vol -= 10;
                     break;
-            }
+                default:
+                break;
+			}
+			// A CLAMP equiv doesn't seem to exist ... doing that manually
+			tmp_vol = Math.Min (100, tmp_vol);
+			tmp_vol = Math.Max (0, tmp_vol);
+
+			volumeButton.Volume = tmp_vol;
+			OnVolumeScaleChanged(volumeButton.Volume);
         }
         
         private void OnTrayMenuItemShuffleActivated(object o, EventArgs args)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]