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 ) );