📄 gg.c
字号:
g_free(token->data); g_free(token);}/* }}} *//* *//* static void ggp_register_user_dialog(PurpleConnection *gc) {{{ */static void ggp_register_user_dialog(PurpleConnection *gc){ PurpleAccount *account; PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; GGPInfo *info = gc->proto_data; GGPToken *token = info->token; account = purple_connection_get_account(gc); fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); field = purple_request_field_string_new("email", _("E-mail"), "", FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("password1", _("Password"), "", FALSE); purple_request_field_string_set_masked(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("password2", _("Password (retype)"), "", FALSE); purple_request_field_string_set_masked(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("token", _("Enter current token"), "", FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); /* original size: 60x24 */ field = purple_request_field_image_new("token_img", _("Current token"), token->data, token->size); purple_request_field_group_add_field(group, field); purple_request_fields(account, _("Register New Gadu-Gadu Account"), _("Register New Gadu-Gadu Account"), _("Please, fill in the following fields"), fields, _("OK"), G_CALLBACK(ggp_callback_register_account_ok), _("Cancel"), G_CALLBACK(ggp_callback_register_account_cancel), purple_connection_get_account(gc), NULL, NULL, gc);}/* }}} *//* ----- PUBLIC DIRECTORY SEARCH ---------------------------------------- *//* *//* static void ggp_callback_show_next(PurpleConnection *gc, GList *row, gpointer user_data) {{{ */static void ggp_callback_show_next(PurpleConnection *gc, GList *row, gpointer user_data){ GGPInfo *info = gc->proto_data; GGPSearchForm *form = user_data; guint32 seq; g_free(form->offset); form->offset = g_strdup(form->last_uin); ggp_search_remove(info->searches, form->seq); seq = ggp_search_start(gc, form); ggp_search_add(info->searches, seq, form);}/* }}} *//* *//* static void ggp_callback_add_buddy(PurpleConnection *gc, GList *row, gpointer user_data) {{{ */static void ggp_callback_add_buddy(PurpleConnection *gc, GList *row, gpointer user_data){ purple_blist_request_add_buddy(purple_connection_get_account(gc), g_list_nth_data(row, 0), NULL, NULL);}/* }}} *//* *//* static void ggp_callback_im(PurpleConnection *gc, GList *row, gpointer user_data) {{{ */static void ggp_callback_im(PurpleConnection *gc, GList *row, gpointer user_data){ PurpleAccount *account; PurpleConversation *conv; char *name; account = purple_connection_get_account(gc); name = g_list_nth_data(row, 0); conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name); purple_conversation_present(conv);}/* }}} *//* *//* static void ggp_callback_find_buddies(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */static void ggp_callback_find_buddies(PurpleConnection *gc, PurpleRequestFields *fields){ GGPInfo *info = gc->proto_data; GGPSearchForm *form; guint32 seq; form = ggp_search_form_new(GGP_SEARCH_TYPE_FULL); form->user_data = info; form->lastname = charset_convert( purple_request_fields_get_string(fields, "lastname"), "UTF-8", "CP1250"); form->firstname = charset_convert( purple_request_fields_get_string(fields, "firstname"), "UTF-8", "CP1250"); form->nickname = charset_convert( purple_request_fields_get_string(fields, "nickname"), "UTF-8", "CP1250"); form->city = charset_convert( purple_request_fields_get_string(fields, "city"), "UTF-8", "CP1250"); form->birthyear = charset_convert( purple_request_fields_get_string(fields, "year"), "UTF-8", "CP1250"); switch (purple_request_fields_get_choice(fields, "gender")) { case 1: form->gender = g_strdup(GG_PUBDIR50_GENDER_MALE); break; case 2: form->gender = g_strdup(GG_PUBDIR50_GENDER_FEMALE); break; default: form->gender = NULL; break; } form->active = purple_request_fields_get_bool(fields, "active") ? g_strdup(GG_PUBDIR50_ACTIVE_TRUE) : NULL; form->offset = g_strdup("0"); seq = ggp_search_start(gc, form); ggp_search_add(info->searches, seq, form);}/* }}} *//* *//* static void ggp_find_buddies(PurplePluginAction *action) {{{ */static void ggp_find_buddies(PurplePluginAction *action){ PurpleConnection *gc = (PurpleConnection *)action->context; PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); field = purple_request_field_string_new("lastname", _("Last name"), NULL, FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("firstname", _("First name"), NULL, FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("nickname", _("Nickname"), NULL, FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("city", _("City"), NULL, FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("year", _("Year of birth"), NULL, FALSE); purple_request_field_group_add_field(group, field); field = purple_request_field_choice_new("gender", _("Gender"), 0); purple_request_field_choice_add(field, _("Male or female")); purple_request_field_choice_add(field, _("Male")); purple_request_field_choice_add(field, _("Female")); purple_request_field_group_add_field(group, field); field = purple_request_field_bool_new("active", _("Only online"), FALSE); purple_request_field_group_add_field(group, field); purple_request_fields(gc, _("Find buddies"), _("Find buddies"), _("Please, enter your search criteria below"), fields, _("OK"), G_CALLBACK(ggp_callback_find_buddies), _("Cancel"), NULL, purple_connection_get_account(gc), NULL, NULL, gc);}/* }}} *//* ----- CHANGE PASSWORD ------------------------------------------------ *//* *//* static void ggp_callback_change_passwd_ok(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */static void ggp_callback_change_passwd_ok(PurpleConnection *gc, PurpleRequestFields *fields){ PurpleAccount *account; GGPInfo *info = gc->proto_data; struct gg_http *h; gchar *cur, *p1, *p2, *t; cur = charset_convert( purple_request_fields_get_string(fields, "password_cur"), "UTF-8", "CP1250"); p1 = charset_convert( purple_request_fields_get_string(fields, "password1"), "UTF-8", "CP1250"); p2 = charset_convert( purple_request_fields_get_string(fields, "password2"), "UTF-8", "CP1250"); t = charset_convert( purple_request_fields_get_string(fields, "token"), "UTF-8", "CP1250"); account = purple_connection_get_account(gc); if (cur == NULL || p1 == NULL || p2 == NULL || t == NULL || *cur == '\0' || *p1 == '\0' || *p2 == '\0' || *t == '\0') { purple_notify_error(account, NULL, _("Fill in the fields."), NULL); goto exit_err; } if (g_utf8_collate(p1, p2) != 0) { purple_notify_error(account, NULL, _("New passwords do not match."), NULL); goto exit_err; } if (g_utf8_collate(cur, purple_account_get_password(account)) != 0) { purple_notify_error(account, NULL, _("Your current password is different from the one that you specified."), NULL); goto exit_err; } purple_debug_info("gg", "Changing password\n"); /* XXX: this e-mail should be a pref... */ h = gg_change_passwd4(ggp_get_uin(account), "user@example.net", purple_account_get_password(account), p1, info->token->id, t, 0); if (h == NULL) { purple_notify_error(account, NULL, _("Unable to change password. Error occurred.\n"), NULL); goto exit_err; } purple_account_set_password(account, p1); gg_change_passwd_free(h); purple_notify_info(account, _("Change password for the Gadu-Gadu account"), _("Password was changed successfully!"), NULL);exit_err: g_free(cur); g_free(p1); g_free(p2); g_free(t); g_free(info->token->id); g_free(info->token->data); g_free(info->token);}/* }}} *//* *//* static void ggp_change_passwd_dialog(PurpleConnection *gc) {{{ */static void ggp_change_passwd_dialog(PurpleConnection *gc){ PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; GGPInfo *info = gc->proto_data; GGPToken *token = info->token; char *msg; fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); field = purple_request_field_string_new("password_cur", _("Current password"), "", FALSE); purple_request_field_string_set_masked(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("password1", _("Password"), "", FALSE); purple_request_field_string_set_masked(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("password2", _("Password (retype)"), "", FALSE); purple_request_field_string_set_masked(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("token", _("Enter current token"), "", FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); /* original size: 60x24 */ field = purple_request_field_image_new("token_img", _("Current token"), token->data, token->size); purple_request_field_group_add_field(group, field); msg = g_strdup_printf("%s %d", _("Please, enter your current password and your new password for UIN: "), ggp_get_uin(purple_connection_get_account(gc))); purple_request_fields(gc, _("Change Gadu-Gadu Password"), _("Change Gadu-Gadu Password"), msg, fields, _("OK"), G_CALLBACK(ggp_callback_change_passwd_ok), _("Cancel"), NULL, purple_connection_get_account(gc), NULL, NULL, gc); g_free(msg);}/* }}} *//* *//* static void ggp_change_passwd(PurplePluginAction *action) {{{ */static void ggp_change_passwd(PurplePluginAction *action){ PurpleConnection *gc = (PurpleConnection *)action->context; ggp_token_request(gc, ggp_change_passwd_dialog);}/* }}} *//* ----- CONFERENCES ---------------------------------------------------- *//* *//* static void ggp_callback_add_to_chat_ok(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */static void ggp_callback_add_to_chat_ok(PurpleConnection *gc, PurpleRequestFields *fields){ GGPInfo *info = gc->proto_data; PurpleRequestField *field; const GList *sel; field = purple_request_fields_get_field(fields, "name"); sel = purple_request_field_list_get_selected(field); ggp_confer_participants_add_uin(gc, sel->data, info->tmp_buddy); info->tmp_buddy = 0;}/* }}} *//* *//* static void ggp_bmenu_add_to_chat(PurpleBlistNode *node, gpointer ignored) {{{ */static void ggp_bmenu_add_to_chat(PurpleBlistNode *node, gpointer ignored){ PurpleBuddy *buddy; PurpleConnection *gc; GGPInfo *info; PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; GList *l; gchar *msg; buddy = (PurpleBuddy *)node; gc = purple_account_get_connection(purple_buddy_get_account(buddy)); info = gc->proto_data; /* TODO: It tmp_buddy != 0 then stop! */ info->tmp_buddy = ggp_str_to_uin(purple_buddy_get_name(buddy)); fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); field = purple_request_field_list_new("name", "Chat name"); for (l = info->chats; l != NULL; l = l->next) { GGPChat *chat = l->data; purple_request_field_list_add(field, g_strdup(chat->name), g_strdup(chat->name)); } purple_request_field_group_add_field(group, field); msg = g_strdup_printf(_("Select a chat for buddy: %s"), purple_buddy_get_alias(buddy)); purple_request_fields(gc, _("Add to chat..."), _("Add to chat..."), msg, fields, _("Add"), G_CALLBACK(ggp_callback_add_to_chat_ok), _("Cancel"), NULL, purple_connection_get_account(gc), NULL, NULL, gc); g_free(msg);}/* }}} *//* ----- BLOCK BUDDIES -------------------------------------------------- *//*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -