diff src/statusicon/si_ui.c @ 918:209bd85dc1b9 trunk

[svn] - statusicon: add an option to use mouse wheel to change playing song instead of volume
author giacomo
date Fri, 06 Apr 2007 11:47:07 -0700
parents f2fde7b4dccd
children d16737cc85f6
line wrap: on
line diff
--- a/src/statusicon/si_ui.c	Fri Apr 06 10:30:17 2007 -0700
+++ b/src/statusicon/si_ui.c	Fri Apr 06 11:47:07 2007 -0700
@@ -102,11 +102,32 @@
   switch ( event->direction )
   {
     case GDK_SCROLL_UP:
-      si_audacious_volume_change( 5 );
+    {
+      switch ( si_cfg.scroll_action )
+      {
+        case SI_CFG_SCROLL_ACTION_VOLUME:
+          si_audacious_volume_change( 5 );
+          break;
+        case SI_CFG_SCROLL_ACTION_SKIP:
+          si_audacious_playback_skip( 1 );
+          break;
+      }
       break;
+    }
+    
     case GDK_SCROLL_DOWN:
-      si_audacious_volume_change( -5 );
+    {
+      switch ( si_cfg.scroll_action )
+      {
+        case SI_CFG_SCROLL_ACTION_VOLUME:
+          si_audacious_volume_change( -5 );
+          break;
+        case SI_CFG_SCROLL_ACTION_SKIP:
+          si_audacious_playback_skip( -1 );
+          break;
+      }
       break;
+    }
   }
 
   return FALSE;
@@ -538,16 +559,28 @@
 void
 si_ui_prefs_cb_commit ( gpointer prefs_win )
 {
-  GSList *rcm_grp = g_object_get_data( G_OBJECT(prefs_win) , "rcm_grp" );
-  while ( rcm_grp != NULL )
+  GSList *list = g_object_get_data( G_OBJECT(prefs_win) , "rcm_grp" );
+  while ( list != NULL )
   {
-    if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(rcm_grp->data) ) == TRUE )
+    if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(list->data) ) == TRUE )
     {
-      si_cfg.rclick_menu = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(rcm_grp->data),"val"));
+      si_cfg.rclick_menu = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(list->data),"val"));
       break;
     }
-    rcm_grp = g_slist_next(rcm_grp);
+    list = g_slist_next(list);
   }
+  
+  list = g_object_get_data( G_OBJECT(prefs_win) , "msa_grp" );
+  while ( list != NULL )
+  {
+    if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(list->data) ) == TRUE )
+    {
+      si_cfg.scroll_action = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(list->data),"val"));
+      break;
+    }
+    list = g_slist_next(list);
+  }
+  
   si_cfg_save();
   gtk_widget_destroy( GTK_WIDGET(prefs_win) );
 }
@@ -560,6 +593,8 @@
   GtkWidget *prefs_vbox;
   GtkWidget *prefs_rclick_frame, *prefs_rclick_vbox;
   GtkWidget *prefs_rclick_audmenu_rbt, *prefs_rclick_smallmenu_rbt;
+  GtkWidget *prefs_scroll_frame, *prefs_scroll_vbox;
+  GtkWidget *prefs_scroll_vol_rbt, *prefs_scroll_skip_rbt;
   GtkWidget *prefs_bbar_bbox;
   GtkWidget *prefs_bbar_bt_ok, *prefs_bbar_bt_cancel;
   GdkGeometry prefs_win_hints;
@@ -606,6 +641,29 @@
   gtk_box_pack_start( GTK_BOX(prefs_rclick_vbox) , prefs_rclick_audmenu_rbt , TRUE , TRUE , 0 );
   gtk_box_pack_start( GTK_BOX(prefs_rclick_vbox) , prefs_rclick_smallmenu_rbt , TRUE , TRUE , 0 );
   gtk_box_pack_start( GTK_BOX(prefs_vbox) , prefs_rclick_frame , TRUE , TRUE , 0 );
+  
+  prefs_scroll_frame = gtk_frame_new( _("Mouse Scroll Action") );
+  prefs_scroll_vbox = gtk_vbox_new( TRUE , 0 );
+  gtk_container_set_border_width( GTK_CONTAINER(prefs_scroll_vbox) , 6 );
+  gtk_container_add( GTK_CONTAINER(prefs_scroll_frame) , prefs_scroll_vbox );
+  prefs_scroll_vol_rbt = gtk_radio_button_new_with_label( NULL ,
+                               _("Change volume") );
+  g_object_set_data( G_OBJECT(prefs_scroll_vol_rbt) , "val" ,
+                     GINT_TO_POINTER(SI_CFG_SCROLL_ACTION_VOLUME) );
+  prefs_scroll_skip_rbt = gtk_radio_button_new_with_label_from_widget(
+                                 GTK_RADIO_BUTTON(prefs_scroll_vol_rbt) ,
+                                 _("Change playing song") );
+  g_object_set_data( G_OBJECT(prefs_scroll_skip_rbt) , "val" ,
+                     GINT_TO_POINTER(SI_CFG_SCROLL_ACTION_SKIP) );
+  g_object_set_data( G_OBJECT(prefs_win) , "msa_grp" ,
+                     gtk_radio_button_get_group(GTK_RADIO_BUTTON(prefs_scroll_skip_rbt)) );
+  if ( si_cfg.scroll_action == SI_CFG_SCROLL_ACTION_VOLUME )
+    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(prefs_scroll_vol_rbt) , TRUE );
+  else
+    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(prefs_scroll_skip_rbt) , TRUE );
+  gtk_box_pack_start( GTK_BOX(prefs_scroll_vbox) , prefs_scroll_vol_rbt , TRUE , TRUE , 0 );
+  gtk_box_pack_start( GTK_BOX(prefs_scroll_vbox) , prefs_scroll_skip_rbt , TRUE , TRUE , 0 );
+  gtk_box_pack_start( GTK_BOX(prefs_vbox) , prefs_scroll_frame , TRUE , TRUE , 0 );
 
   /* horizontal separator and buttons */
   gtk_box_pack_start( GTK_BOX(prefs_vbox) , gtk_hseparator_new() , FALSE , FALSE , 4 );