Mercurial > pidgin.yaz
annotate finch/gntnotify.c @ 31430:94b3092c904d
Apparently, UBM was updated with more parameters in MSNp16. One is
your own email address, but I'm not sure what the 4th parameter is.
Anyway, update payload length to use the correct parameter now.
Fixes #13022.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Thu, 02 Dec 2010 03:59:58 +0000 |
parents | 259bbfb423d4 |
children | a8cc50c2279f |
rev | line source |
---|---|
15818 | 1 /** |
2 * @file gntnotify.c GNT Notify API | |
16194
0f0832c13fcb
Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@wiktel.com>
parents:
15871
diff
changeset
|
3 * @ingroup finch |
20074
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19680
diff
changeset
|
4 */ |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19680
diff
changeset
|
5 |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19680
diff
changeset
|
6 /* finch |
15818 | 7 * |
15871
66dff3dfdea6
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
8 * Finch is the legal property of its developers, whose names are too numerous |
15818 | 9 * to list here. Please refer to the COPYRIGHT file distributed with this |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
23 * along with this program; if not, write to the Free Software | |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18347
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15818 | 25 */ |
29152
259bbfb423d4
Fix all the remaining files for which internal.h doesn't end up being the first include.
Paul Aurich <paul@darkrain42.org>
parents:
27663
diff
changeset
|
26 #include <internal.h> |
259bbfb423d4
Fix all the remaining files for which internal.h doesn't end up being the first include.
Paul Aurich <paul@darkrain42.org>
parents:
27663
diff
changeset
|
27 |
15818 | 28 #include <gnt.h> |
29 #include <gntbox.h> | |
30 #include <gntbutton.h> | |
31 #include <gntlabel.h> | |
32 #include <gnttree.h> | |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
33 #include <gntutils.h> |
22819
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
34 #include <gntwindow.h> |
15818 | 35 |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
17521
diff
changeset
|
36 #include "finch.h" |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
17521
diff
changeset
|
37 |
15818 | 38 #include <util.h> |
39 | |
40 #include "gntnotify.h" | |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
41 #include "debug.h" |
15818 | 42 |
43 static struct | |
44 { | |
45 GntWidget *window; | |
46 GntWidget *tree; | |
47 } emaildialog; | |
48 | |
49 static void | |
15823 | 50 notify_msg_window_destroy_cb(GntWidget *window, PurpleNotifyMsgType type) |
15818 | 51 { |
15823 | 52 purple_notify_close(type, window); |
15818 | 53 } |
54 | |
55 static void * | |
15823 | 56 finch_notify_message(PurpleNotifyMsgType type, const char *title, |
15818 | 57 const char *primary, const char *secondary) |
58 { | |
59 GntWidget *window, *button; | |
60 GntTextFormatFlags pf = 0, sf = 0; | |
61 | |
62 switch (type) | |
63 { | |
15823 | 64 case PURPLE_NOTIFY_MSG_ERROR: |
15818 | 65 sf |= GNT_TEXT_FLAG_BOLD; |
15823 | 66 case PURPLE_NOTIFY_MSG_WARNING: |
15818 | 67 pf |= GNT_TEXT_FLAG_UNDERLINE; |
15823 | 68 case PURPLE_NOTIFY_MSG_INFO: |
15818 | 69 pf |= GNT_TEXT_FLAG_BOLD; |
70 break; | |
71 } | |
72 | |
22819
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
73 window = gnt_window_box_new(FALSE, TRUE); |
15818 | 74 gnt_box_set_title(GNT_BOX(window), title); |
75 gnt_box_set_fill(GNT_BOX(window), FALSE); | |
76 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
17521
7f652ef12ed6
Remove the confusing 'OK' button from the auth dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17520
diff
changeset
|
77 gnt_box_set_pad(GNT_BOX(window), 0); |
15818 | 78 |
79 if (primary) | |
80 gnt_box_add_widget(GNT_BOX(window), | |
81 gnt_label_new_with_format(primary, pf)); | |
82 | |
83 button = gnt_button_new(_("OK")); | |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
84 |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
85 if (secondary) { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
86 GntWidget *msg; |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
87 if (type == PURPLE_NOTIFY_FORMATTED) { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
88 int width = -1, height = -1; |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
89 char *plain = (char*)secondary; |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
90 msg = gnt_text_view_new(); |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
91 gnt_text_view_set_flag(GNT_TEXT_VIEW(msg), GNT_TEXT_VIEW_TOP_ALIGN | GNT_TEXT_VIEW_NO_SCROLL); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
92 switch (type) { |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
93 case PURPLE_NOTIFY_FORMATTED: |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
94 plain = purple_markup_strip_html(secondary); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
95 if (gnt_util_parse_xhtml_to_textview(secondary, GNT_TEXT_VIEW(msg))) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
96 break; |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
97 /* Fallthrough */ |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
98 default: |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
99 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(msg), plain, sf); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
100 } |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
101 gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(msg), button); |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
102 gnt_util_get_text_bound(plain, &width, &height); |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
103 gnt_widget_set_size(msg, width + 3, height + 1); |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
104 if (plain != secondary) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
105 g_free(plain); |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
106 } else { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
107 msg = gnt_label_new_with_format(secondary, sf); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
108 } |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
109 gnt_box_add_widget(GNT_BOX(window), msg); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
110 g_object_set_data(G_OBJECT(window), "info-widget", msg); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
111 } |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
112 |
15818 | 113 gnt_box_add_widget(GNT_BOX(window), button); |
114 g_signal_connect_swapped(G_OBJECT(button), "activate", | |
115 G_CALLBACK(gnt_widget_destroy), window); | |
116 g_signal_connect(G_OBJECT(window), "destroy", | |
117 G_CALLBACK(notify_msg_window_destroy_cb), GINT_TO_POINTER(type)); | |
118 | |
119 gnt_widget_show(window); | |
120 return window; | |
121 } | |
122 | |
123 /* handle is, in all/most occasions, a GntWidget * */ | |
15823 | 124 static void finch_close_notify(PurpleNotifyType type, void *handle) |
15818 | 125 { |
126 GntWidget *widget = handle; | |
127 | |
128 if (!widget) | |
129 return; | |
130 | |
131 while (widget->parent) | |
132 widget = widget->parent; | |
133 | |
15823 | 134 if (type == PURPLE_NOTIFY_SEARCHRESULTS) |
135 purple_notify_searchresults_free(g_object_get_data(handle, "notify-results")); | |
15818 | 136 #if 1 |
137 /* This did not seem to be necessary */ | |
138 g_signal_handlers_disconnect_by_func(G_OBJECT(widget), | |
139 G_CALLBACK(notify_msg_window_destroy_cb), GINT_TO_POINTER(type)); | |
140 #endif | |
141 gnt_widget_destroy(widget); | |
142 } | |
143 | |
144 static void *finch_notify_formatted(const char *title, const char *primary, | |
145 const char *secondary, const char *text) | |
146 { | |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
147 char *xhtml = NULL; |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
148 char *t = g_strdup_printf("<span>%s%s%s</span>", |
15818 | 149 secondary ? secondary : "", |
150 secondary ? "\n" : "", | |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
151 text ? text : ""); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
152 void *ret; |
15818 | 153 |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
154 purple_markup_html_to_xhtml(t, &xhtml, NULL); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
155 ret = finch_notify_message(PURPLE_NOTIFY_FORMATTED, title, primary, xhtml); |
15818 | 156 |
157 g_free(t); | |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
158 g_free(xhtml); |
15818 | 159 |
160 return ret; | |
161 } | |
162 | |
163 static void | |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
20908
diff
changeset
|
164 reset_email_dialog(void) |
15818 | 165 { |
166 emaildialog.window = NULL; | |
167 emaildialog.tree = NULL; | |
168 } | |
169 | |
170 static void | |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
20908
diff
changeset
|
171 setup_email_dialog(void) |
15818 | 172 { |
173 GntWidget *box, *tree, *button; | |
174 if (emaildialog.window) | |
175 return; | |
176 | |
177 emaildialog.window = box = gnt_vbox_new(FALSE); | |
178 gnt_box_set_toplevel(GNT_BOX(box), TRUE); | |
179 gnt_box_set_title(GNT_BOX(box), _("Emails")); | |
180 gnt_box_set_fill(GNT_BOX(box), FALSE); | |
181 gnt_box_set_alignment(GNT_BOX(box), GNT_ALIGN_MID); | |
182 gnt_box_set_pad(GNT_BOX(box), 0); | |
183 | |
184 gnt_box_add_widget(GNT_BOX(box), | |
185 gnt_label_new_with_format(_("You have mail!"), GNT_TEXT_FLAG_BOLD)); | |
186 | |
187 emaildialog.tree = tree = gnt_tree_new_with_columns(3); | |
17269 | 188 gnt_tree_set_column_titles(GNT_TREE(tree), _("Account"), _("Sender"), _("Subject")); |
15818 | 189 gnt_tree_set_show_title(GNT_TREE(tree), TRUE); |
190 gnt_tree_set_col_width(GNT_TREE(tree), 0, 15); | |
191 gnt_tree_set_col_width(GNT_TREE(tree), 1, 25); | |
192 gnt_tree_set_col_width(GNT_TREE(tree), 2, 25); | |
193 | |
194 gnt_box_add_widget(GNT_BOX(box), tree); | |
195 | |
196 button = gnt_button_new(_("Close")); | |
197 gnt_box_add_widget(GNT_BOX(box), button); | |
198 | |
199 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), box); | |
200 g_signal_connect(G_OBJECT(box), "destroy", G_CALLBACK(reset_email_dialog), NULL); | |
201 } | |
202 | |
203 static void * | |
15823 | 204 finch_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed, |
15818 | 205 const char **subjects, const char **froms, const char **tos, |
206 const char **urls) | |
207 { | |
15823 | 208 PurpleAccount *account = purple_connection_get_account(gc); |
15818 | 209 GString *message = g_string_new(NULL); |
210 void *ret; | |
20908
9ec0382e6c8d
Fix the searchresult thingy nosnilmot fixed in pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20780
diff
changeset
|
211 static int key = 0; |
15818 | 212 |
27049
9c283917ecf7
Fix Finch not to announce "your gmail account has 0 new messages."
Paul Aurich <paul@darkrain42.org>
parents:
26732
diff
changeset
|
213 if (count == 0) |
9c283917ecf7
Fix Finch not to announce "your gmail account has 0 new messages."
Paul Aurich <paul@darkrain42.org>
parents:
26732
diff
changeset
|
214 return NULL; |
9c283917ecf7
Fix Finch not to announce "your gmail account has 0 new messages."
Paul Aurich <paul@darkrain42.org>
parents:
26732
diff
changeset
|
215 |
15818 | 216 if (!detailed) |
217 { | |
218 g_string_append_printf(message, | |
219 ngettext("%s (%s) has %d new message.", | |
220 "%s (%s) has %d new messages.", | |
221 (int)count), | |
15823 | 222 tos ? *tos : purple_account_get_username(account), |
223 purple_account_get_protocol_name(account), (int)count); | |
15818 | 224 } |
225 else | |
226 { | |
227 char *to; | |
23178
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
228 gboolean newwin = (emaildialog.window == NULL); |
15818 | 229 |
23178
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
230 if (newwin) |
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
231 setup_email_dialog(); |
15818 | 232 |
15823 | 233 to = g_strdup_printf("%s (%s)", tos ? *tos : purple_account_get_username(account), |
234 purple_account_get_protocol_name(account)); | |
20908
9ec0382e6c8d
Fix the searchresult thingy nosnilmot fixed in pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20780
diff
changeset
|
235 gnt_tree_add_row_after(GNT_TREE(emaildialog.tree), GINT_TO_POINTER(++key), |
15818 | 236 gnt_tree_create_row(GNT_TREE(emaildialog.tree), to, |
237 froms ? *froms : "[Unknown sender]", | |
238 *subjects), | |
239 NULL, NULL); | |
240 g_free(to); | |
23178
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
241 if (newwin) |
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
242 gnt_widget_show(emaildialog.window); |
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
243 else |
41171963c986
Highlight the mail window for new mails.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22819
diff
changeset
|
244 gnt_window_present(emaildialog.window); |
15818 | 245 return NULL; |
246 } | |
247 | |
15823 | 248 ret = finch_notify_message(PURPLE_NOTIFY_EMAIL, _("New Mail"), _("You have mail!"), message->str); |
15818 | 249 g_string_free(message, TRUE); |
250 return ret; | |
251 } | |
252 | |
253 static void * | |
15823 | 254 finch_notify_email(PurpleConnection *gc, const char *subject, const char *from, |
15818 | 255 const char *to, const char *url) |
256 { | |
257 return finch_notify_emails(gc, 1, subject != NULL, | |
258 subject ? &subject : NULL, | |
259 from ? &from : NULL, | |
260 to ? &to : NULL, | |
261 url ? &url : NULL); | |
262 } | |
263 | |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
264 /** User information. **/ |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
265 static GHashTable *userinfo; |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
266 |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
267 static char * |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
268 userinfo_hash(PurpleAccount *account, const char *who) |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
269 { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
270 char key[256]; |
25853
e0c8f689f60c
applied changes from aa7ce93329f5ccbe74640a92b6656ae402d8eea8
Ethan Blanton <elb@pidgin.im>
parents:
23958
diff
changeset
|
271 g_snprintf(key, sizeof(key), "%s - %s", purple_account_get_username(account), purple_normalize(account, who)); |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
272 return g_utf8_strup(key, -1); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
273 } |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
274 |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
275 static void |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
276 remove_userinfo(GntWidget *widget, gpointer key) |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
277 { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
278 g_hash_table_remove(userinfo, key); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
279 } |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
280 |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
281 static char * |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
282 purple_notify_user_info_get_xhtml(PurpleNotifyUserInfo *user_info) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
283 { |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
284 GList *l; |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
285 GString *text; |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
286 |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
287 text = g_string_new("<span>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
288 |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
289 for (l = purple_notify_user_info_get_entries(user_info); l != NULL; |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
290 l = l->next) { |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
291 PurpleNotifyUserInfoEntry *user_info_entry = l->data; |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
292 PurpleNotifyUserInfoEntryType type = purple_notify_user_info_entry_get_type(user_info_entry); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
293 const char *label = purple_notify_user_info_entry_get_label(user_info_entry); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
294 const char *value = purple_notify_user_info_entry_get_value(user_info_entry); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
295 |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
296 /* Handle the label/value pair itself */ |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
297 if (type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
298 g_string_append(text, "<u>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
299 if (label) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
300 g_string_append_printf(text, "<b>%s</b>", label); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
301 g_string_append(text, "<span>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
302 if (label && value) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
303 g_string_append(text, ": "); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
304 if (value) { |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
305 char *strip = purple_markup_strip_html(value); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
306 g_string_append(text, strip); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
307 g_free(strip); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
308 } |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
309 g_string_append(text, "</span>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
310 if (type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
311 g_string_append(text, "</u>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
312 else if (type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
313 g_string_append(text, "<HR/>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
314 g_string_append(text, "<BR/>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
315 } |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
316 g_string_append(text, "</span>"); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
317 |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
318 return g_string_free(text, FALSE); |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
319 } |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
320 |
15818 | 321 static void * |
15823 | 322 finch_notify_userinfo(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info) |
15818 | 323 { |
324 char *primary; | |
325 char *info; | |
326 void *ui_handle; | |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
327 char *key = userinfo_hash(purple_connection_get_account(gc), who); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
328 |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
329 info = purple_notify_user_info_get_xhtml(user_info); |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
330 |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
331 ui_handle = g_hash_table_lookup(userinfo, key); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
332 if (ui_handle != NULL) { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
333 GntTextView *msg = GNT_TEXT_VIEW(g_object_get_data(G_OBJECT(ui_handle), "info-widget")); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
334 char *strip = purple_markup_strip_html(info); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
335 int tvw, tvh, width, height, ntvw, ntvh; |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
336 |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17269
diff
changeset
|
337 while (GNT_WIDGET(ui_handle)->parent) |
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17269
diff
changeset
|
338 ui_handle = GNT_WIDGET(ui_handle)->parent; |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
339 gnt_widget_get_size(GNT_WIDGET(ui_handle), &width, &height); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
340 gnt_widget_get_size(GNT_WIDGET(msg), &tvw, &tvh); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
341 |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
342 gnt_text_view_clear(msg); |
23958
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
343 if (!gnt_util_parse_xhtml_to_textview(info, msg)) |
4df8161acc3b
Try to preserve HTML attributes in notification dialogs
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23178
diff
changeset
|
344 gnt_text_view_append_text_with_flags(msg, strip, GNT_TEXT_FLAG_NORMAL); |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
345 gnt_text_view_scroll(msg, 0); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
346 gnt_util_get_text_bound(strip, &ntvw, &ntvh); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
347 ntvw += 3; |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
348 ntvh++; |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
349 |
17520
464840043c66
Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17269
diff
changeset
|
350 gnt_screen_resize_widget(GNT_WIDGET(ui_handle), width + MAX(0, ntvw - tvw), height + MAX(0, ntvh - tvh)); |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
351 g_free(strip); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
352 g_free(key); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
353 } else { |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
354 primary = g_strdup_printf(_("Info for %s"), who); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
355 ui_handle = finch_notify_formatted(_("Buddy Information"), primary, NULL, info); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
356 g_hash_table_insert(userinfo, key, ui_handle); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
357 g_free(primary); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
358 g_signal_connect(G_OBJECT(ui_handle), "destroy", G_CALLBACK(remove_userinfo), key); |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
359 } |
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
360 |
15818 | 361 g_free(info); |
362 return ui_handle; | |
363 } | |
364 | |
365 static void | |
15823 | 366 notify_button_activated(GntWidget *widget, PurpleNotifySearchButton *b) |
15818 | 367 { |
368 GList *list = NULL; | |
15823 | 369 PurpleAccount *account = g_object_get_data(G_OBJECT(widget), "notify-account"); |
15818 | 370 gpointer data = g_object_get_data(G_OBJECT(widget), "notify-data"); |
371 | |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
372 list = gnt_tree_get_selection_text_list(GNT_TREE(g_object_get_data(G_OBJECT(widget), "notify-tree"))); |
15818 | 373 |
15823 | 374 b->callback(purple_account_get_connection(account), list, data); |
15818 | 375 g_list_foreach(list, (GFunc)g_free, NULL); |
376 g_list_free(list); | |
377 } | |
378 | |
379 static void | |
15823 | 380 finch_notify_sr_new_rows(PurpleConnection *gc, |
381 PurpleNotifySearchResults *results, void *data) | |
15818 | 382 { |
383 GntTree *tree = GNT_TREE(data); | |
384 GList *o; | |
385 | |
386 /* XXX: Do I need to empty the tree here? */ | |
387 | |
388 for (o = results->rows; o; o = o->next) | |
389 { | |
390 gnt_tree_add_row_after(GNT_TREE(tree), o->data, | |
391 gnt_tree_create_row_from_list(GNT_TREE(tree), o->data), | |
392 NULL, NULL); | |
393 } | |
394 } | |
395 | |
396 static void * | |
15823 | 397 finch_notify_searchresults(PurpleConnection *gc, const char *title, |
15818 | 398 const char *primary, const char *secondary, |
15823 | 399 PurpleNotifySearchResults *results, gpointer data) |
15818 | 400 { |
401 GntWidget *window, *tree, *box, *button; | |
402 GList *iter; | |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
403 int columns, i; |
15818 | 404 |
405 window = gnt_vbox_new(FALSE); | |
406 gnt_box_set_toplevel(GNT_BOX(window), TRUE); | |
407 gnt_box_set_title(GNT_BOX(window), title); | |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
408 gnt_box_set_fill(GNT_BOX(window), TRUE); |
15818 | 409 gnt_box_set_pad(GNT_BOX(window), 0); |
410 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
411 | |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
412 if (primary) |
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
413 gnt_box_add_widget(GNT_BOX(window), |
15818 | 414 gnt_label_new_with_format(primary, GNT_TEXT_FLAG_BOLD)); |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
415 if (secondary) |
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
416 gnt_box_add_widget(GNT_BOX(window), |
15818 | 417 gnt_label_new_with_format(secondary, GNT_TEXT_FLAG_NORMAL)); |
418 | |
20100
a3f07fa68e90
Access search results directly instead of going through the API because
Mark Doliner <mark@kingant.net>
parents:
20074
diff
changeset
|
419 columns = g_list_length(results->columns); |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
420 tree = gnt_tree_new_with_columns(columns); |
15818 | 421 gnt_tree_set_show_title(GNT_TREE(tree), TRUE); |
422 gnt_box_add_widget(GNT_BOX(window), tree); | |
423 | |
20100
a3f07fa68e90
Access search results directly instead of going through the API because
Mark Doliner <mark@kingant.net>
parents:
20074
diff
changeset
|
424 i = 0; |
a3f07fa68e90
Access search results directly instead of going through the API because
Mark Doliner <mark@kingant.net>
parents:
20074
diff
changeset
|
425 for (iter = results->columns; iter; iter = iter->next) |
a3f07fa68e90
Access search results directly instead of going through the API because
Mark Doliner <mark@kingant.net>
parents:
20074
diff
changeset
|
426 { |
20908
9ec0382e6c8d
Fix the searchresult thingy nosnilmot fixed in pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20780
diff
changeset
|
427 PurpleNotifySearchColumn *column = iter->data; |
9ec0382e6c8d
Fix the searchresult thingy nosnilmot fixed in pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20780
diff
changeset
|
428 gnt_tree_set_column_title(GNT_TREE(tree), i, column->title); |
20100
a3f07fa68e90
Access search results directly instead of going through the API because
Mark Doliner <mark@kingant.net>
parents:
20074
diff
changeset
|
429 i++; |
a3f07fa68e90
Access search results directly instead of going through the API because
Mark Doliner <mark@kingant.net>
parents:
20074
diff
changeset
|
430 } |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
431 |
15818 | 432 box = gnt_hbox_new(TRUE); |
433 | |
434 for (iter = results->buttons; iter; iter = iter->next) | |
435 { | |
15823 | 436 PurpleNotifySearchButton *b = iter->data; |
15818 | 437 const char *text; |
438 | |
439 switch (b->type) | |
440 { | |
15823 | 441 case PURPLE_NOTIFY_BUTTON_LABELED: |
15818 | 442 text = b->label; |
443 break; | |
15823 | 444 case PURPLE_NOTIFY_BUTTON_CONTINUE: |
15818 | 445 text = _("Continue"); |
446 break; | |
15823 | 447 case PURPLE_NOTIFY_BUTTON_ADD: |
15818 | 448 text = _("Add"); |
449 break; | |
15823 | 450 case PURPLE_NOTIFY_BUTTON_INFO: |
15818 | 451 text = _("Info"); |
452 break; | |
15823 | 453 case PURPLE_NOTIFY_BUTTON_IM: |
15818 | 454 text = _("IM"); |
455 break; | |
15823 | 456 case PURPLE_NOTIFY_BUTTON_JOIN: |
15818 | 457 text = _("Join"); |
458 break; | |
15823 | 459 case PURPLE_NOTIFY_BUTTON_INVITE: |
15818 | 460 text = _("Invite"); |
461 break; | |
462 default: | |
463 text = _("(none)"); | |
464 } | |
465 | |
466 button = gnt_button_new(text); | |
15823 | 467 g_object_set_data(G_OBJECT(button), "notify-account", purple_connection_get_account(gc)); |
15818 | 468 g_object_set_data(G_OBJECT(button), "notify-data", data); |
18347
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
469 g_object_set_data(G_OBJECT(button), "notify-tree", tree); |
a90f9a0b90c8
Update search-api to not crash. Searching for users in xmpp/oscar works now.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
470 g_signal_connect(G_OBJECT(button), "activate", |
15818 | 471 G_CALLBACK(notify_button_activated), b); |
472 | |
473 gnt_box_add_widget(GNT_BOX(box), button); | |
474 } | |
475 | |
476 gnt_box_add_widget(GNT_BOX(window), box); | |
477 | |
478 finch_notify_sr_new_rows(gc, results, tree); | |
479 | |
480 gnt_widget_show(window); | |
481 g_object_set_data(G_OBJECT(window), "notify-results", results); | |
482 | |
483 return tree; | |
484 } | |
485 | |
22819
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
486 static void * |
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
487 finch_notify_uri(const char *url) |
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
488 { |
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
489 return finch_notify_message(PURPLE_NOTIFY_URI, _("URI"), url, NULL); |
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
490 } |
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
491 |
15823 | 492 static PurpleNotifyUiOps ops = |
15818 | 493 { |
17104
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
494 finch_notify_message, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
495 finch_notify_email, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
496 finch_notify_emails, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
497 finch_notify_formatted, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
498 finch_notify_searchresults, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
499 finch_notify_sr_new_rows, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
500 finch_notify_userinfo, |
22819
a9141d049266
Show the url, instead of silently ignoring a url-open request.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
501 finch_notify_uri, |
17104
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
502 finch_close_notify, /* The rest of the notify-uiops return a GntWidget. |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
503 These widgets should be destroyed from here. */ |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
504 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
505 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
506 NULL, |
46f2f86e08e4
Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents:
16936
diff
changeset
|
507 NULL |
15818 | 508 |
509 }; | |
510 | |
15823 | 511 PurpleNotifyUiOps *finch_notify_get_ui_ops() |
15818 | 512 { |
513 return &ops; | |
514 } | |
515 | |
516 void finch_notify_init() | |
517 { | |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
518 userinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); |
15818 | 519 } |
520 | |
521 void finch_notify_uninit() | |
522 { | |
16936
9a568611fa4a
When getting information, show "Information: Retrieving..." before the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16194
diff
changeset
|
523 g_hash_table_destroy(userinfo); |
15818 | 524 } |
525 | |
526 |