libpurple/purpleauthorizationrequest.c

changeset 42841
fbb5c5cb37f4
parent 42767
8cf1d11b59c1
child 42941
d39faa3581eb
equal deleted inserted replaced
42840:18ba0f636076 42841:fbb5c5cb37f4
25 struct _PurpleAuthorizationRequest { 25 struct _PurpleAuthorizationRequest {
26 GObject parent; 26 GObject parent;
27 27
28 PurpleAccount *account; 28 PurpleAccount *account;
29 29
30 gchar *username; 30 char *username;
31 gchar *alias; 31 char *alias;
32 gchar *message; 32 char *message;
33 gboolean add; 33 gboolean add;
34 34
35 /* This tracks whether _accept or _deny have been called. */ 35 /* This tracks whether _accept or _deny have been called. */
36 gboolean handled; 36 gboolean handled;
37 }; 37 };
52 PROP_ADD, 52 PROP_ADD,
53 N_PROPERTIES, 53 N_PROPERTIES,
54 }; 54 };
55 static GParamSpec *properties[N_PROPERTIES] = {NULL, }; 55 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
56 56
57 G_DEFINE_FINAL_TYPE(PurpleAuthorizationRequest, purple_authorization_request,
58 G_TYPE_OBJECT)
59
60 /****************************************************************************** 57 /******************************************************************************
61 * Helpers 58 * Helpers
62 *****************************************************************************/ 59 *****************************************************************************/
63 static void 60 static void
64 purple_authorization_request_set_account(PurpleAuthorizationRequest *request, 61 purple_authorization_request_set_account(PurpleAuthorizationRequest *request,
72 } 69 }
73 } 70 }
74 71
75 static void 72 static void
76 purple_authorization_request_set_username(PurpleAuthorizationRequest *request, 73 purple_authorization_request_set_username(PurpleAuthorizationRequest *request,
77 const gchar *username) 74 const char *username)
78 { 75 {
79 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request)); 76 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request));
80 77
81 if(g_set_str(&request->username, username)) { 78 if(g_set_str(&request->username, username)) {
82 g_object_notify_by_pspec(G_OBJECT(request), properties[PROP_USERNAME]); 79 g_object_notify_by_pspec(G_OBJECT(request), properties[PROP_USERNAME]);
84 } 81 }
85 82
86 /****************************************************************************** 83 /******************************************************************************
87 * GObject Implementation 84 * GObject Implementation
88 *****************************************************************************/ 85 *****************************************************************************/
86 G_DEFINE_FINAL_TYPE(PurpleAuthorizationRequest, purple_authorization_request,
87 G_TYPE_OBJECT)
88
89 static void 89 static void
90 purple_authorization_request_get_property(GObject *obj, guint param_id, 90 purple_authorization_request_get_property(GObject *obj, guint param_id,
91 GValue *value, GParamSpec *pspec) 91 GValue *value, GParamSpec *pspec)
92 { 92 {
93 PurpleAuthorizationRequest *request = PURPLE_AUTHORIZATION_REQUEST(obj); 93 PurpleAuthorizationRequest *request = PURPLE_AUTHORIZATION_REQUEST(obj);
94 94
95 switch(param_id) { 95 switch(param_id) {
96 case PROP_ACCOUNT: 96 case PROP_ACCOUNT:
97 g_value_set_object(value, 97 g_value_set_object(value,
98 purple_authorization_request_get_account(request)); 98 purple_authorization_request_get_account(request));
99 break; 99 break;
100 case PROP_USERNAME: 100 case PROP_USERNAME:
101 g_value_set_string(value, 101 g_value_set_string(value,
102 purple_authorization_request_get_username(request)); 102 purple_authorization_request_get_username(request));
103 break; 103 break;
104 case PROP_ALIAS: 104 case PROP_ALIAS:
105 g_value_set_string(value, 105 g_value_set_string(value,
106 purple_authorization_request_get_alias(request)); 106 purple_authorization_request_get_alias(request));
107 break; 107 break;
108 case PROP_MESSAGE: 108 case PROP_MESSAGE:
109 g_value_set_string(value, 109 g_value_set_string(value,
110 purple_authorization_request_get_message(request)); 110 purple_authorization_request_get_message(request));
111 break; 111 break;
112 case PROP_ADD: 112 case PROP_ADD:
113 g_value_set_boolean(value, 113 g_value_set_boolean(value,
114 purple_authorization_request_get_add(request)); 114 purple_authorization_request_get_add(request));
115 break; 115 break;
116 default: 116 default:
117 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); 117 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
118 break; 118 break;
119 } 119 }
120 } 120 }
121 121
122 static void 122 static void
123 purple_authorization_request_set_property(GObject *obj, guint param_id, 123 purple_authorization_request_set_property(GObject *obj, guint param_id,
125 GParamSpec *pspec) 125 GParamSpec *pspec)
126 { 126 {
127 PurpleAuthorizationRequest *request = PURPLE_AUTHORIZATION_REQUEST(obj); 127 PurpleAuthorizationRequest *request = PURPLE_AUTHORIZATION_REQUEST(obj);
128 128
129 switch(param_id) { 129 switch(param_id) {
130 case PROP_ACCOUNT: 130 case PROP_ACCOUNT:
131 purple_authorization_request_set_account(request, 131 purple_authorization_request_set_account(request,
132 g_value_get_object(value)); 132 g_value_get_object(value));
133 break; 133 break;
134 case PROP_USERNAME: 134 case PROP_USERNAME:
135 purple_authorization_request_set_username(request, 135 purple_authorization_request_set_username(request,
136 g_value_get_string(value)); 136 g_value_get_string(value));
137 break; 137 break;
138 case PROP_ALIAS: 138 case PROP_ALIAS:
139 purple_authorization_request_set_alias(request, 139 purple_authorization_request_set_alias(request,
140 g_value_get_string(value)); 140 g_value_get_string(value));
141 break; 141 break;
142 case PROP_MESSAGE: 142 case PROP_MESSAGE:
143 purple_authorization_request_set_message(request, 143 purple_authorization_request_set_message(request,
144 g_value_get_string(value)); 144 g_value_get_string(value));
145 break; 145 break;
146 case PROP_ADD: 146 case PROP_ADD:
147 purple_authorization_request_set_add(request, 147 purple_authorization_request_set_add(request,
148 g_value_get_boolean(value)); 148 g_value_get_boolean(value));
149 break; 149 break;
150 default: 150 default:
151 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); 151 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
152 break; 152 break;
153 } 153 }
154 } 154 }
155 155
156 static void 156 static void
157 purple_authorization_request_dispose(GObject *obj) { 157 purple_authorization_request_dispose(GObject *obj) {
187 obj_class->set_property = purple_authorization_request_set_property; 187 obj_class->set_property = purple_authorization_request_set_property;
188 obj_class->dispose = purple_authorization_request_dispose; 188 obj_class->dispose = purple_authorization_request_dispose;
189 obj_class->finalize = purple_authorization_request_finalize; 189 obj_class->finalize = purple_authorization_request_finalize;
190 190
191 /** 191 /**
192 * PurpleAuthorizationRequest:account:
193 *
194 * The account that this authorization request is for.
195 *
196 * Since: 3.0
197 */
198 properties[PROP_ACCOUNT] = g_param_spec_object(
199 "account", NULL, NULL,
200 PURPLE_TYPE_ACCOUNT,
201 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
202
203 /**
204 * PurpleAuthorizationRequest:username:
205 *
206 * The username of the remote user that is requesting authorization.
207 *
208 * Since: 3.0
209 */
210 properties[PROP_USERNAME] = g_param_spec_string(
211 "username", NULL, NULL,
212 NULL,
213 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
214
215 /**
216 * PurpleAuthorizationRequest:alias:
217 *
218 * The alias of the remote user that is requesting authorization.
219 *
220 * Since: 3.0
221 */
222 properties[PROP_ALIAS] = g_param_spec_string(
223 "alias", NULL, NULL,
224 NULL,
225 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
226
227 /**
228 * PurpleAuthorizationRequest:message:
229 *
230 * The optional message sent from the remote user.
231 *
232 * Since: 3.0
233 */
234 properties[PROP_MESSAGE] = g_param_spec_string(
235 "message", NULL, NULL,
236 NULL,
237 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
238
239 /**
240 * PurpleAuthorizationRequest:add:
241 *
242 * Whether or not the user interface should ask the end user to add the
243 * remote user after accepting the end user's friend request.
244 *
245 * Since: 3.0
246 */
247 properties[PROP_ADD] = g_param_spec_boolean(
248 "add", NULL, NULL,
249 FALSE,
250 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
251
252 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
253
254 /**
192 * PurpleAuthorizationRequest::accepted: 255 * PurpleAuthorizationRequest::accepted:
193 * @request: The [class@AuthorizationRequest] instance. 256 * @request: The [class@AuthorizationRequest] instance.
194 * 257 *
195 * Emitted when the user has accepted @request. This is typically emitted 258 * Emitted when the user has accepted @request. This is typically emitted
196 * by the user interface calling [method@AuthorizationRequest.accept]. 259 * by the user interface calling [method@AuthorizationRequest.accept].
227 NULL, 290 NULL,
228 NULL, 291 NULL,
229 G_TYPE_NONE, 292 G_TYPE_NONE,
230 1, 293 1,
231 G_TYPE_STRING); 294 G_TYPE_STRING);
232
233 /**
234 * PurpleAuthorizationRequest:account:
235 *
236 * The account that this authorization request is for.
237 *
238 * Since: 3.0
239 */
240 properties[PROP_ACCOUNT] = g_param_spec_object(
241 "account", "account",
242 "The account for this authorization request",
243 PURPLE_TYPE_ACCOUNT,
244 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
245
246 /**
247 * PurpleAuthorizationRequest:username:
248 *
249 * The username of the remote user that is requesting authorization.
250 *
251 * Since: 3.0
252 */
253 properties[PROP_USERNAME] = g_param_spec_string(
254 "username", "username",
255 "The username of the remote user that is requesting authorization",
256 NULL,
257 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
258
259 /**
260 * PurpleAuthorizationRequest:alias:
261 *
262 * The alias of the remote user that is requesting authorization.
263 *
264 * Since: 3.0
265 */
266 properties[PROP_ALIAS] = g_param_spec_string(
267 "alias", "alias",
268 "The alias of the remote user that is requesting authorization",
269 NULL,
270 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
271
272 /**
273 * PurpleAuthorizationRequest:message:
274 *
275 * The optional message sent from the remote user.
276 *
277 * Since: 3.0
278 */
279 properties[PROP_MESSAGE] = g_param_spec_string(
280 "message", "message",
281 "The optional message sent by the remote user",
282 NULL,
283 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
284
285 /**
286 * PurpleAuthorizationRequest:add:
287 *
288 * Whether or not the user interface should ask the end user to add the
289 * remote user after accepting the end user's friend request.
290 *
291 * Since: 3.0
292 */
293 properties[PROP_ADD] = g_param_spec_boolean(
294 "add", "add",
295 "Whether or not to add the remote user back",
296 FALSE,
297 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
298
299 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
300 } 295 }
301 296
302 /****************************************************************************** 297 /******************************************************************************
303 * Public API 298 * Public API
304 *****************************************************************************/ 299 *****************************************************************************/
305 PurpleAuthorizationRequest * 300 PurpleAuthorizationRequest *
306 purple_authorization_request_new(PurpleAccount *account, const gchar *username) 301 purple_authorization_request_new(PurpleAccount *account, const char *username)
307 { 302 {
308 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL); 303 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
309 g_return_val_if_fail(username != NULL, NULL); 304 g_return_val_if_fail(username != NULL, NULL);
310 305
311 return g_object_new( 306 return g_object_new(
320 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL); 315 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL);
321 316
322 return request->account; 317 return request->account;
323 } 318 }
324 319
325 const gchar * 320 const char *
326 purple_authorization_request_get_username(PurpleAuthorizationRequest *request) 321 purple_authorization_request_get_username(PurpleAuthorizationRequest *request)
327 { 322 {
328 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL); 323 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL);
329 324
330 return request->username; 325 return request->username;
331 } 326 }
332 327
333 void 328 void
334 purple_authorization_request_set_alias(PurpleAuthorizationRequest *request, 329 purple_authorization_request_set_alias(PurpleAuthorizationRequest *request,
335 const gchar *alias) 330 const char *alias)
336 { 331 {
337 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request)); 332 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request));
338 333
339 if(g_set_str(&request->alias, alias)) { 334 if(g_set_str(&request->alias, alias)) {
340 g_object_notify_by_pspec(G_OBJECT(request), properties[PROP_ALIAS]); 335 g_object_notify_by_pspec(G_OBJECT(request), properties[PROP_ALIAS]);
341 } 336 }
342 } 337 }
343 338
344 const gchar * 339 const char *
345 purple_authorization_request_get_alias(PurpleAuthorizationRequest *request) { 340 purple_authorization_request_get_alias(PurpleAuthorizationRequest *request) {
346 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL); 341 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL);
347 342
348 return request->alias; 343 return request->alias;
349 } 344 }
350 345
351 void 346 void
352 purple_authorization_request_set_message(PurpleAuthorizationRequest *request, 347 purple_authorization_request_set_message(PurpleAuthorizationRequest *request,
353 const gchar *message) 348 const char *message)
354 { 349 {
355 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request)); 350 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request));
356 351
357 if(g_set_str(&request->message, message)) { 352 if(g_set_str(&request->message, message)) {
358 g_object_notify_by_pspec(G_OBJECT(request), properties[PROP_MESSAGE]); 353 g_object_notify_by_pspec(G_OBJECT(request), properties[PROP_MESSAGE]);
359 } 354 }
360 } 355 }
361 356
362 const gchar * 357 const char *
363 purple_authorization_request_get_message(PurpleAuthorizationRequest *request) { 358 purple_authorization_request_get_message(PurpleAuthorizationRequest *request) {
364 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL); 359 g_return_val_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request), NULL);
365 360
366 return request->message; 361 return request->message;
367 } 362 }
396 g_signal_emit(request, signals[SIG_ACCEPTED], 0); 391 g_signal_emit(request, signals[SIG_ACCEPTED], 0);
397 } 392 }
398 393
399 void 394 void
400 purple_authorization_request_deny(PurpleAuthorizationRequest *request, 395 purple_authorization_request_deny(PurpleAuthorizationRequest *request,
401 const gchar *message) 396 const char *message)
402 { 397 {
403 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request)); 398 g_return_if_fail(PURPLE_IS_AUTHORIZATION_REQUEST(request));
404 399
405 /* Calling this multiple times is a programming error. */ 400 /* Calling this multiple times is a programming error. */
406 g_return_if_fail(request->handled == FALSE); 401 g_return_if_fail(request->handled == FALSE);

mercurial