comparison pidgin/gtknotify.c @ 15820:c02a897a67c7

More Gaim to Pidgin changes
author Sean Egan <seanegan@gmail.com>
date Sun, 18 Mar 2007 21:12:40 +0000
parents 427ca6a0aa87
children cebfc6af3eb5
comparison
equal deleted inserted replaced
15818:0e3a8505ebbe 15820:c02a897a67c7
65 65
66 } GaimNotifySearchResultsButtonData; 66 } GaimNotifySearchResultsButtonData;
67 67
68 enum 68 enum
69 { 69 {
70 GAIM_MAIL_ICON, 70 PIDGIN_MAIL_ICON,
71 GAIM_MAIL_TEXT, 71 PIDGIN_MAIL_TEXT,
72 GAIM_MAIL_DATA, 72 PIDGIN_MAIL_DATA,
73 COLUMNS_GAIM_MAIL 73 COLUMNS_PIDGIN_MAIL
74 }; 74 };
75 75
76 typedef struct _GaimMailDialog GaimMailDialog; 76 typedef struct _PidginMailDialog PidginMailDialog;
77 77
78 struct _GaimMailDialog 78 struct _PidginMailDialog
79 { 79 {
80 GtkWidget *dialog; 80 GtkWidget *dialog;
81 GtkWidget *treeview; 81 GtkWidget *treeview;
82 GtkTreeStore *treemodel; 82 GtkTreeStore *treemodel;
83 GtkLabel *label; 83 GtkLabel *label;
84 GtkWidget *open_button; 84 GtkWidget *open_button;
85 int total_count; 85 int total_count;
86 gboolean in_use; 86 gboolean in_use;
87 }; 87 };
88 88
89 static GaimMailDialog *mail_dialog = NULL; 89 static PidginMailDialog *mail_dialog = NULL;
90 90
91 static void *pidgin_notify_emails(GaimConnection *gc, size_t count, gboolean detailed, 91 static void *pidgin_notify_emails(GaimConnection *gc, size_t count, gboolean detailed,
92 const char **subjects, 92 const char **subjects,
93 const char **froms, const char **tos, 93 const char **froms, const char **tos,
94 const char **urls); 94 const char **urls);
98 { 98 {
99 gaim_notify_close(GAIM_NOTIFY_MESSAGE, widget); 99 gaim_notify_close(GAIM_NOTIFY_MESSAGE, widget);
100 } 100 }
101 101
102 static void 102 static void
103 email_response_cb(GtkDialog *dlg, gint id, GaimMailDialog *dialog) 103 email_response_cb(GtkDialog *dlg, gint id, PidginMailDialog *dialog)
104 { 104 {
105 GaimNotifyMailData *data = NULL; 105 GaimNotifyMailData *data = NULL;
106 GtkTreeIter iter; 106 GtkTreeIter iter;
107 107
108 if (id == GTK_RESPONSE_YES) 108 if (id == GTK_RESPONSE_YES)
112 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)); 112 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
113 113
114 if (gtk_tree_selection_get_selected(selection, NULL, &iter)) 114 if (gtk_tree_selection_get_selected(selection, NULL, &iter))
115 { 115 {
116 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter, 116 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter,
117 GAIM_MAIL_DATA, &data, -1); 117 PIDGIN_MAIL_DATA, &data, -1);
118 gaim_notify_uri(NULL, data->url); 118 gaim_notify_uri(NULL, data->url);
119 119
120 gtk_tree_store_remove(dialog->treemodel, &iter); 120 gtk_tree_store_remove(dialog->treemodel, &iter);
121 gaim_notify_close(GAIM_NOTIFY_EMAILS, data); 121 gaim_notify_close(GAIM_NOTIFY_EMAILS, data);
122 122
129 else 129 else
130 { 130 {
131 while (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter)) 131 while (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter))
132 { 132 {
133 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter, 133 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter,
134 GAIM_MAIL_DATA, &data, -1); 134 PIDGIN_MAIL_DATA, &data, -1);
135 135
136 if (id == GTK_RESPONSE_ACCEPT) 136 if (id == GTK_RESPONSE_ACCEPT)
137 gaim_notify_uri(NULL, data->url); 137 gaim_notify_uri(NULL, data->url);
138 138
139 gtk_tree_store_remove(dialog->treemodel, &iter); 139 gtk_tree_store_remove(dialog->treemodel, &iter);
275 275
276 return dialog; 276 return dialog;
277 } 277 }
278 278
279 static void 279 static void
280 selection_changed_cb(GtkTreeSelection *sel, GaimMailDialog *dialog) 280 selection_changed_cb(GtkTreeSelection *sel, PidginMailDialog *dialog)
281 { 281 {
282 GtkTreeIter iter; 282 GtkTreeIter iter;
283 GtkTreeModel *model; 283 GtkTreeModel *model;
284 GaimNotifyMailData *data; 284 GaimNotifyMailData *data;
285 gboolean active = TRUE; 285 gboolean active = TRUE;
286 286
287 if (gtk_tree_selection_get_selected(sel, &model, &iter) == FALSE) 287 if (gtk_tree_selection_get_selected(sel, &model, &iter) == FALSE)
288 active = FALSE; 288 active = FALSE;
289 else 289 else
290 { 290 {
291 gtk_tree_model_get(model, &iter, GAIM_MAIL_DATA, &data, -1); 291 gtk_tree_model_get(model, &iter, PIDGIN_MAIL_DATA, &data, -1);
292 if (data->url == NULL) 292 if (data->url == NULL)
293 active = FALSE; 293 active = FALSE;
294 } 294 }
295 295
296 gtk_widget_set_sensitive(dialog->open_button, active); 296 gtk_widget_set_sensitive(dialog->open_button, active);
353 353
354 sw = gtk_scrolled_window_new(NULL, NULL); 354 sw = gtk_scrolled_window_new(NULL, NULL);
355 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); 355 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
356 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); 356 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
357 357
358 mail_dialog = g_new0(GaimMailDialog, 1); 358 mail_dialog = g_new0(PidginMailDialog, 1);
359 mail_dialog->dialog = dialog; 359 mail_dialog->dialog = dialog;
360 mail_dialog->open_button = button; 360 mail_dialog->open_button = button;
361 361
362 mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_GAIM_MAIL, 362 mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_PIDGIN_MAIL,
363 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER); 363 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
364 mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel)); 364 mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel));
365 gtk_tree_view_set_search_column(GTK_TREE_VIEW(mail_dialog->treeview), GAIM_MAIL_TEXT); 365 gtk_tree_view_set_search_column(GTK_TREE_VIEW(mail_dialog->treeview), PIDGIN_MAIL_TEXT);
366 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(mail_dialog->treeview), 366 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(mail_dialog->treeview),
367 pidgin_tree_view_search_equal_func, NULL, NULL); 367 pidgin_tree_view_search_equal_func, NULL, NULL);
368 368
369 g_signal_connect(G_OBJECT(dialog), "response", 369 g_signal_connect(G_OBJECT(dialog), "response",
370 G_CALLBACK(email_response_cb), mail_dialog); 370 G_CALLBACK(email_response_cb), mail_dialog);
377 377
378 column = gtk_tree_view_column_new(); 378 column = gtk_tree_view_column_new();
379 gtk_tree_view_column_set_resizable(column, TRUE); 379 gtk_tree_view_column_set_resizable(column, TRUE);
380 rend = gtk_cell_renderer_pixbuf_new(); 380 rend = gtk_cell_renderer_pixbuf_new();
381 gtk_tree_view_column_pack_start(column, rend, FALSE); 381 gtk_tree_view_column_pack_start(column, rend, FALSE);
382 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", GAIM_MAIL_ICON, NULL); 382 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_MAIL_ICON, NULL);
383 rend = gtk_cell_renderer_text_new(); 383 rend = gtk_cell_renderer_text_new();
384 gtk_tree_view_column_pack_start(column, rend, TRUE); 384 gtk_tree_view_column_pack_start(column, rend, TRUE);
385 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_TEXT, NULL); 385 gtk_tree_view_column_set_attributes(column, rend, "markup", PIDGIN_MAIL_TEXT, NULL);
386 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); 386 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column);
387 387
388 label = gtk_label_new(NULL); 388 label = gtk_label_new(NULL);
389 gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>")); 389 gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>"));
390 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); 390 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
412 if (count > 0) { 412 if (count > 0) {
413 /* Allow only one non-detailed email notification for each account */ 413 /* Allow only one non-detailed email notification for each account */
414 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(treemodel), &iter)) { 414 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(treemodel), &iter)) {
415 do { 415 do {
416 gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter, 416 gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter,
417 GAIM_MAIL_DATA, &data, -1); 417 PIDGIN_MAIL_DATA, &data, -1);
418 if (data->account == account && data->count > 0) { 418 if (data->account == account && data->count > 0) {
419 new_n = FALSE; 419 new_n = FALSE;
420 g_free(data->url); 420 g_free(data->url);
421 data->url = NULL; 421 data->url = NULL;
422 mail_dialog->total_count -= data->count; 422 mail_dialog->total_count -= data->count;
433 433
434 if (url != NULL) 434 if (url != NULL)
435 data->url = g_strdup(url); 435 data->url = g_strdup(url);
436 436
437 gtk_tree_store_set(treemodel, &iter, 437 gtk_tree_store_set(treemodel, &iter,
438 GAIM_MAIL_ICON, icon, 438 PIDGIN_MAIL_ICON, icon,
439 GAIM_MAIL_TEXT, notification, 439 PIDGIN_MAIL_TEXT, notification,
440 GAIM_MAIL_DATA, data, 440 PIDGIN_MAIL_DATA, data,
441 -1); 441 -1);
442 data->iter = iter; /* XXX: Do we use this for something? */ 442 data->iter = iter; /* XXX: Do we use this for something? */
443 data->account = account; 443 data->account = account;
444 data->count = count; 444 data->count = count;
445 gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter, 445 gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter,
446 GAIM_MAIL_DATA, &data, -1); 446 PIDGIN_MAIL_DATA, &data, -1);
447 if (icon) 447 if (icon)
448 g_object_unref(icon); 448 g_object_unref(icon);
449 return data; 449 return data;
450 } 450 }
451 451