summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorentin Noël <corentin.noel@collabora.com>2019-04-04 15:08:17 +0200
committerRobert Ancell <robert.ancell@gmail.com>2019-04-09 14:47:49 +1200
commit66ceb790d8855dc2df754343d5eb8bbb780a3cd5 (patch)
tree52cbacdd411222cd6f42404142cf1c9af008dc76
parentcffe03b0138f6a4da04a98c48a5350ae1e8024dd (diff)
downloadlightdm-git-66ceb790d8855dc2df754343d5eb8bbb780a3cd5.tar.gz
Add is-blocked property to the User object
-rw-r--r--common/user-list.c32
-rw-r--r--common/user-list.h2
-rw-r--r--liblightdm-gobject/lightdm/user.h2
-rw-r--r--liblightdm-gobject/user.c25
-rw-r--r--liblightdm-qt/QLightDM/usersmodel.h3
-rw-r--r--liblightdm-qt/usersmodel.cpp7
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();