| 56 |
56 |
| 57 pidgin_dialogs_im_with_user(account, username); |
57 pidgin_dialogs_im_with_user(account, username); |
| 58 } |
58 } |
| 59 |
59 |
| 60 static gboolean |
60 static gboolean |
| 61 pidgin_dialogs_im_name_validator(G_GNUC_UNUSED PurpleRequestField *field, |
61 pidgin_dialogs_im_name_validator(PurpleRequestField *field, char **errmsg, |
| 62 char **errmsg, gpointer data) |
62 gpointer data) |
| 63 { |
63 { |
| 64 PurpleRequestPage *page = data; |
64 PurpleRequestFieldAccount *account_field = data; |
| 65 PurpleAccount *account; |
65 PurpleAccount *account; |
| 66 PurpleProtocol *protocol; |
66 PurpleProtocol *protocol; |
| 67 const char *username; |
67 const char *username; |
| 68 gboolean valid = FALSE; |
68 gboolean valid = FALSE; |
| 69 |
69 |
| 70 account = purple_request_page_get_account(page, "account"); |
70 account = purple_request_field_account_get_value(account_field); |
| 71 protocol = purple_account_get_protocol(account); |
71 protocol = purple_account_get_protocol(account); |
| 72 username = purple_request_page_get_string(page, "screenname"); |
72 username = purple_request_field_string_get_value(PURPLE_REQUEST_FIELD_STRING(field)); |
| 73 |
73 |
| 74 if (username) { |
74 if (username) { |
| 75 valid = purple_validate(protocol, username); |
75 valid = purple_validate(protocol, username); |
| 76 } |
76 } |
| 77 |
77 |
| 84 void |
84 void |
| 85 pidgin_dialogs_im(void) |
85 pidgin_dialogs_im(void) |
| 86 { |
86 { |
| 87 PurpleRequestPage *page; |
87 PurpleRequestPage *page; |
| 88 PurpleRequestGroup *group; |
88 PurpleRequestGroup *group; |
| 89 PurpleRequestField *field; |
89 PurpleRequestField *username_field = NULL; |
| |
90 PurpleRequestField *account_field = NULL; |
| 90 |
91 |
| 91 page = purple_request_page_new(); |
92 page = purple_request_page_new(); |
| 92 |
93 |
| 93 group = purple_request_group_new(NULL); |
94 group = purple_request_group_new(NULL); |
| 94 purple_request_page_add_group(page, group); |
95 purple_request_page_add_group(page, group); |
| 95 |
96 |
| 96 field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE); |
97 username_field = purple_request_field_string_new("screenname", _("_Name"), |
| 97 purple_request_field_set_type_hint(field, "screenname"); |
98 NULL, FALSE); |
| 98 purple_request_field_set_required(field, TRUE); |
99 purple_request_field_set_type_hint(username_field, "screenname"); |
| 99 purple_request_field_set_validator(field, pidgin_dialogs_im_name_validator, |
100 purple_request_field_set_required(username_field, TRUE); |
| 100 page, NULL); |
101 purple_request_group_add_field(group, username_field); |
| 101 purple_request_group_add_field(group, field); |
102 |
| 102 |
103 account_field = purple_request_field_account_new("account", _("_Account"), |
| 103 field = purple_request_field_account_new("account", _("_Account"), NULL); |
104 NULL); |
| 104 purple_request_field_set_type_hint(field, "account"); |
105 purple_request_field_set_type_hint(account_field, "account"); |
| 105 purple_request_field_set_visible(field, |
106 purple_request_field_set_visible(account_field, |
| 106 (purple_connections_get_all() != NULL && |
107 (purple_connections_get_all() != NULL && |
| 107 purple_connections_get_all()->next != NULL)); |
108 purple_connections_get_all()->next != NULL)); |
| 108 purple_request_field_set_required(field, TRUE); |
109 purple_request_field_set_required(account_field, TRUE); |
| 109 purple_request_group_add_field(group, field); |
110 purple_request_group_add_field(group, account_field); |
| |
111 |
| |
112 purple_request_field_set_validator(username_field, |
| |
113 pidgin_dialogs_im_name_validator, |
| |
114 account_field, NULL); |
| 110 |
115 |
| 111 purple_request_fields( |
116 purple_request_fields( |
| 112 purple_blist_get_default(), _("New Instant Message"), NULL, |
117 purple_blist_get_default(), _("New Instant Message"), NULL, |
| 113 _("Please enter the username or alias of the person " |
118 _("Please enter the username or alias of the person " |
| 114 "you would like to IM."), |
119 "you would like to IM."), |