USER_PROP_LAYOUT,
USER_PROP_LAYOUTS,
USER_PROP_SESSION,
- USER_PROP_LOGGED_IN
+ USER_PROP_LOGGED_IN,
+ USER_PROP_HAS_MESSAGES
};
enum
gchar *home_directory;
gchar *image;
gchar *background;
+ gboolean has_messages;
GKeyFile *dmrc_file;
gchar *language;
priv->session = g_key_file_get_string (priv->dmrc_file, "Desktop", "Session", NULL);
}
-static gchar *
-get_string_property (GDBusProxy *proxy, const gchar *property)
+static GVariant *
+get_property (GDBusProxy *proxy, const gchar *property)
{
GVariant *answer;
- gchar *rv;
if (!proxy)
return NULL;
return NULL;
}
- if (!g_variant_is_of_type (answer, G_VARIANT_TYPE ("s")))
+ return answer;
+}
+
+static gboolean
+get_boolean_property (GDBusProxy *proxy, const gchar *property)
+{
+ GVariant *answer;
+ gboolean rv;
+
+ answer = get_property (proxy, property);
+ if (!g_variant_is_of_type (answer, G_VARIANT_TYPE_BOOLEAN))
{
g_warning ("Unexpected accounts property type for %s: %s",
property, g_variant_get_type_string (answer));
g_variant_unref (answer);
- return NULL;
+ return FALSE;
}
- g_variant_get (answer, "s", &rv);
+ rv = g_variant_get_boolean (answer);
+ g_variant_unref (answer);
+
+ return rv;
+}
+
+static gchar *
+get_string_property (GDBusProxy *proxy, const gchar *property)
+{
+ GVariant *answer;
+ gchar *rv;
+ answer = get_property (proxy, property);
+ if (!g_variant_is_of_type (answer, G_VARIANT_TYPE_STRING))
+ {
+ g_warning ("Unexpected accounts property type for %s: %s",
+ property, g_variant_get_type_string (answer));
+ g_variant_unref (answer);
+ return NULL;
+ }
+
+ rv = g_strdup (g_variant_get_string (answer, NULL));
if (strcmp (rv, "") == 0)
{
g_free (rv);
rv = NULL;
}
-
g_variant_unref (answer);
+
return rv;
}
priv->layouts = value;
}
+ priv->has_messages = get_boolean_property (account->proxy, "XHasMessages");
+
return TRUE;
}
return FALSE;
}
+/**
+ * lightdm_user_get_has_messages:
+ * @user: A #LightDMUser
+ *
+ * Check if a user has waiting messages.
+ *
+ * Return value: #TRUE if the user has waiting messages.
+ **/
+gboolean
+lightdm_user_get_has_messages (LightDMUser *user)
+{
+ g_return_val_if_fail (LIGHTDM_IS_USER (user), FALSE);
+ load_user_values (user);
+ return GET_USER_PRIVATE (user)->has_messages;
+}
+
static void
lightdm_user_init (LightDMUser *user)
{
case USER_PROP_LOGGED_IN:
g_value_set_boolean (value, lightdm_user_get_logged_in (self));
break;
+ case USER_PROP_HAS_MESSAGES:
+ g_value_set_boolean (value, lightdm_user_get_has_messages (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
"TRUE if the user is currently in a session",
FALSE,
G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ USER_PROP_LOGGED_IN,
+ g_param_spec_boolean ("has-messages",
+ "has-messages",
+ "TRUE if the user is has waiting messages",
+ FALSE,
+ G_PARAM_READWRITE));
/**
* LightDMUser::changed:
QString background;
QString session;
bool isLoggedIn;
+ bool hasMessages;
QString displayName() const;
};
user.background = QString::fromLocal8Bit(lightdm_user_get_background(ldmUser));
user.session = QString::fromLocal8Bit(lightdm_user_get_session(ldmUser));
user.isLoggedIn = lightdm_user_get_logged_in(ldmUser);
+ user.hasMessages = lightdm_user_get_has_messages(ldmUser);
users.append(user);
}
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);
+ user.hasMessages = lightdm_user_get_has_messages(ldmUser);
that->users.append(user);
that->q_func()->endInsertRows();
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);
+ that->users[i].hasMessages = lightdm_user_get_has_messages(ldmUser);
QModelIndex index = that->q_ptr->createIndex(i, 0);
that->q_ptr->dataChanged(index, index);
roles[NameRole] = "name";
roles[LoggedInRole] = "loggedIn";
roles[SessionRole] = "session";
+ roles[HasMessagesRole] = "hasMessages";
setRoleNames(roles);
d->loadUsers();
return d->users[row].isLoggedIn;
case UsersModel::BackgroundRole:
return QPixmap(d->users[row].background);
+ case UsersModel::HasMessagesRole:
+ return d->users[row].hasMessages;
}
return QVariant();