~indicator-applet-developers/indicator-sound/trunk_4

« back to all changes in this revision

Viewing changes to src/indicator-sound.c

  • Committer: Conor Curran
  • Date: 2011-07-28 09:18:04 UTC
  • mfrom: (249.3.6 indicator-sound)
  • Revision ID: conor.curran@canonical.com-20110728091804-gy1fqxa3114yh0ng
merged Trevino's middle click mute patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
#include "voip-input-widget.h"
40
40
#include "dbus-shared-names.h"
41
41
#include "sound-state-manager.h"
 
42
#include "mute-widget.h"
42
43
 
43
44
#include "gen-sound-service.xml.h"
44
45
#include "common-defs.h"
49
50
{
50
51
  GtkWidget* volume_widget;
51
52
  GtkWidget* voip_widget;
 
53
  MuteWidget *mute_widget;
52
54
  GList* transport_widgets_list;
53
55
  GDBusProxy *dbus_proxy; 
54
56
  SoundStateManager* state_manager;
75
77
static void indicator_sound_scroll (IndicatorObject * io,
76
78
                                    IndicatorObjectEntry * entry, gint delta,
77
79
                                    IndicatorScrollDirection direction);
 
80
static void indicator_sound_middle_click (IndicatorObject * io,
 
81
                                          IndicatorObjectEntry * entry,
 
82
                                          guint time, gpointer data);
78
83
 
79
84
//key/moust event handlers
80
85
static gboolean key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data);
97
102
                                     DbusmenuMenuitem * parent,
98
103
                                     DbusmenuClient * client,
99
104
                                     gpointer user_data);
 
105
static gboolean new_mute_widget (DbusmenuMenuitem * newitem,
 
106
                                     DbusmenuMenuitem * parent,
 
107
                                     DbusmenuClient * client,
 
108
                                     gpointer user_data);
100
109
 
101
110
// DBUS communication
102
111
static GDBusNodeInfo *node_info = NULL;
125
134
  io_class->get_menu  = get_menu;
126
135
  io_class->get_accessible_desc = get_accessible_desc;
127
136
  io_class->entry_scrolled = indicator_sound_scroll;
 
137
  io_class->secondary_activate = indicator_sound_middle_click;
128
138
}
129
139
 
130
140
static void
137
147
  IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self);
138
148
  priv->volume_widget = NULL;
139
149
  priv->voip_widget = NULL;
 
150
  priv->mute_widget = NULL;
140
151
  priv->dbus_proxy = NULL;
141
152
  GList* t_list = NULL;
142
153
  priv->transport_widgets_list = t_list;
207
218
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
208
219
                                    DBUSMENU_METADATA_MENUITEM_TYPE,
209
220
                                    new_metadata_widget);
 
221
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
 
222
                                    DBUSMENU_MUTE_MENUITEM_TYPE,
 
223
                                    new_mute_widget);
210
224
  // Note: Not ideal but all key handling needs to be managed here and then 
211
225
  // delegated to the appropriate widget. 
212
226
  g_signal_connect (menu, "key-press-event", G_CALLBACK(key_press_cb), io);
459
473
  return TRUE;
460
474
}
461
475
 
 
476
static gboolean
 
477
new_mute_widget(DbusmenuMenuitem * newitem,
 
478
                DbusmenuMenuitem * parent,
 
479
                DbusmenuClient * client,
 
480
                gpointer user_data)
 
481
{
 
482
  IndicatorObject *io = NULL;
 
483
 
 
484
  g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE);
 
485
  g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
 
486
 
 
487
  io = g_object_get_data (G_OBJECT (client), "indicator");
 
488
  IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));
 
489
  
 
490
  if (priv->mute_widget != NULL){ 
 
491
    g_object_unref (priv->mute_widget);
 
492
    priv->mute_widget = NULL;
 
493
  }
 
494
 
 
495
  priv->mute_widget = mute_widget_new(newitem);
 
496
  GtkMenuItem *item = mute_widget_get_menu_item (priv->mute_widget);
 
497
 
 
498
  dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client),
 
499
                                  newitem,
 
500
                                  item,
 
501
                                  parent);
 
502
 
 
503
  return TRUE;
 
504
}
 
505
 
462
506
/*******************************************************************/
463
507
//UI callbacks
464
508
/******************************************************************/
677
721
  sound_state_manager_show_notification (priv->state_manager, value);
678
722
}
679
723
 
 
724
static void
 
725
indicator_sound_middle_click (IndicatorObject * io, IndicatorObjectEntry * entry,
 
726
                              guint time, gpointer data)
 
727
{
 
728
  IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));
 
729
  g_return_if_fail (priv);
 
730
 
 
731
  mute_widget_toggle(priv->mute_widget);
 
732
}
 
733
 
680
734
void
681
735
update_accessible_desc (IndicatorObject * io)
682
736
{