]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - liblightdm-qt/usersmodel.cpp
Revert the bogus .deps file changes and fix the clean rules
[sojka/lightdm.git] / liblightdm-qt / usersmodel.cpp
index dcd3b58b9174c9ead5cc63134c3975a9af3dd4fc..14d8df1f4484dc0e7c053cd9e4ecd1a1b7bd9ef5 100644 (file)
@@ -4,16 +4,15 @@
  *
  * 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>
 
@@ -26,7 +25,11 @@ public:
     QString realName;
     QString homeDirectory;
     QString image;
+    QString background;
+    QString session;
     bool isLoggedIn;
+    bool hasMessages;
+    quint64 uid;
     QString displayName() const;
 };
 
@@ -62,12 +65,14 @@ public:
 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()
@@ -87,23 +92,25 @@ 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)
@@ -112,11 +119,14 @@ void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ld
     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();
@@ -128,15 +138,18 @@ void UsersModelPrivate::cb_userChanged(LightDMUserList *user_list, LightDMUser *
     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);
@@ -151,14 +164,13 @@ void UsersModelPrivate::cb_userRemoved(LightDMUserList *user_list, LightDMUser *
     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;
         }
     }
@@ -169,6 +181,18 @@ UsersModel::UsersModel(QObject *parent) :
     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();
 
 }
@@ -202,17 +226,33 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const
     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