| 119 gboolean pending = FALSE, connecting = FALSE; |
119 gboolean pending = FALSE, connecting = FALSE; |
| 120 |
120 |
| 121 /* determine if any ims have unseen messages */ |
121 /* determine if any ims have unseen messages */ |
| 122 convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT); |
122 convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT); |
| 123 |
123 |
| 124 if (!strcmp(purple_prefs_get_string("/purple/gtk/docklet/show"), "pending")) { |
124 if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "pending")) { |
| 125 if (convs && ui_ops->create && !visible) { |
125 if (convs && ui_ops->create && !visible) { |
| 126 g_list_free(convs); |
126 g_list_free(convs); |
| 127 ui_ops->create(); |
127 ui_ops->create(); |
| 128 return FALSE; |
128 return FALSE; |
| 129 } else if (!convs && ui_ops->destroy && visible) { |
129 } else if (!convs && ui_ops->destroy && visible) { |
| 210 |
210 |
| 211 if (ui_ops && ui_ops->update_icon) |
211 if (ui_ops && ui_ops->update_icon) |
| 212 ui_ops->update_icon(status); |
212 ui_ops->update_icon(status); |
| 213 |
213 |
| 214 /* and schedule the blinker function if messages are pending */ |
214 /* and schedule the blinker function if messages are pending */ |
| 215 if (purple_prefs_get_bool("/purple/gtk/docklet/blink") && |
215 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink") && |
| 216 status == DOCKLET_STATUS_PENDING |
216 status == DOCKLET_STATUS_PENDING |
| 217 && docklet_blinking_timer == 0) { |
217 && docklet_blinking_timer == 0) { |
| 218 docklet_blinking_timer = g_timeout_add(500, docklet_blink_icon, NULL); |
218 docklet_blinking_timer = g_timeout_add(500, docklet_blink_icon, NULL); |
| 219 } |
219 } |
| 220 } |
220 } |
| 314 * docklet pop-up menu |
314 * docklet pop-up menu |
| 315 **************************************************************************/ |
315 **************************************************************************/ |
| 316 static void |
316 static void |
| 317 docklet_toggle_mute(GtkWidget *toggle, void *data) |
317 docklet_toggle_mute(GtkWidget *toggle, void *data) |
| 318 { |
318 { |
| 319 purple_prefs_set_bool("/purple/gtk/sound/mute", GTK_CHECK_MENU_ITEM(toggle)->active); |
319 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/mute", GTK_CHECK_MENU_ITEM(toggle)->active); |
| 320 } |
320 } |
| 321 |
321 |
| 322 static void |
322 static void |
| 323 docklet_toggle_blink(GtkWidget *toggle, void *data) |
323 docklet_toggle_blink(GtkWidget *toggle, void *data) |
| 324 { |
324 { |
| 325 purple_prefs_set_bool("/purple/gtk/docklet/blink", GTK_CHECK_MENU_ITEM(toggle)->active); |
325 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/docklet/blink", GTK_CHECK_MENU_ITEM(toggle)->active); |
| 326 } |
326 } |
| 327 |
327 |
| 328 static void |
328 static void |
| 329 docklet_toggle_blist(GtkWidget *toggle, void *data) |
329 docklet_toggle_blist(GtkWidget *toggle, void *data) |
| 330 { |
330 { |
| 491 } |
491 } |
| 492 |
492 |
| 493 menu = gtk_menu_new(); |
493 menu = gtk_menu_new(); |
| 494 |
494 |
| 495 menuitem = gtk_check_menu_item_new_with_label(_("Show Buddy List")); |
495 menuitem = gtk_check_menu_item_new_with_label(_("Show Buddy List")); |
| 496 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool("/purple/gtk/blist/list_visible")); |
496 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible")); |
| 497 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blist), NULL); |
497 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blist), NULL); |
| 498 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
498 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 499 |
499 |
| 500 menuitem = gtk_menu_item_new_with_label(_("Unread Messages")); |
500 menuitem = gtk_menu_item_new_with_label(_("Unread Messages")); |
| 501 |
501 |
| 532 pidgin_new_item_from_stock(menu, _("Preferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(pidgin_prefs_show), NULL, 0, 0, NULL); |
532 pidgin_new_item_from_stock(menu, _("Preferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(pidgin_prefs_show), NULL, 0, 0, NULL); |
| 533 |
533 |
| 534 pidgin_separator(menu); |
534 pidgin_separator(menu); |
| 535 |
535 |
| 536 menuitem = gtk_check_menu_item_new_with_label(_("Mute Sounds")); |
536 menuitem = gtk_check_menu_item_new_with_label(_("Mute Sounds")); |
| 537 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool("/purple/gtk/sound/mute")); |
537 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute")); |
| 538 if (!strcmp(purple_prefs_get_string("/purple/gtk/sound/method"), "none")) |
538 if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), "none")) |
| 539 gtk_widget_set_sensitive(GTK_WIDGET(menuitem), FALSE); |
539 gtk_widget_set_sensitive(GTK_WIDGET(menuitem), FALSE); |
| 540 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); |
540 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); |
| 541 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
541 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 542 |
542 |
| 543 menuitem = gtk_check_menu_item_new_with_label(_("Blink on new message")); |
543 menuitem = gtk_check_menu_item_new_with_label(_("Blink on new message")); |
| 544 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool("/purple/gtk/docklet/blink")); |
544 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink")); |
| 545 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL); |
545 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL); |
| 546 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
546 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 547 |
547 |
| 548 pidgin_separator(menu); |
548 pidgin_separator(menu); |
| 549 |
549 |
| 589 |
589 |
| 590 void |
590 void |
| 591 pidgin_docklet_embedded() |
591 pidgin_docklet_embedded() |
| 592 { |
592 { |
| 593 if (!visibility_manager |
593 if (!visibility_manager |
| 594 && strcmp(purple_prefs_get_string("/purple/gtk/docklet/show"), "pending")) { |
594 && strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "pending")) { |
| 595 pidgin_blist_visibility_manager_add(); |
595 pidgin_blist_visibility_manager_add(); |
| 596 visibility_manager = TRUE; |
596 visibility_manager = TRUE; |
| 597 } |
597 } |
| 598 visible = TRUE; |
598 visible = TRUE; |
| 599 docklet_update_status(); |
599 docklet_update_status(); |
| 637 void *conn_handle = purple_connections_get_handle(); |
637 void *conn_handle = purple_connections_get_handle(); |
| 638 void *conv_handle = purple_conversations_get_handle(); |
638 void *conv_handle = purple_conversations_get_handle(); |
| 639 void *accounts_handle = purple_accounts_get_handle(); |
639 void *accounts_handle = purple_accounts_get_handle(); |
| 640 void *docklet_handle = pidgin_docklet_get_handle(); |
640 void *docklet_handle = pidgin_docklet_get_handle(); |
| 641 |
641 |
| 642 purple_prefs_add_none("/purple/gtk/docklet"); |
642 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/docklet"); |
| 643 purple_prefs_add_bool("/purple/gtk/docklet/blink", FALSE); |
643 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/docklet/blink", FALSE); |
| 644 purple_prefs_add_string("/purple/gtk/docklet/show", "always"); |
644 purple_prefs_add_string(PIDGIN_PREFS_ROOT "/docklet/show", "always"); |
| 645 purple_prefs_connect_callback(docklet_handle, "/purple/gtk/docklet/show", |
645 purple_prefs_connect_callback(docklet_handle, PIDGIN_PREFS_ROOT "/docklet/show", |
| 646 docklet_show_pref_changed_cb, NULL); |
646 docklet_show_pref_changed_cb, NULL); |
| 647 |
647 |
| 648 docklet_ui_init(); |
648 docklet_ui_init(); |
| 649 if (!strcmp(purple_prefs_get_string("/purple/gtk/docklet/show"), "always") && ui_ops && ui_ops->create) |
649 if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "always") && ui_ops && ui_ops->create) |
| 650 ui_ops->create(); |
650 ui_ops->create(); |
| 651 |
651 |
| 652 purple_signal_connect(conn_handle, "signed-on", |
652 purple_signal_connect(conn_handle, "signed-on", |
| 653 docklet_handle, PURPLE_CALLBACK(docklet_signed_on_cb), NULL); |
653 docklet_handle, PURPLE_CALLBACK(docklet_signed_on_cb), NULL); |
| 654 purple_signal_connect(conn_handle, "signed-off", |
654 purple_signal_connect(conn_handle, "signed-off", |