Mercurial > pidgin.yaz
comparison libpurple/protocols/mxit/actions.c @ 31941:ff2a8a839dbd
Extensions to the user profile.
author | andrew.victor@mxit.com |
---|---|
date | Tue, 22 Mar 2011 21:56:30 +0000 |
parents | bcc22eeaf3fa |
children | dde6f5770cd0 |
comparison
equal
deleted
inserted
replaced
31940:df716c39f698 | 31941:ff2a8a839dbd |
---|---|
184 g_strlcpy( profile->mobilenr, name, sizeof( profile->mobilenr ) ); | 184 g_strlcpy( profile->mobilenr, name, sizeof( profile->mobilenr ) ); |
185 g_snprintf( attrib, sizeof( attrib ), "\01%s\01%i\01%s", CP_PROFILE_MOBILENR, CP_PROFILE_TYPE_UTF8, profile->mobilenr ); | 185 g_snprintf( attrib, sizeof( attrib ), "\01%s\01%i\01%s", CP_PROFILE_MOBILENR, CP_PROFILE_TYPE_UTF8, profile->mobilenr ); |
186 g_string_append( attributes, attrib ); | 186 g_string_append( attributes, attrib ); |
187 acount++; | 187 acount++; |
188 | 188 |
189 #if 0 | |
190 /* update about me */ | |
191 name = purple_request_fields_get_string( fields, "aboutme" ); | |
192 if ( !name ) | |
193 profile->aboutme[0] = '\0'; | |
194 else | |
195 g_strlcpy( profile->aboutme, name, sizeof( profile->aboutme ) ); | |
196 g_snprintf( attrib, sizeof( attrib ), "\01%s\01%i\01%s", CP_PROFILE_ABOUTME, CP_PROFILE_TYPE_UTF8, profile->aboutme ); | |
197 g_string_append( attributes, attrib ); | |
198 acount++; | |
199 | |
200 /* update where am i */ | |
201 name = purple_request_fields_get_string( fields, "whereami" ); | |
202 if ( !name) | |
203 profile->whereami[0] = '\0'; | |
204 else | |
205 g_strlcpy( profile->whereami, name, sizeof( profile->whereami ) ); | |
206 g_snprintf( attrib, sizeof( attrib ), "\01%s\01%i\01%s", CP_PROFILE_WHEREAMI, CP_PROFILE_TYPE_UTF8, profile->whereami ); | |
207 g_string_append( attributes, attrib ); | |
208 acount++; | |
209 #endif | |
210 | |
211 /* update flags */ | |
212 field = purple_request_fields_get_field( fields, "searchable" ); | |
213 if ( purple_request_field_bool_get_value( field ) ) /* is searchable -> clear not-searchable flag */ | |
214 profile->flags &= ~CP_PROF_NOT_SEARCHABLE; | |
215 else | |
216 profile->flags |= CP_PROF_NOT_SEARCHABLE; | |
217 field = purple_request_fields_get_field( fields, "suggestable" ); | |
218 if ( purple_request_field_bool_get_value( field ) ) /* is suggestable -> clear not-suggestable flag */ | |
219 profile->flags &= ~CP_PROF_NOT_SUGGESTABLE; | |
220 else | |
221 profile->flags |= CP_PROF_NOT_SUGGESTABLE; | |
222 g_snprintf( attrib, sizeof( attrib ), "\01%s\01%i\01%i", CP_PROFILE_FLAGS, CP_PROFILE_TYPE_LONG, profile->flags); | |
223 g_string_append( attributes, attrib ); | |
224 acount++; | |
225 | |
189 /* send the profile update to MXit */ | 226 /* send the profile update to MXit */ |
190 mxit_send_extprofile_update( session, session->encpwd, acount, attributes->str ); | 227 mxit_send_extprofile_update( session, session->encpwd, acount, attributes->str ); |
191 g_string_free( attributes, TRUE ); | 228 g_string_free( attributes, TRUE ); |
192 } | 229 } |
193 else { | 230 else { |
207 PurpleConnection* gc = (PurpleConnection*) action->context; | 244 PurpleConnection* gc = (PurpleConnection*) action->context; |
208 struct MXitSession* session = (struct MXitSession*) gc->proto_data; | 245 struct MXitSession* session = (struct MXitSession*) gc->proto_data; |
209 struct MXitProfile* profile = session->profile; | 246 struct MXitProfile* profile = session->profile; |
210 | 247 |
211 PurpleRequestFields* fields = NULL; | 248 PurpleRequestFields* fields = NULL; |
212 PurpleRequestFieldGroup* group = NULL; | |
213 PurpleRequestField* field = NULL; | 249 PurpleRequestField* field = NULL; |
214 | 250 |
215 purple_debug_info( MXIT_PLUGIN_ID, "mxit_cb_action_profile\n" ); | 251 purple_debug_info( MXIT_PLUGIN_ID, "mxit_cb_action_profile\n" ); |
216 | 252 |
217 /* ensure that we actually have the user's profile information */ | 253 /* ensure that we actually have the user's profile information */ |
220 mxit_popup( PURPLE_NOTIFY_MSG_WARNING, _( "Profile" ), _( "Your profile information is not yet retrieved. Please try again later." ) ); | 256 mxit_popup( PURPLE_NOTIFY_MSG_WARNING, _( "Profile" ), _( "Your profile information is not yet retrieved. Please try again later." ) ); |
221 return; | 257 return; |
222 } | 258 } |
223 | 259 |
224 fields = purple_request_fields_new(); | 260 fields = purple_request_fields_new(); |
225 group = purple_request_field_group_new( NULL ); | 261 |
226 purple_request_fields_add_group( fields, group ); | 262 /* Security information - PIN, etc */ |
227 | 263 { |
228 #if 0 | 264 PurpleRequestFieldGroup* security_group = purple_request_field_group_new( "PIN" ); |
229 /* UID (read-only) */ | 265 |
230 if ( session->uid ) { | 266 /* pin */ |
231 field = purple_request_field_string_new( "mxitid", _( "Your UID" ), session->uid, FALSE ); | 267 field = purple_request_field_string_new( "pin", _( "PIN" ), session->acc->password, FALSE ); |
232 purple_request_field_string_set_editable( field, FALSE ); | 268 purple_request_field_string_set_masked( field, TRUE ); |
233 purple_request_field_group_add_field( group, field ); | 269 purple_request_field_group_add_field( security_group, field ); |
234 } | 270 |
235 #endif | 271 field = purple_request_field_string_new( "pin2", _( "Verify PIN" ), session->acc->password, FALSE ); |
236 | 272 purple_request_field_string_set_masked( field, TRUE ); |
237 /* pin */ | 273 purple_request_field_group_add_field( security_group, field ); |
238 field = purple_request_field_string_new( "pin", _( "PIN" ), session->acc->password, FALSE ); | 274 |
239 purple_request_field_string_set_masked( field, TRUE ); | 275 purple_request_fields_add_group( fields, security_group ); |
240 purple_request_field_group_add_field( group, field ); | 276 } |
241 field = purple_request_field_string_new( "pin2", _( "Verify PIN" ), session->acc->password, FALSE ); | 277 |
242 purple_request_field_string_set_masked( field, TRUE ); | 278 /* Public information - what other users can see */ |
243 purple_request_field_group_add_field( group, field ); | 279 { |
244 | 280 PurpleRequestFieldGroup* public_group = purple_request_field_group_new( "Public information" ); |
245 /* display name */ | 281 |
246 field = purple_request_field_string_new( "name", _( "Display Name" ), profile->nickname, FALSE ); | 282 /* display name */ |
247 purple_request_field_group_add_field( group, field ); | 283 field = purple_request_field_string_new( "name", _( "Display Name" ), profile->nickname, FALSE ); |
248 | 284 purple_request_field_group_add_field( public_group, field ); |
249 /* birthday */ | 285 |
250 field = purple_request_field_string_new( "bday", _( "Birthday" ), profile->birthday, FALSE ); | 286 /* birthday */ |
251 purple_request_field_group_add_field( group, field ); | 287 field = purple_request_field_string_new( "bday", _( "Birthday" ), profile->birthday, FALSE ); |
252 if ( profile->flags & CP_PROF_DOBLOCKED ) | 288 purple_request_field_group_add_field( public_group, field ); |
253 purple_request_field_string_set_editable( field, FALSE ); | 289 if ( profile->flags & CP_PROF_DOBLOCKED ) |
254 | 290 purple_request_field_string_set_editable( field, FALSE ); |
255 /* gender */ | 291 |
256 field = purple_request_field_choice_new( "male", _( "Gender" ), ( profile->male ) ? 1 : 0 ); | 292 /* gender */ |
257 purple_request_field_choice_add( field, _( "Female" ) ); /* 0 */ | 293 field = purple_request_field_choice_new( "male", _( "Gender" ), ( profile->male ) ? 1 : 0 ); |
258 purple_request_field_choice_add( field, _( "Male" ) ); /* 1 */ | 294 purple_request_field_choice_add( field, _( "Female" ) ); /* 0 */ |
259 purple_request_field_group_add_field( group, field ); | 295 purple_request_field_choice_add( field, _( "Male" ) ); /* 1 */ |
260 | 296 purple_request_field_group_add_field( public_group, field ); |
261 /* hidden */ | 297 |
262 field = purple_request_field_bool_new( "hidden", _( "Hide my number" ), profile->hidden ); | 298 /* first name */ |
263 purple_request_field_group_add_field( group, field ); | 299 field = purple_request_field_string_new( "firstname", _( "First Name" ), profile->firstname, FALSE ); |
264 | 300 purple_request_field_group_add_field( public_group, field ); |
265 /* title */ | 301 |
266 field = purple_request_field_string_new( "title", _( "Title" ), profile->title, FALSE ); | 302 /* last name */ |
267 purple_request_field_group_add_field( group, field ); | 303 field = purple_request_field_string_new( "lastname", _( "Last Name" ), profile->lastname, FALSE ); |
268 | 304 purple_request_field_group_add_field( public_group, field ); |
269 /* first name */ | 305 |
270 field = purple_request_field_string_new( "firstname", _( "First Name" ), profile->firstname, FALSE ); | 306 /* about me */ |
271 purple_request_field_group_add_field( group, field ); | 307 field = purple_request_field_string_new( "aboutme", _( "About Me" ), profile->aboutme, FALSE); |
272 | 308 purple_request_field_group_add_field( public_group, field ); |
273 /* last name */ | 309 |
274 field = purple_request_field_string_new( "lastname", _( "Last Name" ), profile->lastname, FALSE ); | 310 /* where I live */ |
275 purple_request_field_group_add_field( group, field ); | 311 field = purple_request_field_string_new( "whereami", _( "Where I Live" ), profile->whereami, FALSE); |
276 | 312 purple_request_field_group_add_field( public_group, field ); |
277 /* email */ | 313 |
278 field = purple_request_field_string_new( "email", _( "Email" ), profile->email, FALSE ); | 314 purple_request_fields_add_group( fields, public_group ); |
279 purple_request_field_group_add_field( group, field ); | 315 } |
280 | 316 |
281 /* mobile number */ | 317 /* Private information - what only MXit can see */ |
282 field = purple_request_field_string_new( "mobilenumber", _( "Mobile Number" ), profile->mobilenr, FALSE ); | 318 { |
283 purple_request_field_group_add_field( group, field ); | 319 PurpleRequestFieldGroup* private_group = purple_request_field_group_new( "Private information" ); |
320 | |
321 /* title */ | |
322 field = purple_request_field_string_new( "title", _( "Title" ), profile->title, FALSE ); | |
323 purple_request_field_group_add_field( private_group, field ); | |
324 | |
325 /* email */ | |
326 field = purple_request_field_string_new( "email", _( "Email" ), profile->email, FALSE ); | |
327 purple_request_field_group_add_field( private_group, field ); | |
328 | |
329 /* mobile number */ | |
330 field = purple_request_field_string_new( "mobilenumber", _( "Mobile Number" ), profile->mobilenr, FALSE ); | |
331 purple_request_field_group_add_field( private_group, field ); | |
332 | |
333 /* hidden number */ | |
334 field = purple_request_field_bool_new( "hidden", _( "Hide my number" ), profile->hidden ); | |
335 purple_request_field_group_add_field( private_group, field ); | |
336 | |
337 /* is searchable */ | |
338 field = purple_request_field_bool_new( "searchable", _( "Can be searched" ), ( ( profile->flags & CP_PROF_NOT_SEARCHABLE ) == 0) ); | |
339 purple_request_field_group_add_field( private_group, field ); | |
340 | |
341 /* is suggestable */ | |
342 field = purple_request_field_bool_new( "suggestable", _( "Can be suggested" ), ( ( profile->flags & CP_PROF_NOT_SUGGESTABLE ) == 0 ) ); | |
343 purple_request_field_group_add_field( private_group, field ); | |
344 | |
345 purple_request_fields_add_group( fields, private_group ); | |
346 } | |
284 | 347 |
285 /* (reference: "libpurple/request.h") */ | 348 /* (reference: "libpurple/request.h") */ |
286 purple_request_fields( gc, _( "Profile" ), _( "Update your Profile" ), _( "Here you can update your MXit profile" ), fields, _( "Set" ), | 349 purple_request_fields( gc, _( "Profile" ), _( "Update your Profile" ), _( "Here you can update your MXit profile" ), fields, _( "Set" ), |
287 G_CALLBACK( mxit_cb_set_profile ), _( "Cancel" ), NULL, purple_connection_get_account( gc ), NULL, NULL, gc ); | 350 G_CALLBACK( mxit_cb_set_profile ), _( "Cancel" ), NULL, purple_connection_get_account( gc ), NULL, NULL, gc ); |
288 } | 351 } |
312 */ | 375 */ |
313 static void mxit_cb_action_about( PurplePluginAction* action ) | 376 static void mxit_cb_action_about( PurplePluginAction* action ) |
314 { | 377 { |
315 char version[256]; | 378 char version[256]; |
316 | 379 |
317 g_snprintf( version, sizeof( version ), | 380 g_snprintf( version, sizeof( version ), |
318 "MXit Client Protocol v%i.%i\n\n" | 381 "MXit Client Protocol v%i.%i\n\n" |
319 "Author:\nPieter Loubser\n\n" | 382 "Author:\nPieter Loubser\n\n" |
320 "Contributors:\nAndrew Victor\n\n" | 383 "Contributors:\nAndrew Victor\n\n" |
321 "Testers:\nBraeme Le Roux\n\n", | 384 "Testers:\nBraeme Le Roux\n\n", |
322 ( MXIT_CP_PROTO_VESION / 10 ), ( MXIT_CP_PROTO_VESION % 10 ) ); | 385 ( MXIT_CP_PROTO_VESION / 10 ), ( MXIT_CP_PROTO_VESION % 10 ) ); |