summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2014-05-13 08:26:28 +1200
committerRobert Ancell <robert.ancell@canonical.com>2014-05-13 08:26:28 +1200
commit4e39fc51f0ca513b6c4c05ed84395fdb701830d6 (patch)
tree98efa61da9a88292ec00b9b819bfc8acc0f93d24
parent9c4a54f96ed8119831920afc7823989deb8dda81 (diff)
parentb7edc8049afdcfbb6dd5bf3bc3d3bdd82606f1fa (diff)
downloadlightdm-4e39fc51f0ca513b6c4c05ed84395fdb701830d6.tar.gz
Add bindings for uid
-rw-r--r--debian/liblightdm-gobject-1-0.symbols1
-rw-r--r--liblightdm-gobject/lightdm/user.h2
-rw-r--r--liblightdm-gobject/user.c30
-rw-r--r--liblightdm-qt/QLightDM/usersmodel.h3
-rw-r--r--liblightdm-qt/usersmodel.cpp11
5 files changed, 41 insertions, 6 deletions
diff --git a/debian/liblightdm-gobject-1-0.symbols b/debian/liblightdm-gobject-1-0.symbols
index 8baa6ca5..83321caf 100644
--- a/debian/liblightdm-gobject-1-0.symbols
+++ b/debian/liblightdm-gobject-1-0.symbols
@@ -78,6 +78,7 @@ liblightdm-gobject-1.so.0 liblightdm-gobject-1-0 #MINVER#
lightdm_user_get_real_name@Base 0.9.2
lightdm_user_get_session@Base 0.9.2
lightdm_user_get_type@Base 0.9.2
+ lightdm_user_get_uid@Base 1.11.1
lightdm_user_list_get_instance@Base 0.9.2
lightdm_user_list_get_length@Base 0.9.2
lightdm_user_list_get_type@Base 0.9.2
diff --git a/liblightdm-gobject/lightdm/user.h b/liblightdm-gobject/lightdm/user.h
index b43fc516..f955ab29 100644
--- a/liblightdm-gobject/lightdm/user.h
+++ b/liblightdm-gobject/lightdm/user.h
@@ -106,6 +106,8 @@ gboolean lightdm_user_get_logged_in (LightDMUser *user);
gboolean lightdm_user_get_has_messages (LightDMUser *user);
+uid_t lightdm_user_get_uid (LightDMUser *user);
+
G_END_DECLS
#endif /* LIGHTDM_USER_H_ */
diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c
index 4fb5f044..7d54b6d2 100644
--- a/liblightdm-gobject/user.c
+++ b/liblightdm-gobject/user.c
@@ -38,7 +38,8 @@ enum
USER_PROP_LAYOUTS,
USER_PROP_SESSION,
USER_PROP_LOGGED_IN,
- USER_PROP_HAS_MESSAGES
+ USER_PROP_HAS_MESSAGES,
+ USER_PROP_UID,
};
enum
@@ -526,6 +527,21 @@ lightdm_user_get_has_messages (LightDMUser *user)
return common_user_get_has_messages (GET_USER_PRIVATE (user)->common_user);
}
+/**
+ * lightdm_user_get_uid:
+ * @user: A #LightDMUser
+ *
+ * Get the uid of a user.
+ *
+ * Return value: The uid of the given user
+ **/
+uid_t
+lightdm_user_get_uid (LightDMUser *user)
+{
+ g_return_val_if_fail (LIGHTDM_IS_USER (user), NULL);
+ return common_user_get_uid (GET_USER_PRIVATE (user)->common_user);
+}
+
static void
lightdm_user_init (LightDMUser *user)
{
@@ -599,6 +615,9 @@ lightdm_user_get_property (GObject *object,
case USER_PROP_HAS_MESSAGES:
g_value_set_boolean (value, lightdm_user_get_has_messages (self));
break;
+ case USER_PROP_UID:
+ g_value_set_uint64 (value, lightdm_user_get_uid (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -620,7 +639,7 @@ static void
lightdm_user_class_init (LightDMUserClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
+
g_type_class_add_private (klass, sizeof (LightDMUserPrivate));
object_class->set_property = lightdm_user_set_property;
@@ -718,6 +737,13 @@ lightdm_user_class_init (LightDMUserClass *klass)
"TRUE if the user is has waiting messages",
FALSE,
G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ USER_PROP_UID,
+ g_param_spec_string ("uid",
+ "uid",
+ "User UID",
+ NULL,
+ G_PARAM_READABLE));
/**
* LightDMUser::changed:
diff --git a/liblightdm-qt/QLightDM/usersmodel.h b/liblightdm-qt/QLightDM/usersmodel.h
index d803c41c..9407e46e 100644
--- a/liblightdm-qt/QLightDM/usersmodel.h
+++ b/liblightdm-qt/QLightDM/usersmodel.h
@@ -37,7 +37,8 @@ public:
SessionRole,
HasMessagesRole,
ImagePathRole,
- BackgroundPathRole
+ BackgroundPathRole,
+ UidRole
};
int rowCount(const QModelIndex &parent) const;
diff --git a/liblightdm-qt/usersmodel.cpp b/liblightdm-qt/usersmodel.cpp
index f45a79e2..558cd329 100644
--- a/liblightdm-qt/usersmodel.cpp
+++ b/liblightdm-qt/usersmodel.cpp
@@ -29,6 +29,7 @@ public:
QString session;
bool isLoggedIn;
bool hasMessages;
+ quint64 uid;
QString displayName() const;
};
@@ -66,7 +67,7 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent) :
{
#if !defined(GLIB_VERSION_2_36)
g_type_init();
-#endif
+#endif
}
UsersModelPrivate::~UsersModelPrivate()
@@ -99,6 +100,7 @@ void UsersModelPrivate::loadUsers()
user.session = QString::fromUtf8(lightdm_user_get_session(ldmUser));
user.isLoggedIn = lightdm_user_get_logged_in(ldmUser);
user.hasMessages = lightdm_user_get_has_messages(ldmUser);
+ user.uid = (quint64)lightdm_user_get_uid(ldmUser);
users.append(user);
}
@@ -109,8 +111,6 @@ void UsersModelPrivate::loadUsers()
g_signal_connect(lightdm_user_list_get_instance(), "user-removed", G_CALLBACK (cb_userRemoved), this);
}
-
-
void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ldmUser, gpointer data)
{
Q_UNUSED(user_list)
@@ -126,6 +126,7 @@ void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ld
user.background = QString::fromUtf8(lightdm_user_get_background(ldmUser));
user.isLoggedIn = lightdm_user_get_logged_in(ldmUser);
user.hasMessages = lightdm_user_get_has_messages(ldmUser);
+ user.uid = (quint64)lightdm_user_get_uid(ldmUser);
that->users.append(user);
that->q_func()->endInsertRows();
@@ -148,6 +149,7 @@ void UsersModelPrivate::cb_userChanged(LightDMUserList *user_list, LightDMUser *
that->users[i].background = QString::fromUtf8(lightdm_user_get_background(ldmUser));
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);
QModelIndex index = that->q_ptr->createIndex(i, 0);
that->q_ptr->dataChanged(index, index);
@@ -189,6 +191,7 @@ UsersModel::UsersModel(QObject *parent) :
roles[SessionRole] = "session";
roles[HasMessagesRole] = "hasMessages";
roles[ImagePathRole] = "imagePath";
+ roles[UidRole] = "uid";
setRoleNames(roles);
d->loadUsers();
@@ -240,6 +243,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const
return d->users[row].hasMessages;
case UsersModel::ImagePathRole:
return d->users[row].image;
+ case UsersModel::UidRole:
+ return d->users[row].uid;
}
return QVariant();