| 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 { |