diff options
-rw-r--r-- | liblightdm-gobject/lightdm/user.h | 2 | ||||
-rw-r--r-- | liblightdm-gobject/user.c | 39 | ||||
-rw-r--r-- | liblightdm-qt/QLightDM/usersmodel.h | 3 | ||||
-rw-r--r-- | liblightdm-qt/usersmodel.cpp | 6 |
4 files changed, 49 insertions, 1 deletions
diff --git a/liblightdm-gobject/lightdm/user.h b/liblightdm-gobject/lightdm/user.h index a9153829..e9a5891b 100644 --- a/liblightdm-gobject/lightdm/user.h +++ b/liblightdm-gobject/lightdm/user.h @@ -93,6 +93,8 @@ const gchar *lightdm_user_get_home_directory (LightDMUser *user); const gchar *lightdm_user_get_image (LightDMUser *user); +const gchar *lightdm_user_get_background (LightDMUser *user); + const gchar *lightdm_user_get_language (LightDMUser *user); const gchar *lightdm_user_get_layout (LightDMUser *user); diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c index 0e832073..0c9025fb 100644 --- a/liblightdm-gobject/user.c +++ b/liblightdm-gobject/user.c @@ -34,6 +34,7 @@ enum USER_PROP_DISPLAY_NAME, USER_PROP_HOME_DIRECTORY, USER_PROP_IMAGE, + USER_PROP_BACKGROUND, USER_PROP_LANGUAGE, USER_PROP_LAYOUT, USER_PROP_SESSION, @@ -92,6 +93,7 @@ typedef struct gchar *real_name; gchar *home_directory; gchar *image; + gchar *background; GKeyFile *dmrc_file; gchar *language; @@ -433,6 +435,16 @@ update_user (UserAccountObject *object) else priv->image = g_strdup (icon_file); } + else if (strcmp (name, "BackgroundFile") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_STRING)) + { + gchar *background_file; + g_variant_get (value, "&s", &background_file); + g_free (priv->background); + if (strcmp (background_file, "") == 0) + priv->background = NULL; + else + priv->background = g_strdup (background_file); + } } g_variant_iter_free (iter); @@ -1081,6 +1093,21 @@ lightdm_user_get_image (LightDMUser *user) return GET_USER_PRIVATE (user)->image; } +/** + * lightdm_user_get_background: + * @user: A #LightDMUser + * + * Get the background file path for a user. + * + * Return value: The background file path for the given user or #NULL if no path + **/ +const gchar * +lightdm_user_get_background (LightDMUser *user) +{ + g_return_val_if_fail (LIGHTDM_IS_USER (user), NULL); + return GET_USER_PRIVATE (user)->background; +} + static void load_dmrc (LightDMUser *user) { @@ -1274,6 +1301,7 @@ lightdm_user_init (LightDMUser *user) priv->real_name = g_strdup (""); priv->home_directory = g_strdup (""); priv->image = g_strdup (""); + priv->background = g_strdup (""); priv->language = g_strdup (""); priv->layout = g_strdup (""); priv->session = g_strdup (""); @@ -1315,6 +1343,9 @@ lightdm_user_get_property (GObject *object, case USER_PROP_IMAGE: g_value_set_string (value, lightdm_user_get_image (self)); break; + case USER_PROP_BACKGROUND: + g_value_set_string (value, lightdm_user_get_background (self)); + break; case USER_PROP_LANGUAGE: g_value_set_string (value, lightdm_user_get_language (self)); break; @@ -1343,6 +1374,7 @@ lightdm_user_finalize (GObject *object) g_free (priv->real_name); g_free (priv->home_directory); g_free (priv->image); + g_free (priv->background); if (priv->dmrc_file) g_key_file_free (priv->dmrc_file); } @@ -1394,6 +1426,13 @@ lightdm_user_class_init (LightDMUserClass *klass) NULL, G_PARAM_READWRITE)); g_object_class_install_property (object_class, + USER_PROP_BACKGROUND, + g_param_spec_string ("background", + "background", + "User background", + NULL, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, USER_PROP_LANGUAGE, g_param_spec_string ("language", "language", diff --git a/liblightdm-qt/QLightDM/usersmodel.h b/liblightdm-qt/QLightDM/usersmodel.h index 39b94188..f6bfc444 100644 --- a/liblightdm-qt/QLightDM/usersmodel.h +++ b/liblightdm-qt/QLightDM/usersmodel.h @@ -30,7 +30,8 @@ public: enum UserModelRoles {NameRole = Qt::UserRole, RealNameRole, - LoggedInRole}; + LoggedInRole, + BackgroundRole}; int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; diff --git a/liblightdm-qt/usersmodel.cpp b/liblightdm-qt/usersmodel.cpp index dcd3b58b..63781b58 100644 --- a/liblightdm-qt/usersmodel.cpp +++ b/liblightdm-qt/usersmodel.cpp @@ -26,6 +26,7 @@ public: QString realName; QString homeDirectory; QString image; + QString background; bool isLoggedIn; QString displayName() const; }; @@ -91,6 +92,7 @@ void UsersModelPrivate::loadUsers() user.homeDirectory = QString::fromLocal8Bit(lightdm_user_get_home_directory(ldmUser)); user.realName = QString::fromLocal8Bit(lightdm_user_get_real_name(ldmUser)); user.image = QString::fromLocal8Bit(lightdm_user_get_image(ldmUser)); + user.background = QString::fromLocal8Bit(lightdm_user_get_background(ldmUser)); user.isLoggedIn = lightdm_user_get_logged_in(ldmUser); users.append(user); } @@ -116,6 +118,7 @@ void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ld user.homeDirectory = QString::fromLocal8Bit(lightdm_user_get_home_directory(ldmUser)); user.realName = QString::fromLocal8Bit(lightdm_user_get_real_name(ldmUser)); user.image = QString::fromLocal8Bit(lightdm_user_get_image(ldmUser)); + user.background = QString::fromLocal8Bit(lightdm_user_get_background(ldmUser)); user.isLoggedIn = lightdm_user_get_logged_in(ldmUser); that->users.append(user); @@ -136,6 +139,7 @@ void UsersModelPrivate::cb_userChanged(LightDMUserList *user_list, LightDMUser * that->users[i].homeDirectory = QString::fromLocal8Bit(lightdm_user_get_home_directory(ldmUser)); that->users[i].realName = QString::fromLocal8Bit(lightdm_user_get_real_name(ldmUser)); that->users[i].image = QString::fromLocal8Bit(lightdm_user_get_image(ldmUser)); + that->users[i].background = QString::fromLocal8Bit(lightdm_user_get_background(ldmUser)); that->users[i].isLoggedIn = lightdm_user_get_logged_in(ldmUser); QModelIndex index = that->q_ptr->createIndex(i, 0); @@ -209,6 +213,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const return d->users[row].realName; case UsersModel::LoggedInRole: return d->users[row].isLoggedIn; + case UsersModel::BackgroundRole: + return QPixmap(d->users[row].background); } return QVariant(); |