~ubuntu-branches/ubuntu/lucid/indicator-me/lucid

« back to all changes in this revision

Viewing changes to src/indicator-me.c

  • Committer: Sebastien Bacher
  • Date: 2010-03-24 12:59:43 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: seb128@ubuntu.com-20100324125943-e54i1nihe8h3wb2i
Tags: 0.2.6-0ubuntu1
releasing version 0.2.6-0ubuntu1

Show diffs side-by-side

added added

removed removed

Lines of Context:
137
137
static void
138
138
username_cb (DBusGProxy * proxy, char * username, GError *error, gpointer userdata)
139
139
{
140
 
  if (label == NULL)
 
140
  if (label == NULL) {
141
141
    label = GTK_LABEL(gtk_label_new(NULL));
 
142
    if (label == NULL) return;
 
143
  }
142
144
 
143
145
  if (username != NULL && username[0] != '\0') {
144
146
    g_debug ("Updating username label");
145
147
    gtk_label_set_text (label, username);
146
148
    gtk_widget_show(GTK_WIDGET(label));
 
149
  } else {
 
150
    gtk_widget_hide(GTK_WIDGET(label));
147
151
  }
 
152
 
148
153
}
149
154
 
150
155
static GtkLabel *
214
219
                                g_error_free(error);
215
220
                        }
216
221
 
 
222
      if (status_proxy == NULL) return;
 
223
 
217
224
                        dbus_g_proxy_add_signal(status_proxy, "StatusIconsChanged", G_TYPE_STRING, G_TYPE_INVALID);
218
225
                        dbus_g_proxy_connect_signal(status_proxy, "StatusIconsChanged", G_CALLBACK(status_icon_changed), NULL, NULL);
 
226
 
 
227
                        dbus_g_proxy_add_signal(status_proxy, "UserChanged", G_TYPE_STRING, G_TYPE_INVALID);
 
228
                        dbus_g_proxy_connect_signal(status_proxy, "UserChanged", G_CALLBACK(username_cb), NULL, NULL);
219
229
                }
220
230
 
221
231
                org_ayatana_indicator_me_service_status_icons_async(status_proxy, status_icon_cb, NULL);
240
250
}
241
251
 
242
252
static void
243
 
entry_activate_cb (GtkEntry *entry, DbusmenuMenuitem *gmi)
 
253
entry_activate_cb (GtkEntry *entry, DbusmenuMenuitem *mi)
244
254
{
 
255
  g_return_if_fail (GTK_IS_ENTRY (entry));
 
256
  g_return_if_fail (DBUSMENU_IS_MENUITEM (mi));
 
257
 
245
258
        GValue value = { 0 };
246
259
        g_value_init (&value, G_TYPE_STRING);
247
260
        g_value_set_static_string (&value, gtk_entry_get_text (entry));
248
261
 
249
262
        g_debug ("user typed: %s", g_value_get_string (&value));
250
263
 
251
 
        dbusmenu_menuitem_handle_event (gmi, "send", &value, gtk_get_current_event_time());
 
264
        dbusmenu_menuitem_handle_event (mi, "send", &value, gtk_get_current_event_time());
252
265
}
253
266
 
254
267
static gboolean
255
268
menu_visibility_changed (GtkWidget          *widget,
256
269
                         IdoEntryMenuItem   *menuitem)
257
270
{
258
 
  gtk_menu_shell_select_item (GTK_MENU_SHELL (widget), GTK_WIDGET (menuitem));
 
271
  if (GTK_IS_WIDGET (widget)
 
272
      && IDO_IS_ENTRY_MENU_ITEM (menuitem))
 
273
    gtk_menu_shell_select_item (GTK_MENU_SHELL (widget), GTK_WIDGET (menuitem));
259
274
 
260
275
  return FALSE;
261
276
}
288
303
        if (dbusmenu_menuitem_property_get (newitem, DBUSMENU_ENTRY_MENUITEM_PROP_TEXT) != NULL)
289
304
                gtk_entry_set_text(entry, dbusmenu_menuitem_property_get(newitem, DBUSMENU_ENTRY_MENUITEM_PROP_TEXT));
290
305
        gtk_entry_set_width_chars (entry, 23); /* set some nice aspect ratio for the menu */
 
306
  gtk_entry_set_max_length (entry, 140); /* enforce current gwibber limit */
291
307
 
292
308
  g_signal_connect (ido,
293
309
                    "notify::parent", G_CALLBACK (entry_parent_changed),
297
313
        /* disconnect the activate signal that newitem_base connected with the wrong
298
314
           widget, ie menuitem, and re-connect it with the /entry/ instead */
299
315
        gulong signal_id = g_signal_handler_find (GTK_MENU_ITEM (ido), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, parent);
300
 
        g_signal_handler_disconnect(GTK_MENU_ITEM (ido), signal_id);
 
316
  if (signal_id > 0)
 
317
    g_signal_handler_disconnect(GTK_MENU_ITEM (ido), signal_id);
301
318
 
302
319
        g_signal_connect (DBUSMENU_MENUITEM (newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK (entry_prop_change_cb), entry);
303
320
        g_signal_connect (GTK_ENTRY (entry), "activate", G_CALLBACK (entry_activate_cb), newitem);
315
332
        if (!g_strcmp0(prop, DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON)) {
316
333
    /* reload the avatar icon */
317
334
    about_me_menu_item_load_avatar (item, g_value_get_string(value));
 
335
  } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_VISIBLE)) {
 
336
    /* normal, ignore */
318
337
        } else {
319
338
                g_warning("Indicator Item property '%s' unknown", prop);
320
339
        }