diff options
author | Corentin Noël <corentin.noel@collabora.com> | 2019-04-04 15:08:17 +0200 |
---|---|---|
committer | Robert Ancell <robert.ancell@gmail.com> | 2019-04-09 14:47:49 +1200 |
commit | 66ceb790d8855dc2df754343d5eb8bbb780a3cd5 (patch) | |
tree | 52cbacdd411222cd6f42404142cf1c9af008dc76 | |
parent | cffe03b0138f6a4da04a98c48a5350ae1e8024dd (diff) | |
download | lightdm-git-66ceb790d8855dc2df754343d5eb8bbb780a3cd5.tar.gz |
Add is-blocked property to the User object
-rw-r--r-- | common/user-list.c | 32 | ||||
-rw-r--r-- | common/user-list.h | 2 | ||||
-rw-r--r-- | liblightdm-gobject/lightdm/user.h | 2 | ||||
-rw-r--r-- | liblightdm-gobject/user.c | 25 | ||||
-rw-r--r-- | liblightdm-qt/QLightDM/usersmodel.h | 3 | ||||
-rw-r--r-- | liblightdm-qt/usersmodel.cpp | 7 |
6 files changed, 69 insertions, 2 deletions
diff --git a/common/user-list.c b/common/user-list.c index 33e9a214..b3d6d9ef 100644 --- a/common/user-list.c +++ b/common/user-list.c @@ -45,6 +45,7 @@ enum USER_PROP_HAS_MESSAGES, USER_PROP_UID, USER_PROP_GID, + USER_PROP_IS_LOCKED, }; enum @@ -139,6 +140,9 @@ typedef struct /* User default session */ gchar *session; + + /* TRUE if this user is locked */ + gboolean is_locked; } CommonUserPrivate; typedef struct @@ -560,6 +564,8 @@ load_accounts_user (CommonUser *user) } else if (strcmp (name, "Uid") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_UINT64)) priv->uid = g_variant_get_uint64 (value); + else if (strcmp (name, "Locked") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)) + priv->is_locked = g_variant_get_boolean (value); } g_autoptr(GVariant) extra_result = g_dbus_connection_call_sync (priv->bus, @@ -1474,6 +1480,21 @@ common_user_get_gid (CommonUser *user) return priv->gid; } +/** + * common_user_get_is_locked: + * @user: A #CommonUser + * + * Check if a user is locked. + * + * Return value: %TRUE if the user is locked. + **/ +gboolean +common_user_get_is_locked (CommonUser *user) +{ + g_return_val_if_fail (COMMON_IS_USER (user), FALSE); + return GET_USER_PRIVATE (user)->is_locked; +} + static void common_user_init (CommonUser *user) { @@ -1546,6 +1567,9 @@ common_user_get_property (GObject *object, case USER_PROP_GID: g_value_set_uint64 (value, common_user_get_gid (self)); break; + case USER_PROP_IS_LOCKED: + g_value_set_boolean (value, common_user_get_is_locked (self)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1691,7 +1715,13 @@ common_user_class_init (CommonUserClass *klass) G_MAXUINT64, 0, G_PARAM_READWRITE)); - + g_object_class_install_property (object_class, + USER_PROP_IS_LOCKED, + g_param_spec_boolean ("is-locked", + "is-locked", + "TRUE if the user is currently locked", + FALSE, + G_PARAM_READABLE)); /** * CommonUser::changed: * @user: A #CommonUser diff --git a/common/user-list.h b/common/user-list.h index 8d16e8d0..84bc2275 100644 --- a/common/user-list.h +++ b/common/user-list.h @@ -112,6 +112,8 @@ uid_t common_user_get_uid (CommonUser *user); gid_t common_user_get_gid (CommonUser *user); +gboolean common_user_get_is_locked (CommonUser *user); + G_END_DECLS #endif /* COMMON_USER_LIST_H_ */ diff --git a/liblightdm-gobject/lightdm/user.h b/liblightdm-gobject/lightdm/user.h index 27ecfdfa..5db978f0 100644 --- a/liblightdm-gobject/lightdm/user.h +++ b/liblightdm-gobject/lightdm/user.h @@ -136,6 +136,8 @@ gboolean lightdm_user_get_has_messages (LightDMUser *user); uid_t lightdm_user_get_uid (LightDMUser *user); +gboolean lightdm_user_get_is_locked (LightDMUser *user); + G_END_DECLS #endif /* LIGHTDM_USER_H_ */ diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c index 56dc93b3..f1eedab4 100644 --- a/liblightdm-gobject/user.c +++ b/liblightdm-gobject/user.c @@ -81,6 +81,7 @@ enum USER_PROP_LOGGED_IN, USER_PROP_HAS_MESSAGES, USER_PROP_UID, + USER_PROP_IS_LOCKED, }; enum @@ -591,6 +592,21 @@ lightdm_user_get_uid (LightDMUser *user) return common_user_get_uid (GET_USER_PRIVATE (user)->common_user); } +/** + * lightdm_user_get_is_locked: + * @user: A #LightDMUser + * + * Get if the user is locked. + * + * Returns: %TRUE if the user is locked + **/ +gboolean +lightdm_user_get_is_locked (LightDMUser *user) +{ + g_return_val_if_fail (LIGHTDM_IS_USER (user), FALSE); + return common_user_get_is_locked (GET_USER_PRIVATE (user)->common_user); +} + static void lightdm_user_init (LightDMUser *user) { @@ -665,6 +681,8 @@ lightdm_user_get_property (GObject *object, case USER_PROP_UID: g_value_set_uint64 (value, lightdm_user_get_uid (self)); break; + case USER_PROP_IS_LOCKED: + g_value_set_boolean (value, lightdm_user_get_is_locked (self)); default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -789,6 +807,13 @@ lightdm_user_class_init (LightDMUserClass *klass) "User UID", 0, G_MAXUINT64, 0, G_PARAM_READABLE)); + g_object_class_install_property (object_class, + USER_PROP_IS_LOCKED, + g_param_spec_boolean ("is-locked", + "is-locked", + "TRUE if the user is currently locked", + FALSE, + G_PARAM_READABLE)); /** * LightDMUser::changed: diff --git a/liblightdm-qt/QLightDM/usersmodel.h b/liblightdm-qt/QLightDM/usersmodel.h index 9407e46e..71d56356 100644 --- a/liblightdm-qt/QLightDM/usersmodel.h +++ b/liblightdm-qt/QLightDM/usersmodel.h @@ -38,7 +38,8 @@ public: HasMessagesRole, ImagePathRole, BackgroundPathRole, - UidRole + UidRole, + IsLockedRole }; int rowCount(const QModelIndex &parent) const; diff --git a/liblightdm-qt/usersmodel.cpp b/liblightdm-qt/usersmodel.cpp index 14d8df1f..78b4dc7c 100644 --- a/liblightdm-qt/usersmodel.cpp +++ b/liblightdm-qt/usersmodel.cpp @@ -31,6 +31,7 @@ public: bool hasMessages; quint64 uid; QString displayName() const; + bool isLocked; }; QString UserItem::displayName() const { @@ -101,6 +102,7 @@ void UsersModelPrivate::loadUsers() user.isLoggedIn = lightdm_user_get_logged_in(ldmUser); user.hasMessages = lightdm_user_get_has_messages(ldmUser); user.uid = (quint64)lightdm_user_get_uid(ldmUser); + user.isLocked = lightdm_user_get_is_locked(ldmUser); users.append(user); } @@ -127,6 +129,7 @@ void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ld user.isLoggedIn = lightdm_user_get_logged_in(ldmUser); user.hasMessages = lightdm_user_get_has_messages(ldmUser); user.uid = (quint64)lightdm_user_get_uid(ldmUser); + user.isLocked = lightdm_user_get_is_locked(ldmUser); that->users.append(user); that->q_func()->endInsertRows(); @@ -150,6 +153,7 @@ void UsersModelPrivate::cb_userChanged(LightDMUserList *user_list, LightDMUser * that->users[i].isLoggedIn = lightdm_user_get_logged_in(ldmUser); that->users[i].hasMessages = lightdm_user_get_has_messages(ldmUser); that->users[i].uid = (quint64)lightdm_user_get_uid(ldmUser); + that->users[i].isLocked = lightdm_user_get_is_locked(ldmUser); QModelIndex index = that->q_ptr->createIndex(i, 0); that->q_ptr->dataChanged(index, index); @@ -192,6 +196,7 @@ UsersModel::UsersModel(QObject *parent) : roles[HasMessagesRole] = "hasMessages"; roles[ImagePathRole] = "imagePath"; roles[UidRole] = "uid"; + roles[IsLockedRole] = "isLocked"; setRoleNames(roles); d->loadUsers(); @@ -245,6 +250,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const return d->users[row].image; case UsersModel::UidRole: return d->users[row].uid; + case UsersModel::IsLockedRole: + return d->users[row].isLocked; } return QVariant(); |