| 283 #endif |
283 #endif |
| 284 |
284 |
| 285 static void |
285 static void |
| 286 docklet_menu() { |
286 docklet_menu() { |
| 287 static GtkWidget *menu = NULL; |
287 static GtkWidget *menu = NULL; |
| 288 GtkWidget *entry; |
|
| 289 GtkWidget *menuitem; |
288 GtkWidget *menuitem; |
| 290 |
289 |
| 291 if (menu) { |
290 if (menu) { |
| 292 gtk_widget_destroy(menu); |
291 gtk_widget_destroy(menu); |
| 293 } |
292 } |
| 294 |
293 |
| 295 menu = gtk_menu_new(); |
294 menu = gtk_menu_new(); |
| 296 |
295 |
| 297 entry = gtk_check_menu_item_new_with_label(_("Show Buddy List")); |
296 menuitem = gtk_check_menu_item_new_with_label(_("Show Buddy List")); |
| 298 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(entry), gaim_prefs_get_bool("/gaim/gtk/blist/list_visible")); |
297 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), gaim_prefs_get_bool("/gaim/gtk/blist/list_visible")); |
| 299 g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_blist), NULL); |
298 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blist), NULL); |
| 300 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
299 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| |
300 |
| |
301 menuitem = gtk_menu_item_new_with_label(_("Unread Messages")); |
| |
302 |
| |
303 if (status == DOCKLET_STATUS_ONLINE_PENDING || status == DOCKLET_STATUS_AWAY_PENDING) { |
| |
304 GtkWidget *submenu = gtk_menu_new(); |
| |
305 GList *l = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT, FALSE, 0); |
| |
306 if (l == NULL) { |
| |
307 gtk_widget_set_sensitive(menuitem, FALSE); |
| |
308 gaim_debug_warning("docklet", |
| |
309 "status indicates messages pending, but no conversations with unseen messages were found."); |
| |
310 } else { |
| |
311 gaim_gtk_conversations_fill_menu(submenu, l); |
| |
312 g_list_free(l); |
| |
313 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
| |
314 } |
| |
315 } else { |
| |
316 gtk_widget_set_sensitive(menuitem, FALSE); |
| |
317 } |
| |
318 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 301 |
319 |
| 302 gaim_separator(menu); |
320 gaim_separator(menu); |
| 303 |
321 |
| 304 menuitem = gaim_new_item_from_stock(menu, _("New Message..."), GAIM_STOCK_IM, G_CALLBACK(gaim_gtkdialogs_im), NULL, 0, 0, NULL); |
322 menuitem = gaim_new_item_from_stock(menu, _("New Message..."), GAIM_STOCK_IM, G_CALLBACK(gaim_gtkdialogs_im), NULL, 0, 0, NULL); |
| 305 if (status == DOCKLET_STATUS_OFFLINE) |
323 if (status == DOCKLET_STATUS_OFFLINE) |
| 316 |
334 |
| 317 gaim_separator(menu); |
335 gaim_separator(menu); |
| 318 |
336 |
| 319 gaim_new_item_from_stock(menu, _("File Transfers"), GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(gaim_show_xfer_dialog), NULL, 0, 0, NULL); |
337 gaim_new_item_from_stock(menu, _("File Transfers"), GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(gaim_show_xfer_dialog), NULL, 0, 0, NULL); |
| 320 |
338 |
| 321 entry = gtk_check_menu_item_new_with_label(_("Mute Sounds")); |
339 menuitem = gtk_check_menu_item_new_with_label(_("Mute Sounds")); |
| 322 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(entry), gaim_prefs_get_bool("/gaim/gtk/sound/mute")); |
340 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), gaim_prefs_get_bool("/gaim/gtk/sound/mute")); |
| 323 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")) |
341 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none")) |
| 324 gtk_widget_set_sensitive(GTK_WIDGET(entry), FALSE); |
342 gtk_widget_set_sensitive(GTK_WIDGET(menuitem), FALSE); |
| 325 g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); |
343 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); |
| 326 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
344 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 327 |
345 |
| 328 gaim_separator(menu); |
346 gaim_separator(menu); |
| 329 |
347 |
| 330 /* TODO: need a submenu to change status, this needs to "link" |
348 /* TODO: need a submenu to change status, this needs to "link" |
| 331 * to the status in the buddy list gtkstatusbox |
349 * to the status in the buddy list gtkstatusbox |