*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 3 of the License, or (at your option) any
- * later version. See http://www.gnu.org/copyleft/lgpl.html the full text of the
- * license.
+ * Software Foundation; either version 2 or version 3 of the License.
+ * See http://www.gnu.org/copyleft/lgpl.html the full text of the license.
*/
#include "QLightDM/usersmodel.h"
#include <QtCore/QString>
#include <QtCore/QDebug>
-#include <QtGui/QPixmap>
+#include <QtGui/QIcon>
#include <lightdm.h>
QString realName;
QString homeDirectory;
QString image;
+ QString background;
+ QString session;
bool isLoggedIn;
+ bool hasMessages;
+ quint64 uid;
QString displayName() const;
};
UsersModelPrivate::UsersModelPrivate(UsersModel* parent) :
q_ptr(parent)
{
+#if !defined(GLIB_VERSION_2_36)
g_type_init();
+#endif
}
UsersModelPrivate::~UsersModelPrivate()
{
- g_signal_handlers_disconnect_by_func(lightdm_user_list_get_instance(), NULL, this);
+ g_signal_handlers_disconnect_by_data(lightdm_user_list_get_instance(), this);
}
void UsersModelPrivate::loadUsers()
LightDMUser *ldmUser = static_cast<LightDMUser*>(item->data);
UserItem user;
- user.name = QString::fromLocal8Bit(lightdm_user_get_name(ldmUser));
- user.homeDirectory = QString::fromLocal8Bit(lightdm_user_get_home_directory(ldmUser));
- user.realName = QString::fromLocal8Bit(lightdm_user_get_real_name(ldmUser));
- user.image = QString::fromLocal8Bit(lightdm_user_get_image(ldmUser));
+ user.name = QString::fromUtf8(lightdm_user_get_name(ldmUser));
+ user.homeDirectory = QString::fromUtf8(lightdm_user_get_home_directory(ldmUser));
+ user.realName = QString::fromUtf8(lightdm_user_get_real_name(ldmUser));
+ user.image = QString::fromUtf8(lightdm_user_get_image(ldmUser));
+ user.background = QString::fromUtf8(lightdm_user_get_background(ldmUser));
+ 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);
}
q->endInsertRows();
}
- g_signal_connect(lightdm_user_list_get_instance(), "user-added", G_CALLBACK (cb_userAdded), this);
- g_signal_connect(lightdm_user_list_get_instance(), "user-changed", G_CALLBACK (cb_userChanged), this);
- g_signal_connect(lightdm_user_list_get_instance(), "user-removed", G_CALLBACK (cb_userRemoved), this);
+ g_signal_connect(lightdm_user_list_get_instance(), LIGHTDM_USER_LIST_SIGNAL_USER_ADDED, G_CALLBACK (cb_userAdded), this);
+ g_signal_connect(lightdm_user_list_get_instance(), LIGHTDM_USER_LIST_SIGNAL_USER_CHANGED, G_CALLBACK (cb_userChanged), this);
+ g_signal_connect(lightdm_user_list_get_instance(), LIGHTDM_USER_LIST_SIGNAL_USER_REMOVED, G_CALLBACK (cb_userRemoved), this);
}
-
-
void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ldmUser, gpointer data)
{
Q_UNUSED(user_list)
that->q_func()->beginInsertRows(QModelIndex(), that->users.size(), that->users.size());
UserItem user;
- user.name = QString::fromLocal8Bit(lightdm_user_get_name(ldmUser));
- user.homeDirectory = QString::fromLocal8Bit(lightdm_user_get_home_directory(ldmUser));
- user.realName = QString::fromLocal8Bit(lightdm_user_get_real_name(ldmUser));
- user.image = QString::fromLocal8Bit(lightdm_user_get_image(ldmUser));
+ user.name = QString::fromUtf8(lightdm_user_get_name(ldmUser));
+ user.homeDirectory = QString::fromUtf8(lightdm_user_get_home_directory(ldmUser));
+ user.realName = QString::fromUtf8(lightdm_user_get_real_name(ldmUser));
+ user.image = QString::fromUtf8(lightdm_user_get_image(ldmUser));
+ 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();
Q_UNUSED(user_list)
UsersModelPrivate *that = static_cast<UsersModelPrivate*>(data);
- QString userToChange = QString::fromLocal8Bit(lightdm_user_get_name(ldmUser));
+ QString userToChange = QString::fromUtf8(lightdm_user_get_name(ldmUser));
for (int i=0;i<that->users.size();i++) {
if (that->users[i].name == userToChange) {
- that->users[i].homeDirectory = QString::fromLocal8Bit(lightdm_user_get_home_directory(ldmUser));
- that->users[i].realName = QString::fromLocal8Bit(lightdm_user_get_real_name(ldmUser));
- that->users[i].image = QString::fromLocal8Bit(lightdm_user_get_image(ldmUser));
+ that->users[i].homeDirectory = QString::fromUtf8(lightdm_user_get_home_directory(ldmUser));
+ that->users[i].realName = QString::fromUtf8(lightdm_user_get_real_name(ldmUser));
+ that->users[i].image = QString::fromUtf8(lightdm_user_get_image(ldmUser));
+ 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);
Q_UNUSED(user_list)
UsersModelPrivate *that = static_cast<UsersModelPrivate*>(data);
- QString userToRemove = QString::fromLocal8Bit(lightdm_user_get_name(ldmUser));
+ QString userToRemove = QString::fromUtf8(lightdm_user_get_name(ldmUser));
- QList<UserItem>::iterator i;
for (int i=0;i<that->users.size();i++) {
if (that->users[i].name == userToRemove) {
that->q_ptr->beginRemoveRows(QModelIndex(), i, i);
that->users.removeAt(i);
- that->q_ptr->endMoveRows();
+ that->q_ptr->endRemoveRows();
break;
}
}
d_ptr(new UsersModelPrivate(this))
{
Q_D(UsersModel);
+ // Extend roleNames (we want to keep the "display" role)
+ QHash<int, QByteArray> roles = roleNames();
+ roles[NameRole] = "name";
+ roles[RealNameRole] = "realName";
+ roles[LoggedInRole] = "loggedIn";
+ roles[BackgroundRole] = "background";
+ roles[BackgroundPathRole] = "backgroundPath";
+ roles[SessionRole] = "session";
+ roles[HasMessagesRole] = "hasMessages";
+ roles[ImagePathRole] = "imagePath";
+ roles[UidRole] = "uid";
+ setRoleNames(roles);
d->loadUsers();
}
case Qt::DisplayRole:
return d->users[row].displayName();
case Qt::DecorationRole:
- return QPixmap(d->users[row].image);
+ return QIcon(d->users[row].image);
case UsersModel::NameRole:
return d->users[row].name;
case UsersModel::RealNameRole:
return d->users[row].realName;
+ case UsersModel::SessionRole:
+ return d->users[row].session;
case UsersModel::LoggedInRole:
return d->users[row].isLoggedIn;
+ case UsersModel::BackgroundRole:
+ return QPixmap(d->users[row].background);
+ case UsersModel::BackgroundPathRole:
+ return d->users[row].background;
+ case UsersModel::HasMessagesRole:
+ return d->users[row].hasMessages;
+ case UsersModel::ImagePathRole:
+ return d->users[row].image;
+ case UsersModel::UidRole:
+ return d->users[row].uid;
}
return QVariant();
}
-#include "usersmodel_moc.cpp"
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+#include "usersmodel_moc5.cpp"
+#else
+#include "usersmodel_moc4.cpp"
+#endif