summaryrefslogtreecommitdiff
path: root/src/libaccountsservice/act-user.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libaccountsservice/act-user.c')
-rw-r--r--src/libaccountsservice/act-user.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libaccountsservice/act-user.c b/src/libaccountsservice/act-user.c
index 13d82e7..33d15a8 100644
--- a/src/libaccountsservice/act-user.c
+++ b/src/libaccountsservice/act-user.c
@@ -57,6 +57,7 @@ enum {
PROP_SYSTEM_ACCOUNT,
PROP_LOCAL_ACCOUNT,
PROP_LOGIN_FREQUENCY,
+ PROP_LOGIN_TIME,
PROP_ICON_FILE,
PROP_LANGUAGE,
PROP_X_SESSION,
@@ -91,6 +92,7 @@ struct _ActUser {
char *x_session;
GList *sessions;
int login_frequency;
+ gint64 login_time;
ActUserAccountType account_type;
ActUserPasswordMode password_mode;
@@ -206,6 +208,9 @@ act_user_get_property (GObject *object,
case PROP_LOGIN_FREQUENCY:
g_value_set_int (value, user->login_frequency);
break;
+ case PROP_LOGIN_TIME:
+ g_value_set_int64 (value, user->login_time);
+ break;
case PROP_SHELL:
g_value_set_string (value, user->shell);
break;
@@ -343,6 +348,15 @@ act_user_class_init (ActUserClass *class)
0,
G_PARAM_READABLE));
g_object_class_install_property (gobject_class,
+ PROP_LOGIN_TIME,
+ g_param_spec_int64 ("login-time",
+ "Login time",
+ "The last login time for this user.",
+ 0,
+ G_MAXINT64,
+ 0,
+ G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class,
PROP_ICON_FILE,
g_param_spec_string ("icon-file",
"Icon File",
@@ -676,6 +690,21 @@ act_user_get_login_frequency (ActUser *user)
return user->login_frequency;
}
+/**
+ * act_user_get_login_time:
+ * @user: a #ActUser
+ *
+ * Returns the last login time for @user.
+ *
+ * Returns: (transfer none): the login time
+ */
+gint64
+act_user_get_login_time (ActUser *user) {
+ g_return_val_if_fail (ACT_IS_USER (user), 0);
+
+ return user->login_time;
+}
+
int
act_user_collate (ActUser *user1,
ActUser *user2)
@@ -1036,6 +1065,13 @@ collect_props (const gchar *key,
user->login_frequency = new_login_frequency;
g_object_notify (G_OBJECT (user), "login-frequency");
}
+ } else if (strcmp (key, "LoginTime") == 0) {
+ gint64 new_login_time = value;
+
+ if (user->login_time != new_login_time) {
+ user->login_time = new_login_time;
+ g_object_notify (G_OBJECT (user), "login-time");
+ }
} else if (strcmp (key, "IconFile") == 0) {
const char *new_icon_file;