pidgin/gtkdialogs.c

changeset 41106
a9588f5aef2f
parent 41086
631e6cba8635
child 41529
0e835d051f5c
equal deleted inserted replaced
41105:02c3569bc32b 41106:a9588f5aef2f
39 #include "gtkblist.h" 39 #include "gtkblist.h"
40 #include "gtkdialogs.h" 40 #include "gtkdialogs.h"
41 #include "gtkutils.h" 41 #include "gtkutils.h"
42 #include "pidgincore.h" 42 #include "pidgincore.h"
43 #include "pidgindialog.h" 43 #include "pidgindialog.h"
44 #include "pidginlog.h"
45 44
46 static GList *dialogwindows = NULL; 45 static GList *dialogwindows = NULL;
47 46
48 struct _PidginGroupMergeObject { 47 struct _PidginGroupMergeObject {
49 PurpleGroup* parent; 48 PurpleGroup* parent;
266 purple_blist_get_default(), _("Get User Info"), NULL, 265 purple_blist_get_default(), _("Get User Info"), NULL,
267 _("Please enter the username or alias of the person " 266 _("Please enter the username or alias of the person "
268 "whose info you would like to view."), 267 "whose info you would like to view."),
269 fields, _("OK"), G_CALLBACK(pidgin_dialogs_info_cb), 268 fields, _("OK"), G_CALLBACK(pidgin_dialogs_info_cb),
270 _("Cancel"), NULL, NULL, NULL); 269 _("Cancel"), NULL, NULL, NULL);
271 }
272
273 static void
274 pidgin_dialogs_log_cb(gpointer data, PurpleRequestFields *fields)
275 {
276 char *username;
277 PurpleAccount *account;
278 GSList *cur;
279
280 account = purple_request_fields_get_account(fields, "account");
281
282 username = g_strdup(purple_normalize(account,
283 purple_request_fields_get_string(fields, "screenname")));
284
285 if (username != NULL && *username != '\0' && account != NULL)
286 {
287 PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist();
288 GSList *buddies;
289
290 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
291
292 buddies = purple_blist_find_buddies(account, username);
293 for (cur = buddies; cur != NULL; cur = cur->next)
294 {
295 PurpleBlistNode *node = cur->data;
296 if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL)))
297 {
298 pidgin_log_show_contact((PurpleContact *)node->parent);
299 g_slist_free(buddies);
300 pidgin_clear_cursor(gtkblist->window);
301 g_free(username);
302 return;
303 }
304 }
305 g_slist_free(buddies);
306
307 pidgin_log_show(PURPLE_LOG_IM, username, account);
308
309 pidgin_clear_cursor(gtkblist->window);
310 }
311
312 g_free(username);
313 }
314
315 /*
316 * TODO - This needs to deal with logs of all types, not just IM logs.
317 */
318 void
319 pidgin_dialogs_log(void)
320 {
321 PurpleRequestFields *fields;
322 PurpleRequestFieldGroup *group;
323 PurpleRequestField *field;
324
325 fields = purple_request_fields_new();
326
327 group = purple_request_field_group_new(NULL);
328 purple_request_fields_add_group(fields, group);
329
330 field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE);
331 purple_request_field_set_type_hint(field, "screenname-all");
332 purple_request_field_set_required(field, TRUE);
333 purple_request_field_group_add_field(group, field);
334
335 field = purple_request_field_account_new("account", _("_Account"), NULL);
336
337 /* purple_request_field_account_new() only sets a default value if you're
338 * connected, and it sets it from the list of connected accounts. Since
339 * we're going to set show_all here, it makes sense to use the first
340 * account, not the first connected account. */
341 if (purple_accounts_get_all() != NULL) {
342 purple_request_field_account_set_default_value(field, purple_accounts_get_all()->data);
343 purple_request_field_account_set_value(field, purple_accounts_get_all()->data);
344 }
345
346 purple_request_field_set_type_hint(field, "account");
347 purple_request_field_account_set_show_all(field, TRUE);
348 purple_request_field_set_visible(field,
349 (purple_accounts_get_all() != NULL &&
350 purple_accounts_get_all()->next != NULL));
351 purple_request_field_set_required(field, TRUE);
352 purple_request_field_group_add_field(group, field);
353
354 purple_request_fields(
355 purple_blist_get_default(), _("View User Log"), NULL,
356 _("Please enter the username or alias of the person "
357 "whose log you would like to view."),
358 fields, _("OK"), G_CALLBACK(pidgin_dialogs_log_cb), _("Cancel"),
359 NULL, NULL, NULL);
360 } 270 }
361 271
362 static void 272 static void
363 pidgin_dialogs_alias_buddy_cb(PurpleBuddy *buddy, const char *new_alias) 273 pidgin_dialogs_alias_buddy_cb(PurpleBuddy *buddy, const char *new_alias)
364 { 274 {

mercurial