Lomiri
Loading...
Searching...
No Matches
UsersModel.cpp
1/*
2 * Copyright (C) 2013-2016 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Author: Michael Terry <michael.terry@canonical.com>
17 */
18
19
20/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21 * CHANGES MADE HERE MUST BE REFLECTED ON THE MOCK LIB
22 * COUNTERPART IN tests/mocks/Lightdm/liblightdm
23 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
24
25// LightDM currently is Qt4 compatible, and so doesn't define setRoleNames.
26// To use the same method of setting role name that it does, we
27// set our compatibility to Qt4 here too.
28#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(4, 0, 0)
29
30#include "UsersModel.h"
31#include "UsersModelPrivate.h"
32#include <QtCore/QDir>
33#include <QtCore/QString>
34#include <QtGui/QIcon>
35
36namespace QLightDM
37{
38
39UsersModel::UsersModel(QObject *parent) :
40 QAbstractListModel(parent),
41 d_ptr(new UsersModelPrivate(this))
42{
43 Q_D(UsersModel);
44
45 // Extend roleNames (we want to keep the "display" role)
46 d->m_roles = QAbstractListModel::roleNames();
47 d->m_roles[NameRole] = "name";
48 d->m_roles[RealNameRole] = "realName";
49 d->m_roles[LoggedInRole] = "loggedIn";
50 d->m_roles[BackgroundRole] = "background";
51 d->m_roles[BackgroundPathRole] = "backgroundPath";
52 d->m_roles[SessionRole] = "session";
53 d->m_roles[HasMessagesRole] = "hasMessages";
54 d->m_roles[ImagePathRole] = "imagePath";
55 d->m_roles[UidRole] = "uid";
56
57 connect(d_ptr, &UsersModelPrivate::dataChanged, this, [this](int i) {
58 QModelIndex index = createIndex(i, 0);
59 Q_EMIT dataChanged(index, index);
60 });
61}
62
63QHash<int, QByteArray> UsersModel::roleNames() const
64{
65 Q_D(const UsersModel);
66
67 return d->m_roles;
68}
69
70int UsersModel::rowCount(const QModelIndex &parent) const
71{
72 Q_D(const UsersModel);
73
74 if (parent.isValid()) {
75 return 0;
76 } else { // parent is root
77 return d->entries.size();
78 }
79}
80
81QVariant UsersModel::data(const QModelIndex &index, int role) const
82{
83 Q_D(const UsersModel);
84
85 if (!index.isValid()) {
86 return QVariant();
87 }
88
89 int row = index.row();
90 switch (role) {
91 case Qt::DisplayRole:
92 return d->entries[row].real_name;
93 case Qt::DecorationRole:
94 return QIcon();
95 case UsersModel::NameRole:
96 return d->entries[row].username;
97 case UsersModel::RealNameRole:
98 return d->entries[row].real_name;
99 case UsersModel::SessionRole:
100 return d->entries[row].session;
101 case UsersModel::LoggedInRole:
102 return d->entries[row].is_active;
103 case UsersModel::BackgroundRole:
104 return QPixmap(d->entries[row].background);
105 case UsersModel::BackgroundPathRole:
106 return d->entries[row].background;
107 case UsersModel::HasMessagesRole:
108 return d->entries[row].has_messages;
109 case UsersModel::ImagePathRole:
110 return "";
111 case UsersModel::UidRole:
112 return d->entries[row].uid;
113 default:
114 return QVariant();
115 }
116}
117
118}