|
Lines 44-52
struct UserPrivate
Link Here
|
| 44 |
/* Language */ |
44 |
/* Language */ |
| 45 |
gchar *language; |
45 |
gchar *language; |
| 46 |
|
46 |
|
| 47 |
/* Locale */ |
|
|
| 48 |
gchar *locale; |
| 49 |
|
| 50 |
/* X session */ |
47 |
/* X session */ |
| 51 |
gchar *xsession; |
48 |
gchar *xsession; |
| 52 |
}; |
49 |
}; |
|
Lines 332-367
user_get_shell (User *user)
Link Here
|
| 332 |
return user->priv->shell; |
329 |
return user->priv->shell; |
| 333 |
} |
330 |
} |
| 334 |
|
331 |
|
| 335 |
const gchar * |
|
|
| 336 |
user_get_locale (User *user) |
| 337 |
{ |
| 338 |
g_return_val_if_fail (user != NULL, NULL); |
| 339 |
|
| 340 |
g_free (user->priv->locale); |
| 341 |
if (user->priv->proxy) |
| 342 |
user->priv->locale = NULL; |
| 343 |
else |
| 344 |
user->priv->locale = get_string_from_dmrc (user->priv->name, "Desktop", "Language"); |
| 345 |
|
| 346 |
/* Treat a blank locale as unset */ |
| 347 |
if (g_strcmp0 (user->priv->locale, "") == 0) |
| 348 |
{ |
| 349 |
g_free (user->priv->locale); |
| 350 |
user->priv->locale = NULL; |
| 351 |
} |
| 352 |
|
| 353 |
return user->priv->locale; |
| 354 |
} |
| 355 |
|
| 356 |
void |
332 |
void |
| 357 |
user_set_language (User *user, const gchar *language) |
333 |
user_set_language (User *user, const gchar *language) |
| 358 |
{ |
334 |
{ |
| 359 |
g_return_if_fail (user != NULL); |
335 |
g_return_if_fail (user != NULL); |
| 360 |
|
336 |
|
|
|
337 |
call_method (user->priv->proxy, "SetLanguage", g_variant_new ("(s)", language), "()", NULL); |
| 338 |
save_string_to_dmrc (user->priv->name, "Desktop", "Language", language); |
| 339 |
} |
| 340 |
|
| 341 |
const gchar * |
| 342 |
user_get_language (User *user) |
| 343 |
{ |
| 344 |
GVariant *variant, *inner; |
| 345 |
gboolean success; |
| 346 |
|
| 347 |
g_return_val_if_fail (user != NULL, NULL); |
| 348 |
|
| 349 |
g_free (user->priv->language); |
| 361 |
if (user->priv->proxy) |
350 |
if (user->priv->proxy) |
| 362 |
call_method (user->priv->proxy, "SetLanguage", g_variant_new ("(s)", language), "()", NULL); |
351 |
{ |
|
|
352 |
/* get_property () uses g_dbus_proxy_get_cached_property () which would |
| 353 |
* return the previous (cached) value of the "Language" property */ |
| 354 |
#if 0 |
| 355 |
if (get_property (user->priv->proxy, "Language", "s", &variant)) |
| 356 |
{ |
| 357 |
g_variant_get (variant, "s", &user->priv->language); |
| 358 |
g_variant_unref (variant); |
| 359 |
} |
| 360 |
else |
| 361 |
user->priv->language = NULL; |
| 362 |
#endif |
| 363 |
success = call_method (user->priv->proxy, "org.freedesktop.DBus.Properties.Get", g_variant_new ("(ss)", g_dbus_proxy_get_interface_name(user->priv->proxy), "Language"), "(v)", &variant); |
| 364 |
if (success) |
| 365 |
{ |
| 366 |
g_variant_get (variant, "(v)", &inner); |
| 367 |
user->priv->language = g_variant_dup_string (inner, NULL); |
| 368 |
g_variant_unref (inner); |
| 369 |
g_variant_unref (variant); |
| 370 |
} |
| 371 |
else |
| 372 |
user->priv->language = NULL; |
| 373 |
} |
| 363 |
else |
374 |
else |
| 364 |
save_string_to_dmrc (user->priv->name, "Desktop", "Language", language); |
375 |
user->priv->language = get_string_from_dmrc (user->priv->name, "Desktop", "Language"); |
|
|
376 |
|
| 377 |
/* Treat a blank language as unset */ |
| 378 |
if (g_strcmp0 (user->priv->language, "") == 0) |
| 379 |
{ |
| 380 |
g_free (user->priv->language); |
| 381 |
user->priv->language = NULL; |
| 382 |
} |
| 383 |
|
| 384 |
return user->priv->language; |
| 365 |
} |
385 |
} |
| 366 |
|
386 |
|
| 367 |
void |
387 |
void |
|
Lines 436-441
user_finalize (GObject *object)
Link Here
|
| 436 |
g_free (self->priv->gecos); |
456 |
g_free (self->priv->gecos); |
| 437 |
g_free (self->priv->home_directory); |
457 |
g_free (self->priv->home_directory); |
| 438 |
g_free (self->priv->shell); |
458 |
g_free (self->priv->shell); |
|
|
459 |
g_free (self->priv->language); |
| 439 |
|
460 |
|
| 440 |
G_OBJECT_CLASS (user_parent_class)->finalize (object); |
461 |
G_OBJECT_CLASS (user_parent_class)->finalize (object); |
| 441 |
} |
462 |
} |