src/gtknotify.c

changeset 13415
c8090b1fe17a
parent 13414
eadfdb95f030
child 13520
f89ab3c41f4b
equal deleted inserted replaced
13414:eadfdb95f030 13415:c8090b1fe17a
77 { 77 {
78 GtkWidget *dialog; 78 GtkWidget *dialog;
79 GtkWidget *treeview; 79 GtkWidget *treeview;
80 GtkTreeStore *treemodel; 80 GtkTreeStore *treemodel;
81 GtkLabel *label; 81 GtkLabel *label;
82 GtkWidget *open_button;
82 }; 83 };
83 84
84 static GaimMailDialog *mail_dialog = NULL; 85 static GaimMailDialog *mail_dialog = NULL;
85 86
86 static void *gaim_gtk_notify_emails(GaimConnection *gc, size_t count, gboolean detailed, 87 static void *gaim_gtk_notify_emails(GaimConnection *gc, size_t count, gboolean detailed,
264 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); 265 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
265 266
266 gtk_widget_show_all(dialog); 267 gtk_widget_show_all(dialog);
267 268
268 return dialog; 269 return dialog;
270 }
271
272 static void
273 selection_changed_cb(GtkTreeSelection *sel, GaimMailDialog *dialog)
274 {
275 GtkTreeIter iter;
276 GtkTreeModel *model;
277 GaimNotifyMailData *data;
278 gboolean active = TRUE;
279
280 if (gtk_tree_selection_get_selected(sel, &model, &iter) == FALSE)
281 active = FALSE;
282 else
283 {
284 gtk_tree_model_get(model, &iter, GAIM_MAIL_DATA, &data, -1);
285 if (data->url == NULL)
286 active = FALSE;
287 }
288
289 gtk_widget_set_sensitive(dialog->open_button, active);
269 } 290 }
270 291
271 static void * 292 static void *
272 gaim_gtk_notify_email(GaimConnection *gc, const char *subject, const char *from, 293 gaim_gtk_notify_email(GaimConnection *gc, const char *subject, const char *from,
273 const char *to, const char *url) 294 const char *to, const char *url)
299 320
300 if (mail_dialog == NULL || !detailed) 321 if (mail_dialog == NULL || !detailed)
301 { 322 {
302 GtkCellRenderer *rend; 323 GtkCellRenderer *rend;
303 GtkTreeViewColumn *column; 324 GtkTreeViewColumn *column;
325 GtkWidget *button = NULL;
304 326
305 dialog = gtk_dialog_new_with_buttons(_("New Mail"), NULL, 0, 327 dialog = gtk_dialog_new_with_buttons(_("New Mail"), NULL, 0,
306 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, 328 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
307 NULL); 329 NULL);
308 if (detailed) 330 if (detailed)
318 else if (detailed && mail_dialog == NULL) 340 else if (detailed && mail_dialog == NULL)
319 { 341 {
320 gtk_dialog_add_button(GTK_DIALOG(dialog), 342 gtk_dialog_add_button(GTK_DIALOG(dialog),
321 _("Open All Messages"), GTK_RESPONSE_ACCEPT); 343 _("Open All Messages"), GTK_RESPONSE_ACCEPT);
322 344
323 gtk_dialog_add_button(GTK_DIALOG(dialog), 345 button = gtk_dialog_add_button(GTK_DIALOG(dialog),
324 GAIM_STOCK_OPEN_MAIL, GTK_RESPONSE_YES); 346 GAIM_STOCK_OPEN_MAIL, GTK_RESPONSE_YES);
325 } 347 }
326 348
327 /* Setup the dialog */ 349 /* Setup the dialog */
328 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BOX_SPACE); 350 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BOX_SPACE);
329 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); 351 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE);
356 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); 378 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
357 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); 379 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
358 380
359 mail_dialog = g_new0(GaimMailDialog, 1); 381 mail_dialog = g_new0(GaimMailDialog, 1);
360 mail_dialog->dialog = dialog; 382 mail_dialog->dialog = dialog;
383 mail_dialog->open_button = button;
361 384
362 mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_GAIM_MAIL, 385 mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_GAIM_MAIL,
363 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); 386 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
364 mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel)); 387 mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel));
365 388
366 g_signal_connect(G_OBJECT(dialog), "response", 389 g_signal_connect(G_OBJECT(dialog), "response",
367 G_CALLBACK(email_response_cb), mail_dialog); 390 G_CALLBACK(email_response_cb), mail_dialog);
368 391 g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(mail_dialog->treeview))),
392 "changed", G_CALLBACK(selection_changed_cb), mail_dialog);
393
394 /* Account column */
369 column = gtk_tree_view_column_new(); 395 column = gtk_tree_view_column_new();
370 gtk_tree_view_column_set_resizable(column, TRUE); 396 gtk_tree_view_column_set_resizable(column, TRUE);
371 gtk_tree_view_column_set_title(column, _("Account")); 397 gtk_tree_view_column_set_title(column, _("Account"));
372 rend = gtk_cell_renderer_pixbuf_new(); 398 rend = gtk_cell_renderer_pixbuf_new();
373 gtk_tree_view_column_pack_start(column, rend, FALSE); 399 gtk_tree_view_column_pack_start(column, rend, FALSE);
375 rend = gtk_cell_renderer_text_new(); 401 rend = gtk_cell_renderer_text_new();
376 gtk_tree_view_column_pack_start(column, rend, TRUE); 402 gtk_tree_view_column_pack_start(column, rend, TRUE);
377 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_TO, NULL); 403 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_TO, NULL);
378 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); 404 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column);
379 405
406 /* From column */
380 column = gtk_tree_view_column_new(); 407 column = gtk_tree_view_column_new();
381 gtk_tree_view_column_set_resizable(column, TRUE); 408 gtk_tree_view_column_set_resizable(column, TRUE);
382 gtk_tree_view_column_set_title(column, _("From")); 409 gtk_tree_view_column_set_title(column, _("From"));
383 rend = gtk_cell_renderer_text_new(); 410 rend = gtk_cell_renderer_text_new();
384 gtk_tree_view_column_pack_start(column, rend, TRUE); 411 gtk_tree_view_column_pack_start(column, rend, TRUE);
385 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_FROM, NULL); 412 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_FROM, NULL);
386 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); 413 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column);
387 414
415 /* Subject column */
388 column = gtk_tree_view_column_new(); 416 column = gtk_tree_view_column_new();
389 gtk_tree_view_column_set_resizable(column, TRUE); 417 gtk_tree_view_column_set_resizable(column, TRUE);
390 gtk_tree_view_column_set_title(column, _("Subject")); 418 gtk_tree_view_column_set_title(column, _("Subject"));
391 rend = gtk_cell_renderer_text_new(); 419 rend = gtk_cell_renderer_text_new();
392 gtk_tree_view_column_pack_start(column, rend, TRUE); 420 gtk_tree_view_column_pack_start(column, rend, TRUE);

mercurial