pidgin/gtklog.c

changeset 15884
4de1981757fc
parent 15883
969b74a3e27a
child 15931
716b5fac1895
equal deleted inserted replaced
15883:969b74a3e27a 15884:4de1981757fc
1 /** 1 /**
2 * @file gtklog.c GTK+ Log viewer 2 * @file gtklog.c GTK+ Log viewer
3 * @ingroup gtkui 3 * @ingroup gtkui
4 * 4 *
5 * gaim 5 * purple
6 * 6 *
7 * Gaim is the legal property of its developers, whose names are too numerous 7 * Purple is the legal property of its developers, whose names are too numerous
8 * to list here. Please refer to the COPYRIGHT file distributed with this 8 * to list here. Please refer to the COPYRIGHT file distributed with this
9 * source distribution. 9 * source distribution.
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by 12 * it under the terms of the GNU General Public License as published by
41 static GHashTable *log_viewers = NULL; 41 static GHashTable *log_viewers = NULL;
42 static void populate_log_tree(PidginLogViewer *lv); 42 static void populate_log_tree(PidginLogViewer *lv);
43 static PidginLogViewer *syslog_viewer = NULL; 43 static PidginLogViewer *syslog_viewer = NULL;
44 44
45 struct log_viewer_hash_t { 45 struct log_viewer_hash_t {
46 GaimLogType type; 46 PurpleLogType type;
47 char *screenname; 47 char *screenname;
48 GaimAccount *account; 48 PurpleAccount *account;
49 GaimContact *contact; 49 PurpleContact *contact;
50 }; 50 };
51 51
52 static guint log_viewer_hash(gconstpointer data) 52 static guint log_viewer_hash(gconstpointer data)
53 { 53 {
54 const struct log_viewer_hash_t *viewer = data; 54 const struct log_viewer_hash_t *viewer = data;
55 55
56 if (viewer->contact != NULL) 56 if (viewer->contact != NULL)
57 return g_direct_hash(viewer->contact); 57 return g_direct_hash(viewer->contact);
58 58
59 return g_str_hash(viewer->screenname) + 59 return g_str_hash(viewer->screenname) +
60 g_str_hash(gaim_account_get_username(viewer->account)); 60 g_str_hash(purple_account_get_username(viewer->account));
61 } 61 }
62 62
63 static gboolean log_viewer_equal(gconstpointer y, gconstpointer z) 63 static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
64 { 64 {
65 const struct log_viewer_hash_t *a, *b; 65 const struct log_viewer_hash_t *a, *b;
77 } else { 77 } else {
78 if (b->contact != NULL) 78 if (b->contact != NULL)
79 return FALSE; 79 return FALSE;
80 } 80 }
81 81
82 normal = g_strdup(gaim_normalize(a->account, a->screenname)); 82 normal = g_strdup(purple_normalize(a->account, a->screenname));
83 ret = (a->account == b->account) && 83 ret = (a->account == b->account) &&
84 !strcmp(normal, gaim_normalize(b->account, b->screenname)); 84 !strcmp(normal, purple_normalize(b->account, b->screenname));
85 g_free(normal); 85 g_free(normal);
86 86
87 return ret; 87 return ret;
88 } 88 }
89 89
108 gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview)), path); 108 gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview)), path);
109 109
110 gtk_tree_path_free(path); 110 gtk_tree_path_free(path);
111 } 111 }
112 112
113 static const char *log_get_date(GaimLog *log) 113 static const char *log_get_date(PurpleLog *log)
114 { 114 {
115 if (log->tm) 115 if (log->tm)
116 return gaim_date_format_full(log->tm); 116 return purple_date_format_full(log->tm);
117 else 117 else
118 return gaim_date_format_full(localtime(&log->time)); 118 return purple_date_format_full(localtime(&log->time));
119 } 119 }
120 120
121 static void search_cb(GtkWidget *button, PidginLogViewer *lv) 121 static void search_cb(GtkWidget *button, PidginLogViewer *lv)
122 { 122 {
123 const char *search_term = gtk_entry_get_text(GTK_ENTRY(lv->entry)); 123 const char *search_term = gtk_entry_get_text(GTK_ENTRY(lv->entry));
148 148
149 gtk_tree_store_clear(lv->treestore); 149 gtk_tree_store_clear(lv->treestore);
150 gtk_imhtml_clear(GTK_IMHTML(lv->imhtml)); 150 gtk_imhtml_clear(GTK_IMHTML(lv->imhtml));
151 151
152 for (logs = lv->logs; logs != NULL; logs = logs->next) { 152 for (logs = lv->logs; logs != NULL; logs = logs->next) {
153 char *read = gaim_log_read((GaimLog*)logs->data, NULL); 153 char *read = purple_log_read((PurpleLog*)logs->data, NULL);
154 if (read && *read && gaim_strcasestr(read, search_term)) { 154 if (read && *read && purple_strcasestr(read, search_term)) {
155 GtkTreeIter iter; 155 GtkTreeIter iter;
156 GaimLog *log = logs->data; 156 PurpleLog *log = logs->data;
157 157
158 gtk_tree_store_append (lv->treestore, &iter, NULL); 158 gtk_tree_store_append (lv->treestore, &iter, NULL);
159 gtk_tree_store_set(lv->treestore, &iter, 159 gtk_tree_store_set(lv->treestore, &iter,
160 0, log_get_date(log), 160 0, log_get_date(log),
161 1, log, -1); 161 1, log, -1);
170 static void destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) { 170 static void destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) {
171 PidginLogViewer *lv = syslog_viewer; 171 PidginLogViewer *lv = syslog_viewer;
172 172
173 #ifdef _WIN32 173 #ifdef _WIN32
174 if (resp == GTK_RESPONSE_HELP) { 174 if (resp == GTK_RESPONSE_HELP) {
175 char *logdir = g_build_filename(gaim_user_dir(), "logs", NULL); 175 char *logdir = g_build_filename(purple_user_dir(), "logs", NULL);
176 winpidgin_shell_execute(logdir, "explore", NULL); 176 winpidgin_shell_execute(logdir, "explore", NULL);
177 g_free(logdir); 177 g_free(logdir);
178 return; 178 return;
179 } 179 }
180 #endif 180 #endif
186 g_free(ht->screenname); 186 g_free(ht->screenname);
187 g_free(ht); 187 g_free(ht);
188 } else 188 } else
189 syslog_viewer = NULL; 189 syslog_viewer = NULL;
190 190
191 gaim_request_close_with_handle(lv); 191 purple_request_close_with_handle(lv);
192 192
193 g_list_foreach(lv->logs, (GFunc)gaim_log_free, NULL); 193 g_list_foreach(lv->logs, (GFunc)purple_log_free, NULL);
194 g_list_free(lv->logs); 194 g_list_free(lv->logs);
195 195
196 g_free(lv->search); 196 g_free(lv->search);
197 g_free(lv); 197 g_free(lv);
198 198
212 g_free(data); 212 g_free(data);
213 } 213 }
214 214
215 static void delete_log_cb(gpointer *data) 215 static void delete_log_cb(gpointer *data)
216 { 216 {
217 if (!gaim_log_delete((GaimLog *)data[2])) 217 if (!purple_log_delete((PurpleLog *)data[2]))
218 { 218 {
219 gaim_notify_error(NULL, NULL, "Log Deletion Failed", 219 purple_notify_error(NULL, NULL, "Log Deletion Failed",
220 "Check permissions and try again."); 220 "Check permissions and try again.");
221 } 221 }
222 else 222 else
223 { 223 {
224 GtkTreeStore *treestore = data[0]; 224 GtkTreeStore *treestore = data[0];
243 } 243 }
244 244
245 static void log_delete_log_cb(GtkWidget *menuitem, gpointer *data) 245 static void log_delete_log_cb(GtkWidget *menuitem, gpointer *data)
246 { 246 {
247 PidginLogViewer *lv = data[0]; 247 PidginLogViewer *lv = data[0];
248 GaimLog *log = data[1]; 248 PurpleLog *log = data[1];
249 const char *time = log_get_date(log); 249 const char *time = log_get_date(log);
250 const char *name; 250 const char *name;
251 char *tmp; 251 char *tmp;
252 gpointer *data2; 252 gpointer *data2;
253 253
254 if (log->type == GAIM_LOG_IM) 254 if (log->type == PURPLE_LOG_IM)
255 { 255 {
256 GaimBuddy *buddy = gaim_find_buddy(log->account, log->name); 256 PurpleBuddy *buddy = purple_find_buddy(log->account, log->name);
257 if (buddy != NULL) 257 if (buddy != NULL)
258 name = gaim_buddy_get_contact_alias(buddy); 258 name = purple_buddy_get_contact_alias(buddy);
259 else 259 else
260 name = log->name; 260 name = log->name;
261 261
262 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the " 262 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the "
263 "conversation with %s which started at %s?"), name, time); 263 "conversation with %s which started at %s?"), name, time);
264 } 264 }
265 else if (log->type == GAIM_LOG_CHAT) 265 else if (log->type == PURPLE_LOG_CHAT)
266 { 266 {
267 GaimChat *chat = gaim_blist_find_chat(log->account, log->name); 267 PurpleChat *chat = purple_blist_find_chat(log->account, log->name);
268 if (chat != NULL) 268 if (chat != NULL)
269 name = gaim_chat_get_name(chat); 269 name = purple_chat_get_name(chat);
270 else 270 else
271 name = log->name; 271 name = log->name;
272 272
273 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the " 273 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the "
274 "conversation in %s which started at %s?"), name, time); 274 "conversation in %s which started at %s?"), name, time);
275 } 275 }
276 else if (log->type == GAIM_LOG_SYSTEM) 276 else if (log->type == PURPLE_LOG_SYSTEM)
277 { 277 {
278 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the system log " 278 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the system log "
279 "which started at %s?"), time); 279 "which started at %s?"), time);
280 } 280 }
281 else 281 else
288 * either way. */ 288 * either way. */
289 data2 = g_new(gpointer, 3); 289 data2 = g_new(gpointer, 3);
290 data2[0] = lv->treestore; 290 data2[0] = lv->treestore;
291 data2[1] = data[3]; /* iter */ 291 data2[1] = data[3]; /* iter */
292 data2[2] = log; 292 data2[2] = log;
293 gaim_request_action(lv, NULL, "Delete Log?", tmp, 293 purple_request_action(lv, NULL, "Delete Log?", tmp,
294 0, data2, 2, _("Delete"), delete_log_cb, _("Cancel"), delete_log_cleanup_cb); 294 0, data2, 2, _("Delete"), delete_log_cb, _("Cancel"), delete_log_cleanup_cb);
295 g_free(tmp); 295 g_free(tmp);
296 } 296 }
297 297
298 static void log_show_popup_menu(GtkWidget *treeview, GdkEventButton *event, gpointer *data) 298 static void log_show_popup_menu(GtkWidget *treeview, GdkEventButton *event, gpointer *data)
299 { 299 {
300 GtkWidget *menu = gtk_menu_new(); 300 GtkWidget *menu = gtk_menu_new();
301 GtkWidget *menuitem = gtk_menu_item_new_with_label("Delete Log..."); 301 GtkWidget *menuitem = gtk_menu_item_new_with_label("Delete Log...");
302 302
303 if (!gaim_log_is_deletable((GaimLog *)data[1])) 303 if (!purple_log_is_deletable((PurpleLog *)data[1]))
304 gtk_widget_set_sensitive(menuitem, FALSE); 304 gtk_widget_set_sensitive(menuitem, FALSE);
305 305
306 g_signal_connect(menuitem, "activate", G_CALLBACK(log_delete_log_cb), data); 306 g_signal_connect(menuitem, "activate", G_CALLBACK(log_delete_log_cb), data);
307 g_object_set_data_full(G_OBJECT(menuitem), "log-viewer-data", data, g_free); 307 g_object_set_data_full(G_OBJECT(menuitem), "log-viewer-data", data, g_free);
308 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); 308 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
318 if (event->type == GDK_BUTTON_PRESS && event->button == 3) 318 if (event->type == GDK_BUTTON_PRESS && event->button == 3)
319 { 319 {
320 GtkTreePath *path; 320 GtkTreePath *path;
321 GtkTreeIter *iter; 321 GtkTreeIter *iter;
322 GValue val; 322 GValue val;
323 GaimLog *log; 323 PurpleLog *log;
324 gpointer *data; 324 gpointer *data;
325 325
326 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), event->x, event->y, &path, NULL, NULL, NULL)) 326 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), event->x, event->y, &path, NULL, NULL, NULL))
327 return FALSE; 327 return FALSE;
328 iter = g_new(GtkTreeIter, 1); 328 iter = g_new(GtkTreeIter, 1);
354 static gboolean log_popup_menu_cb(GtkWidget *treeview, PidginLogViewer *lv) 354 static gboolean log_popup_menu_cb(GtkWidget *treeview, PidginLogViewer *lv)
355 { 355 {
356 GtkTreeSelection *sel; 356 GtkTreeSelection *sel;
357 GtkTreeIter *iter; 357 GtkTreeIter *iter;
358 GValue val; 358 GValue val;
359 GaimLog *log; 359 PurpleLog *log;
360 gpointer *data; 360 gpointer *data;
361 361
362 iter = g_new(GtkTreeIter, 1); 362 iter = g_new(GtkTreeIter, 1);
363 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv)); 363 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv));
364 if (!gtk_tree_selection_get_selected(sel, NULL, iter)) 364 if (!gtk_tree_selection_get_selected(sel, NULL, iter))
394 394
395 static void log_select_cb(GtkTreeSelection *sel, PidginLogViewer *viewer) { 395 static void log_select_cb(GtkTreeSelection *sel, PidginLogViewer *viewer) {
396 GtkTreeIter iter; 396 GtkTreeIter iter;
397 GValue val; 397 GValue val;
398 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore); 398 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
399 GaimLog *log = NULL; 399 PurpleLog *log = NULL;
400 GaimLogReadFlags flags; 400 PurpleLogReadFlags flags;
401 char *read = NULL; 401 char *read = NULL;
402 402
403 if (!gtk_tree_selection_get_selected(sel, &model, &iter)) 403 if (!gtk_tree_selection_get_selected(sel, &model, &iter))
404 return; 404 return;
405 405
411 if (log == NULL) 411 if (log == NULL)
412 return; 412 return;
413 413
414 pidgin_set_cursor(viewer->window, GDK_WATCH); 414 pidgin_set_cursor(viewer->window, GDK_WATCH);
415 415
416 if (log->type != GAIM_LOG_SYSTEM) { 416 if (log->type != PURPLE_LOG_SYSTEM) {
417 char *title; 417 char *title;
418 if (log->type == GAIM_LOG_CHAT) 418 if (log->type == PURPLE_LOG_CHAT)
419 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation in %s on %s</span>"), 419 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation in %s on %s</span>"),
420 log->name, log_get_date(log)); 420 log->name, log_get_date(log));
421 else 421 else
422 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation with %s on %s</span>"), 422 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation with %s on %s</span>"),
423 log->name, log_get_date(log)); 423 log->name, log_get_date(log));
424 424
425 gtk_label_set_markup(GTK_LABEL(viewer->label), title); 425 gtk_label_set_markup(GTK_LABEL(viewer->label), title);
426 g_free(title); 426 g_free(title);
427 } 427 }
428 428
429 read = gaim_log_read(log, &flags); 429 read = purple_log_read(log, &flags);
430 viewer->flags = flags; 430 viewer->flags = flags;
431 431
432 gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml)); 432 gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml));
433 gtk_imhtml_set_protocol_name(GTK_IMHTML(viewer->imhtml), 433 gtk_imhtml_set_protocol_name(GTK_IMHTML(viewer->imhtml),
434 gaim_account_get_protocol_name(log->account)); 434 purple_account_get_protocol_name(log->account));
435 435
436 gaim_signal_emit(pidgin_log_get_handle(), "log-displaying", viewer, log); 436 purple_signal_emit(pidgin_log_get_handle(), "log-displaying", viewer, log);
437 437
438 gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read, 438 gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read,
439 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL | 439 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL |
440 ((flags & GAIM_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0)); 440 ((flags & PURPLE_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0));
441 g_free(read); 441 g_free(read);
442 442
443 if (viewer->search != NULL) { 443 if (viewer->search != NULL) {
444 gtk_imhtml_search_clear(GTK_IMHTML(viewer->imhtml)); 444 gtk_imhtml_search_clear(GTK_IMHTML(viewer->imhtml));
445 g_idle_add(search_find_cb, viewer); 445 g_idle_add(search_find_cb, viewer);
462 char prev_top_month[30] = ""; 462 char prev_top_month[30] = "";
463 GtkTreeIter toplevel, child; 463 GtkTreeIter toplevel, child;
464 GList *logs = lv->logs; 464 GList *logs = lv->logs;
465 465
466 while (logs != NULL) { 466 while (logs != NULL) {
467 GaimLog *log = logs->data; 467 PurpleLog *log = logs->data;
468 468
469 month = gaim_utf8_strftime(_("%B %Y"), 469 month = purple_utf8_strftime(_("%B %Y"),
470 log->tm ? log->tm : localtime(&log->time)); 470 log->tm ? log->tm : localtime(&log->time));
471 471
472 if (strcmp(month, prev_top_month) != 0) 472 if (strcmp(month, prev_top_month) != 0)
473 { 473 {
474 /* top level */ 474 /* top level */
510 { 510 {
511 /* No logs were found. */ 511 /* No logs were found. */
512 const char *log_preferences = NULL; 512 const char *log_preferences = NULL;
513 513
514 if (ht == NULL) { 514 if (ht == NULL) {
515 if (!gaim_prefs_get_bool("/core/logging/log_system")) 515 if (!purple_prefs_get_bool("/core/logging/log_system"))
516 log_preferences = _("System events will only be logged if the \"Log all status changes to system log\" preference is enabled."); 516 log_preferences = _("System events will only be logged if the \"Log all status changes to system log\" preference is enabled.");
517 } else { 517 } else {
518 if (ht->type == GAIM_LOG_IM) { 518 if (ht->type == PURPLE_LOG_IM) {
519 if (!gaim_prefs_get_bool("/core/logging/log_ims")) 519 if (!purple_prefs_get_bool("/core/logging/log_ims"))
520 log_preferences = _("Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."); 520 log_preferences = _("Instant messages will only be logged if the \"Log all instant messages\" preference is enabled.");
521 } else if (ht->type == GAIM_LOG_CHAT) { 521 } else if (ht->type == PURPLE_LOG_CHAT) {
522 if (!gaim_prefs_get_bool("/core/logging/log_chats")) 522 if (!purple_prefs_get_bool("/core/logging/log_chats"))
523 log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled."); 523 log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
524 } 524 }
525 } 525 }
526 526
527 gaim_notify_info(NULL, title, _("No logs were found"), log_preferences); 527 purple_notify_info(NULL, title, _("No logs were found"), log_preferences);
528 return NULL; 528 return NULL;
529 } 529 }
530 530
531 lv = g_new0(PidginLogViewer, 1); 531 lv = g_new0(PidginLogViewer, 1);
532 lv->logs = logs; 532 lv->logs = logs;
600 g_signal_connect(lv->treeview, "button-press-event", G_CALLBACK(log_button_press_cb), lv); 600 g_signal_connect(lv->treeview, "button-press-event", G_CALLBACK(log_button_press_cb), lv);
601 g_signal_connect(lv->treeview, "popup-menu", G_CALLBACK(log_popup_menu_cb), lv); 601 g_signal_connect(lv->treeview, "popup-menu", G_CALLBACK(log_popup_menu_cb), lv);
602 602
603 /* Log size ************/ 603 /* Log size ************/
604 if(log_size) { 604 if(log_size) {
605 char *sz_txt = gaim_str_size_to_units(log_size); 605 char *sz_txt = purple_str_size_to_units(log_size);
606 text = g_strdup_printf("<span weight='bold'>%s</span> %s", _("Total log size:"), sz_txt); 606 text = g_strdup_printf("<span weight='bold'>%s</span> %s", _("Total log size:"), sz_txt);
607 size_label = gtk_label_new(NULL); 607 size_label = gtk_label_new(NULL);
608 gtk_label_set_markup(GTK_LABEL(size_label), text); 608 gtk_label_set_markup(GTK_LABEL(size_label), text);
609 /* gtk_paned_add1(GTK_PANED(pane), size_label); */ 609 /* gtk_paned_add1(GTK_PANED(pane), size_label); */
610 gtk_misc_set_alignment(GTK_MISC(size_label), 0, 0); 610 gtk_misc_set_alignment(GTK_MISC(size_label), 0, 0);
639 gtk_widget_show_all(lv->window); 639 gtk_widget_show_all(lv->window);
640 640
641 return lv; 641 return lv;
642 } 642 }
643 643
644 void pidgin_log_show(GaimLogType type, const char *screenname, GaimAccount *account) { 644 void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) {
645 struct log_viewer_hash_t *ht; 645 struct log_viewer_hash_t *ht;
646 PidginLogViewer *lv = NULL; 646 PidginLogViewer *lv = NULL;
647 const char *name = screenname; 647 const char *name = screenname;
648 char *title; 648 char *title;
649 649
663 g_free(ht->screenname); 663 g_free(ht->screenname);
664 g_free(ht); 664 g_free(ht);
665 return; 665 return;
666 } 666 }
667 667
668 if (type == GAIM_LOG_CHAT) { 668 if (type == PURPLE_LOG_CHAT) {
669 GaimChat *chat; 669 PurpleChat *chat;
670 670
671 chat = gaim_blist_find_chat(account, screenname); 671 chat = purple_blist_find_chat(account, screenname);
672 if (chat != NULL) 672 if (chat != NULL)
673 name = gaim_chat_get_name(chat); 673 name = purple_chat_get_name(chat);
674 674
675 title = g_strdup_printf(_("Conversations in %s"), name); 675 title = g_strdup_printf(_("Conversations in %s"), name);
676 } else { 676 } else {
677 GaimBuddy *buddy; 677 PurpleBuddy *buddy;
678 678
679 buddy = gaim_find_buddy(account, screenname); 679 buddy = purple_find_buddy(account, screenname);
680 if (buddy != NULL) 680 if (buddy != NULL)
681 name = gaim_buddy_get_contact_alias(buddy); 681 name = purple_buddy_get_contact_alias(buddy);
682 682
683 title = g_strdup_printf(_("Conversations with %s"), name); 683 title = g_strdup_printf(_("Conversations with %s"), name);
684 } 684 }
685 685
686 display_log_viewer(ht, gaim_log_get_logs(type, screenname, account), 686 display_log_viewer(ht, purple_log_get_logs(type, screenname, account),
687 title, gtk_image_new_from_pixbuf(pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM)), 687 title, gtk_image_new_from_pixbuf(pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM)),
688 gaim_log_get_total_size(type, screenname, account)); 688 purple_log_get_total_size(type, screenname, account));
689 g_free(title); 689 g_free(title);
690 } 690 }
691 691
692 void pidgin_log_show_contact(GaimContact *contact) { 692 void pidgin_log_show_contact(PurpleContact *contact) {
693 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1); 693 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1);
694 GaimBlistNode *child; 694 PurpleBlistNode *child;
695 PidginLogViewer *lv = NULL; 695 PidginLogViewer *lv = NULL;
696 GList *logs = NULL; 696 GList *logs = NULL;
697 GdkPixbuf *pixbuf; 697 GdkPixbuf *pixbuf;
698 GtkWidget *image = gtk_image_new(); 698 GtkWidget *image = gtk_image_new();
699 const char *name = NULL; 699 const char *name = NULL;
700 char *title; 700 char *title;
701 int total_log_size = 0; 701 int total_log_size = 0;
702 702
703 g_return_if_fail(contact != NULL); 703 g_return_if_fail(contact != NULL);
704 704
705 ht->type = GAIM_LOG_IM; 705 ht->type = PURPLE_LOG_IM;
706 ht->contact = contact; 706 ht->contact = contact;
707 707
708 if (log_viewers == NULL) { 708 if (log_viewers == NULL) {
709 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal); 709 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
710 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) { 710 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
712 g_free(ht); 712 g_free(ht);
713 return; 713 return;
714 } 714 }
715 715
716 for (child = contact->node.child ; child ; child = child->next) { 716 for (child = contact->node.child ; child ; child = child->next) {
717 if (!GAIM_BLIST_NODE_IS_BUDDY(child)) 717 if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
718 continue; 718 continue;
719 719
720 logs = g_list_concat(gaim_log_get_logs(GAIM_LOG_IM, ((GaimBuddy *)child)->name, 720 logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name,
721 ((GaimBuddy *)child)->account), logs); 721 ((PurpleBuddy *)child)->account), logs);
722 total_log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy *)child)->name, ((GaimBuddy *)child)->account); 722 total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account);
723 } 723 }
724 logs = g_list_sort(logs, gaim_log_compare); 724 logs = g_list_sort(logs, purple_log_compare);
725 725
726 pixbuf = gtk_widget_render_icon (image, PIDGIN_STOCK_STATUS_PERSON, 726 pixbuf = gtk_widget_render_icon (image, PIDGIN_STOCK_STATUS_PERSON,
727 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL), "GtkWindow"); 727 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL), "GtkWindow");
728 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf); 728 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
729 729
730 if (contact->alias != NULL) 730 if (contact->alias != NULL)
731 name = contact->alias; 731 name = contact->alias;
732 else if (contact->priority != NULL) 732 else if (contact->priority != NULL)
733 name = gaim_buddy_get_contact_alias(contact->priority); 733 name = purple_buddy_get_contact_alias(contact->priority);
734 734
735 title = g_strdup_printf(_("Conversations with %s"), name); 735 title = g_strdup_printf(_("Conversations with %s"), name);
736 display_log_viewer(ht, logs, title, image, total_log_size); 736 display_log_viewer(ht, logs, title, image, total_log_size);
737 g_free(title); 737 g_free(title);
738 } 738 }
745 if (syslog_viewer != NULL) { 745 if (syslog_viewer != NULL) {
746 gtk_window_present(GTK_WINDOW(syslog_viewer->window)); 746 gtk_window_present(GTK_WINDOW(syslog_viewer->window));
747 return; 747 return;
748 } 748 }
749 749
750 for(accounts = gaim_accounts_get_all(); accounts != NULL; accounts = accounts->next) { 750 for(accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
751 751
752 GaimAccount *account = (GaimAccount *)accounts->data; 752 PurpleAccount *account = (PurpleAccount *)accounts->data;
753 if(gaim_find_prpl(gaim_account_get_protocol_id(account)) == NULL) 753 if(purple_find_prpl(purple_account_get_protocol_id(account)) == NULL)
754 continue; 754 continue;
755 755
756 logs = g_list_concat(gaim_log_get_system_logs(account), logs); 756 logs = g_list_concat(purple_log_get_system_logs(account), logs);
757 } 757 }
758 logs = g_list_sort(logs, gaim_log_compare); 758 logs = g_list_sort(logs, purple_log_compare);
759 759
760 syslog_viewer = display_log_viewer(NULL, logs, _("System Log"), NULL, 0); 760 syslog_viewer = display_log_viewer(NULL, logs, _("System Log"), NULL, 0);
761 } 761 }
762 762
763 /**************************************************************************** 763 /****************************************************************************
774 774
775 void pidgin_log_init(void) 775 void pidgin_log_init(void)
776 { 776 {
777 void *handle = pidgin_log_get_handle(); 777 void *handle = pidgin_log_get_handle();
778 778
779 gaim_signal_register(handle, "log-displaying", 779 purple_signal_register(handle, "log-displaying",
780 gaim_marshal_VOID__POINTER_POINTER, 780 purple_marshal_VOID__POINTER_POINTER,
781 NULL, 2, 781 NULL, 2,
782 gaim_value_new(GAIM_TYPE_BOXED, 782 purple_value_new(PURPLE_TYPE_BOXED,
783 "PidginLogViewer *"), 783 "PidginLogViewer *"),
784 gaim_value_new(GAIM_TYPE_SUBTYPE, 784 purple_value_new(PURPLE_TYPE_SUBTYPE,
785 GAIM_SUBTYPE_LOG)); 785 PURPLE_SUBTYPE_LOG));
786 } 786 }
787 787
788 void 788 void
789 pidgin_log_uninit(void) 789 pidgin_log_uninit(void)
790 { 790 {
791 gaim_signals_unregister_by_instance(pidgin_log_get_handle()); 791 purple_signals_unregister_by_instance(pidgin_log_get_handle());
792 } 792 }

mercurial