2 * Copyright (C) 2010 Robert Ancell.
3 * Author: Robert Ancell <robert.ancell@canonical.com>
5 * This library is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU Lesser General Public License as published by the Free
7 * Software Foundation; either version 3 of the License, or (at your option) any
8 * later version. See http://www.gnu.org/copyleft/lgpl.html the full text of the
27 struct _LdmUserPrivate
36 gboolean have_defaults;
42 G_DEFINE_TYPE (LdmUser, ldm_user, G_TYPE_OBJECT);
48 * @greeter: The greeter the user is connected to
50 * @real_name: The real name of the user
51 * @image: The image URI
52 * @logged_in: TRUE if this user is currently logged in
54 * Return value: the new #LdmUser
57 ldm_user_new (LdmGreeter *greeter, const gchar *name, const gchar *real_name, const gchar *image, gboolean logged_in)
59 return g_object_new (LDM_TYPE_USER, "greeter", greeter, "name", name, "real-name", real_name, "image", image, "logged-in", logged_in, NULL);
66 * Get the name of a user.
68 * Return value: The name of the given user
71 ldm_user_get_name (LdmUser *user)
73 return user->priv->name;
77 * ldm_user_get_real_name:
80 * Get the real name of a user.
82 * Return value: The real name of the given user (may be blank)
85 ldm_user_get_real_name (LdmUser *user)
87 return user->priv->real_name;
91 * ldm_user_get_display_name:
94 * Get the display name of a user.
96 * Return value: The display name of the given user
99 ldm_user_get_display_name (LdmUser *user)
101 if (user->priv->real_name[0] != '\0')
102 return user->priv->real_name;
104 return user->priv->name;
108 * ldm_user_get_image:
111 * Get the image URI for a user.
113 * Return value: The image URI for the given user or NULL if no URI
116 ldm_user_get_image (LdmUser *user)
118 return user->priv->image;
122 get_defaults (LdmUser *user)
124 if (user->priv->have_defaults)
127 if (ldm_greeter_get_user_defaults (user->priv->greeter, user->priv->name, &user->priv->language, &user->priv->layout, &user->priv->session))
128 user->priv->have_defaults = TRUE;
132 * ldm_user_get_language
135 * Get the language for a user.
137 * Return value: The language for the given user or NULL if using system defaults.
140 ldm_user_get_language (LdmUser *user)
143 return user->priv->language;
147 * ldm_user_get_layout
150 * Get the keyboard layout for a user.
152 * Return value: The keyboard layoyt for the given user or NULL if using system defaults.
155 ldm_user_get_layout (LdmUser *user)
158 return user->priv->layout;
162 * ldm_user_get_session
165 * Get the session for a user.
167 * Return value: The session for the given user or NULL if using system defaults.
170 ldm_user_get_session (LdmUser *user)
173 return user->priv->session;
177 * ldm_user_get_logged_in:
180 * Check if a user is logged in.
182 * Return value: TRUE if the user is currently logged in.
185 ldm_user_get_logged_in (LdmUser *user)
187 return user->priv->logged_in;
191 ldm_user_init (LdmUser *user)
193 user->priv = G_TYPE_INSTANCE_GET_PRIVATE (user, LDM_TYPE_USER, LdmUserPrivate);
197 ldm_user_set_property (GObject *object,
205 self = LDM_USER (object);
209 self->priv->greeter = g_object_ref (g_value_get_object (value));
212 self->priv->name = g_strdup (g_value_get_string (value));
215 self->priv->real_name = g_strdup (g_value_get_string (value));
218 self->priv->image = g_strdup (g_value_get_string (value));
221 self->priv->logged_in = g_value_get_boolean (value);
224 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
230 ldm_user_get_property (GObject *object,
237 self = LDM_USER (object);
241 g_value_set_string (value, ldm_user_get_name (self));
244 g_value_set_string (value, ldm_user_get_real_name (self));
246 case PROP_DISPLAY_NAME:
247 g_value_set_string (value, ldm_user_get_display_name (self));
250 g_value_set_string (value, ldm_user_get_image (self));
253 g_value_set_string (value, ldm_user_get_language (self));
256 g_value_set_string (value, ldm_user_get_layout (self));
259 g_value_set_string (value, ldm_user_get_session (self));
262 g_value_set_boolean (value, ldm_user_get_logged_in (self));
265 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
271 ldm_user_class_init (LdmUserClass *klass)
273 GObjectClass *object_class = G_OBJECT_CLASS (klass);
275 g_type_class_add_private (klass, sizeof (LdmUserPrivate));
277 object_class->set_property = ldm_user_set_property;
278 object_class->get_property = ldm_user_get_property;
280 g_object_class_install_property(object_class,
282 g_param_spec_object("greeter",
286 G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
287 g_object_class_install_property(object_class,
289 g_param_spec_string("name",
293 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
294 g_object_class_install_property(object_class,
296 g_param_spec_string("real-name",
300 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
301 g_object_class_install_property(object_class,
303 g_param_spec_string("display-name",
305 "Users display name",
308 g_object_class_install_property(object_class,
310 g_param_spec_string("image",
314 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
315 g_object_class_install_property(object_class,
317 g_param_spec_string("language",
319 "Language used by this user",
322 g_object_class_install_property(object_class,
324 g_param_spec_string("layout",
326 "Keyboard layout used by this user",
329 g_object_class_install_property(object_class,
331 g_param_spec_string("session",
333 "Session used by this user",
336 g_object_class_install_property(object_class,
338 g_param_spec_boolean("logged-in",
340 "TRUE if the user is currently in a session",
342 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));