annotate finch/gntlog.c @ 25925:6e1967b0f90b

Change "screen name" to "username" or "buddy name" in a whole bunch of places in the code. I've been using the definitions from the jabber specs, where "user" is me and "buddy" is someone on my buddy list.
author Mark Doliner <mark@kingant.net>
date Mon, 26 Jan 2009 09:12:04 +0000
parents 53c27ca1bb71
children b23211876f47
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
1 /**
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
2 * @file gntlog.c GNT Log viewer
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
3 * @ingroup finch
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
4 */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
5
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
6 /* finch
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
7 *
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
10 * source distribution.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
11 *
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
16 *
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
21 *
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
25 */
22665
864c82371181 Include finch.h instead of internal.h
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22356
diff changeset
26 #include "finch.h"
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
27
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
28 #include <gnt.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
29 #include <gntbox.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
30 #include <gntbutton.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
31 #include <gntentry.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
32 #include <gntlabel.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
33 #include <gnttextview.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
34 #include <gnttree.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
35 #include <gntwindow.h>
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
36
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
37 #include "account.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
38 #include "debug.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
39 #include "log.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
40 #include "notify.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
41 #include "request.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
42 #include "util.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
43
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
44 #include "gntlog.h"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
45
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
46 static GHashTable *log_viewers = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
47 static void populate_log_tree(FinchLogViewer *lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
48 static FinchLogViewer *syslog_viewer = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
49
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
50 struct log_viewer_hash_t {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
51 PurpleLogType type;
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
52 char *username;
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
53 PurpleAccount *account;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
54 PurpleContact *contact;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
55 };
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
56
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
57 static guint log_viewer_hash(gconstpointer data)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
58 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
59 const struct log_viewer_hash_t *viewer = data;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
60
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
61 if (viewer->contact != NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
62 return g_direct_hash(viewer->contact);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
63
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
64 if (viewer->account) {
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
65 return g_str_hash(viewer->username) +
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
66 g_str_hash(purple_account_get_username(viewer->account));
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
67 }
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
68
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
69 return (guint)viewer;
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
70 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
71
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
72 static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
73 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
74 const struct log_viewer_hash_t *a, *b;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
75 int ret;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
76 char *normal;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
77
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
78 a = y;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
79 b = z;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
80
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
81 if (a->contact != NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
82 if (b->contact != NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
83 return (a->contact == b->contact);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
84 else
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
85 return FALSE;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
86 } else {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
87 if (b->contact != NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
88 return FALSE;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
89 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
90
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
91 if (a->username && b->username) {
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
92 normal = g_strdup(purple_normalize(a->account, a->username));
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
93 ret = (a->account == b->account) &&
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
94 !strcmp(normal, purple_normalize(b->account, b->username));
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
95 g_free(normal);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
96 } else {
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
97 ret = (a == b);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
98 }
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
99
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
100 return ret;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
101 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
102
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
103 static const char *log_get_date(PurpleLog *log)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
104 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
105 if (log->tm)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
106 return purple_date_format_full(log->tm);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
107 else
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
108 return purple_date_format_full(localtime(&log->time));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
109 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
110
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
111 static void search_cb(GntWidget *button, FinchLogViewer *lv)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
112 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
113 const char *search_term = gnt_entry_get_text(GNT_ENTRY(lv->entry));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
114 GList *logs;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
115
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
116 if (!(*search_term)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
117 /* reset the tree */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
118 gnt_tree_remove_all(GNT_TREE(lv->tree));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
119 g_free(lv->search);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
120 lv->search = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
121 populate_log_tree(lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
122 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
123 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
124
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
125 if (lv->search != NULL && !strcmp(lv->search, search_term)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
126 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
127 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
128
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
129 g_free(lv->search);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
130 lv->search = g_strdup(search_term);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
131
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
132 gnt_tree_remove_all(GNT_TREE(lv->tree));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
133 gnt_text_view_clear(GNT_TEXT_VIEW(lv->text));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
134
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
135 for (logs = lv->logs; logs != NULL; logs = logs->next) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
136 char *read = purple_log_read((PurpleLog*)logs->data, NULL);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
137 if (read && *read && purple_strcasestr(read, search_term)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
138 PurpleLog *log = logs->data;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
139
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
140 gnt_tree_add_row_last(GNT_TREE(lv->tree),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
141 log,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
142 gnt_tree_create_row(GNT_TREE(lv->tree), log_get_date(log)),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
143 NULL);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
144 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
145 g_free(read);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
146 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
147
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
148 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
149
22790
946f1bb22adb Always top-align the logs in the log-viewer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22665
diff changeset
150 static void destroy_cb(GntWidget *w, struct log_viewer_hash_t *ht)
946f1bb22adb Always top-align the logs in the log-viewer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22665
diff changeset
151 {
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
152 FinchLogViewer *lv = syslog_viewer;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
153
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
154 if (ht != NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
155 lv = g_hash_table_lookup(log_viewers, ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
156 g_hash_table_remove(log_viewers, ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
157
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
158 g_free(ht->username);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
159 g_free(ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
160 } else
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
161 syslog_viewer = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
162
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
163 purple_request_close_with_handle(lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
164
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
165 g_list_foreach(lv->logs, (GFunc)purple_log_free, NULL);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
166 g_list_free(lv->logs);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
167
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
168 g_free(lv->search);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
169 g_free(lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
170
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
171 gnt_widget_destroy(w);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
172 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
173
22790
946f1bb22adb Always top-align the logs in the log-viewer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22665
diff changeset
174 static void log_select_cb(GntWidget *w, gpointer old, gpointer new, FinchLogViewer *viewer)
946f1bb22adb Always top-align the logs in the log-viewer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22665
diff changeset
175 {
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
176 GntTree *tree = GNT_TREE(w);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
177 PurpleLog *log = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
178 PurpleLogReadFlags flags;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
179 char *read = NULL, *strip, *newline;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
180
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
181 if (!viewer->search && !gnt_tree_get_parent_key(tree, new))
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
182 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
183
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
184 log = (PurpleLog *)new;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
185
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
186 if (log == NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
187 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
188
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
189 if (log->type != PURPLE_LOG_SYSTEM) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
190 char *title;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
191 if (log->type == PURPLE_LOG_CHAT)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
192 title = g_strdup_printf(_("Conversation in %s on %s"),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
193 log->name, log_get_date(log));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
194 else
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
195 title = g_strdup_printf(_("Conversation with %s on %s"),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
196 log->name, log_get_date(log));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
197
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
198 gnt_label_set_text(GNT_LABEL(viewer->label), title);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
199 g_free(title);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
200 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
201
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
202 read = purple_log_read(log, &flags);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
203 if (flags != PURPLE_LOG_READ_NO_NEWLINE) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
204 newline = purple_strdup_withhtml(read);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
205 strip = purple_markup_strip_html(newline);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
206 g_free(newline);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
207 } else {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
208 strip = purple_markup_strip_html(read);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
209 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
210 viewer->flags = flags;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
211
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
212 purple_signal_emit(finch_log_get_handle(), "log-displaying", viewer, log);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
213
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
214 gnt_text_view_clear(GNT_TEXT_VIEW(viewer->text));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
215 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(viewer->text), strip, GNT_TEXT_FLAG_NORMAL);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
216 g_free(read);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
217 g_free(strip);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
218 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
219
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
220 /* I want to make this smarter, but haven't come up with a cool algorithm to do so, yet.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
221 * I want the tree to be divided into groups like "Today," "Yesterday," "Last week,"
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
222 * "August," "2002," etc. based on how many conversation took place in each subdivision.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
223 *
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
224 * For now, I'll just make it a flat list.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
225 */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
226 static void populate_log_tree(FinchLogViewer *lv)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
227 /* Logs are made from trees in real life.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
228 This is a tree made from logs */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
229 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
230 const char *pmonth;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
231 char *month = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
232 char prev_top_month[30] = "";
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
233 GList *logs = lv->logs;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
234
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
235 while (logs != NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
236 PurpleLog *log = logs->data;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
237
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
238 pmonth = purple_utf8_strftime(_("%B %Y"),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
239 log->tm ? log->tm : localtime(&log->time));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
240
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
241 if (strcmp(pmonth, prev_top_month) != 0) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
242 month = g_strdup(pmonth);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
243 /* top level */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
244 gnt_tree_add_row_last(GNT_TREE(lv->tree),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
245 month,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
246 gnt_tree_create_row(GNT_TREE(lv->tree), month),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
247 NULL);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
248 gnt_tree_set_expanded(GNT_TREE(lv->tree), month, FALSE);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
249
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
250 strncpy(prev_top_month, month, sizeof(prev_top_month));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
251 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
252
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
253 /* sub */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
254 gnt_tree_add_row_last(GNT_TREE(lv->tree),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
255 log,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
256 gnt_tree_create_row(GNT_TREE(lv->tree), log_get_date(log)),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
257 month);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
258
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
259 logs = logs->next;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
260 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
261 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
262
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
263 static FinchLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *logs,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
264 const char *title, int log_size)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
265 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
266 FinchLogViewer *lv;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
267 char *text;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
268 GntWidget *vbox, *hbox;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
269 GntWidget *size_label;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
270
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
271 if (logs == NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
272 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
273 /* No logs were found. */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
274 const char *log_preferences = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
275
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
276 if (ht == NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
277 if (!purple_prefs_get_bool("/purple/logging/log_system"))
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
278 log_preferences = _("System events will only be logged if the \"Log all status changes to system log\" preference is enabled.");
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
279 } else {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
280 if (ht->type == PURPLE_LOG_IM) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
281 if (!purple_prefs_get_bool("/purple/logging/log_ims"))
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
282 log_preferences = _("Instant messages will only be logged if the \"Log all instant messages\" preference is enabled.");
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
283 } else if (ht->type == PURPLE_LOG_CHAT) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
284 if (!purple_prefs_get_bool("/purple/logging/log_chats"))
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
285 log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
286 }
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
287 g_free(ht->username);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
288 g_free(ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
289 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
290
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
291 purple_notify_info(NULL, title, _("No logs were found"), log_preferences);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
292 return NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
293 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
294
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
295 lv = g_new0(FinchLogViewer, 1);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
296 lv->logs = logs;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
297
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
298 if (ht != NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
299 g_hash_table_insert(log_viewers, ht, lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
300
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
301 /* Window ***********/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
302 lv->window = gnt_vwindow_new(FALSE);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
303 gnt_box_set_title(GNT_BOX(lv->window), title);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
304 gnt_box_set_toplevel(GNT_BOX(lv->window), TRUE);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
305 gnt_box_set_pad(GNT_BOX(lv->window), 0);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
306 g_signal_connect(G_OBJECT(lv->window), "destroy", G_CALLBACK(destroy_cb), ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
307
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
308 vbox = gnt_vbox_new(FALSE);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
309 gnt_box_add_widget(GNT_BOX(lv->window), vbox);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
310
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
311 /* Label ************/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
312 text = g_strdup_printf("%s", title);
22987
adde385c7904 Show the title text in bold.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22790
diff changeset
313 lv->label = gnt_label_new_with_format(text, GNT_TEXT_FLAG_BOLD);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
314 g_free(text);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
315 gnt_box_add_widget(GNT_BOX(vbox), lv->label);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
316
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
317 hbox = gnt_hbox_new(FALSE);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
318 gnt_box_add_widget(GNT_BOX(vbox), hbox);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
319 /* List *************/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
320 lv->tree = gnt_tree_new();
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
321 gnt_widget_set_size(lv->tree, 30, 0);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
322 populate_log_tree(lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
323 g_signal_connect (G_OBJECT(lv->tree), "selection-changed",
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
324 G_CALLBACK (log_select_cb),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
325 lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
326 gnt_box_add_widget(GNT_BOX(hbox), lv->tree);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
327
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
328 /* Viewer ************/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
329 lv->text = gnt_text_view_new();
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
330 gnt_box_add_widget(GNT_BOX(hbox), lv->text);
22790
946f1bb22adb Always top-align the logs in the log-viewer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22665
diff changeset
331 gnt_text_view_set_flag(GNT_TEXT_VIEW(lv->text), GNT_TEXT_VIEW_TOP_ALIGN);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
332
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
333 hbox = gnt_hbox_new(FALSE);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
334 gnt_box_add_widget(GNT_BOX(vbox), hbox);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
335 /* Log size ************/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
336 if (log_size) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
337 char *sz_txt = purple_str_size_to_units(log_size);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
338 text = g_strdup_printf("%s %s", _("Total log size:"), sz_txt);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
339 size_label = gnt_label_new(text);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
340 gnt_box_add_widget(GNT_BOX(hbox), size_label);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
341 g_free(sz_txt);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
342 g_free(text);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
343 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
344
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
345 /* Search box **********/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
346 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Scroll/Search: ")));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
347 lv->entry = gnt_entry_new("");
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
348 gnt_box_add_widget(GNT_BOX(hbox), lv->entry);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
349 g_signal_connect(GNT_ENTRY(lv->entry), "activate", G_CALLBACK(search_cb), lv);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
350
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
351 gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(lv->text), lv->entry);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
352 gnt_text_view_attach_pager_widget(GNT_TEXT_VIEW(lv->text), lv->entry);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
353
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
354 gnt_widget_show(lv->window);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
355
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
356 return lv;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
357 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
358
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
359 static void
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
360 our_logging_blows(PurpleLogSet *set, PurpleLogSet *setagain, GList **list)
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
361 {
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
362 /* The iteration happens on the first list. So we use the shorter list in front */
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
363 if (set->type != PURPLE_LOG_IM)
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
364 return;
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
365 *list = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, set->name, set->account), *list);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
366 }
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
367
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
368 void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account)
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
369 {
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
370 struct log_viewer_hash_t *ht;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
371 FinchLogViewer *lv = NULL;
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
372 const char *name = username;
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
373 char *title;
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
374 GList *logs = NULL;
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
375 int size = 0;
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
376
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
377 if (type != PURPLE_LOG_IM) {
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
378 g_return_if_fail(account != NULL);
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
379 g_return_if_fail(username != NULL);
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
380 }
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
381
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
382 ht = g_new0(struct log_viewer_hash_t, 1);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
383
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
384 ht->type = type;
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
385 ht->username = g_strdup(username);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
386 ht->account = account;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
387
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
388 if (log_viewers == NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
389 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
390 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
391 gnt_window_present(lv->window);
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
392 g_free(ht->username);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
393 g_free(ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
394 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
395 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
396
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
397 if (type == PURPLE_LOG_CHAT) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
398 PurpleChat *chat;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
399
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
400 chat = purple_blist_find_chat(account, username);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
401 if (chat != NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
402 name = purple_chat_get_name(chat);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
403
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
404 title = g_strdup_printf(_("Conversations in %s"), name);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
405 } else {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
406 PurpleBuddy *buddy;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
407
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
408 if (username) {
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
409 buddy = purple_find_buddy(account, username);
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
410 if (buddy != NULL)
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
411 name = purple_buddy_get_contact_alias(buddy);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
412 title = g_strdup_printf(_("Conversations with %s"), name);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
413 } else {
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
414 title = g_strdup(_("All Conversations"));
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
415 }
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
416 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
417
25925
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
418 if (username) {
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
419 logs = purple_log_get_logs(type, username, account);
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25804
diff changeset
420 size = purple_log_get_total_size(type, username, account);
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
421 } else {
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
422 /* This will happen only for IMs */
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
423 GHashTable *table = purple_log_get_log_sets();
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
424 g_hash_table_foreach(table, (GHFunc)our_logging_blows, &logs);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
425 g_hash_table_destroy(table);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
426 logs = g_list_sort(logs, purple_log_compare);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
427 size = 0;
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
428 }
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
429
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
430 display_log_viewer(ht, logs, title, size);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
431
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
432 g_free(title);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
433 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
434
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
435 void finch_log_show_contact(PurpleContact *contact)
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22987
diff changeset
436 {
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
437 struct log_viewer_hash_t *ht;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
438 PurpleBlistNode *child;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
439 FinchLogViewer *lv = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
440 GList *logs = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
441 const char *name = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
442 char *title;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
443 int total_log_size = 0;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
444
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
445 g_return_if_fail(contact != NULL);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
446
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
447 ht = g_new0(struct log_viewer_hash_t, 1);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
448 ht->type = PURPLE_LOG_IM;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
449 ht->contact = contact;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
450
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
451 if (log_viewers == NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
452 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
453 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
454 gnt_window_present(lv->window);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
455 g_free(ht);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
456 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
457 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
458
22356
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
459 for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact); child;
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
460 child = purple_blist_node_get_sibling_next(child)) {
25804
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
461 const char *name;
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
462 PurpleAccount *account;
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
463 if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
464 continue;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
465
25804
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
466 name = purple_buddy_get_name((PurpleBuddy *)child);
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
467 account = purple_buddy_get_account((PurpleBuddy *)child);
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
468 logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, name,
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
469 account), logs);
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23288
diff changeset
470 total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, name, account);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
471 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
472 logs = g_list_sort(logs, purple_log_compare);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
473
22356
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
474 name = purple_contact_get_alias(contact);
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
475 if (!name)
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
476 name = purple_buddy_get_contact_alias(purple_contact_get_priority_buddy(contact));
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
477
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
478 /* This will happen if the contact doesn't have an alias,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
479 * and none of the contact's buddies are online.
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
480 * There is probably a better way to deal with this. */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
481 if (name == NULL) {
22356
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
482 child = purple_blist_node_get_first_child((PurpleBlistNode*)contact);
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
483 if (child != NULL && PURPLE_BLIST_NODE_IS_BUDDY(child))
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
484 name = purple_buddy_get_contact_alias((PurpleBuddy *)child);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
485 if (name == NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
486 name = "";
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
487 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
488
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
489 title = g_strdup_printf(_("Conversations with %s"), name);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
490 display_log_viewer(ht, logs, title, total_log_size);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
491 g_free(title);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
492 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
493
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
494 void finch_syslog_show()
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
495 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
496 GList *accounts = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
497 GList *logs = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
498
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
499 if (syslog_viewer != NULL) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
500 gnt_window_present(syslog_viewer->window);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
501 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
502 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
503
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
504 for(accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
505
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
506 PurpleAccount *account = (PurpleAccount *)accounts->data;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
507 if(purple_find_prpl(purple_account_get_protocol_id(account)) == NULL)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
508 continue;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
509
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
510 logs = g_list_concat(purple_log_get_system_logs(account), logs);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
511 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
512 logs = g_list_sort(logs, purple_log_compare);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
513
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
514 syslog_viewer = display_log_viewer(NULL, logs, _("System Log"), 0);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
515 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
516
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
517 /****************************************************************************
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
518 * GNT LOG SUBSYSTEM *******************************************************
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
519 ****************************************************************************/
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
520
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
521 void *
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
522 finch_log_get_handle(void)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
523 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
524 static int handle;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
525
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
526 return &handle;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
527 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
528
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
529 void finch_log_init(void)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
530 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
531 void *handle = finch_log_get_handle();
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
532
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
533 purple_signal_register(handle, "log-displaying",
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
534 purple_marshal_VOID__POINTER_POINTER,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
535 NULL, 2,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
536 purple_value_new(PURPLE_TYPE_BOXED,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
537 "FinchLogViewer *"),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
538 purple_value_new(PURPLE_TYPE_SUBTYPE,
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
539 PURPLE_SUBTYPE_LOG));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
540 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
541
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
542 void
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
543 finch_log_uninit(void)
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
544 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
545 purple_signals_unregister_by_instance(finch_log_get_handle());
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
546 }