on e1659ca help sign in
121 lines 3.3 kB history raw
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 */
19// LightDM currently is Qt4 compatible, and so doesn't define setRoleNames.
20// To use the same method of setting role name that it does, we
21// set our compatibility to Qt4 here too.
22#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(4, 0, 0)
24#include "UsersModel.h"
25#include "UsersModelPrivate.h"
26#include <QtCore/QDir>
27#include <QtCore/QString>
28#include <QtGui/QIcon>
30namespace QLightDM
33UsersModel::UsersModel(QObject *parent) :
34 QAbstractListModel(parent),
35 d_ptr(new UsersModelPrivate(this))
37 // Extend roleNames (we want to keep the "display" role)
38 QHash<int, QByteArray> roles = roleNames();
39 roles[NameRole] = "name";
40 roles[RealNameRole] = "realName";
41 roles[LoggedInRole] = "loggedIn";
42 roles[BackgroundRole] = "background";
43 roles[BackgroundPathRole] = "backgroundPath";
44 roles[SessionRole] = "session";
45 roles[HasMessagesRole] = "hasMessages";
46 roles[ImagePathRole] = "imagePath";
47 roles[UidRole] = "uid";
48 setRoleNames(roles);
51UsersModel::~UsersModel()
53 delete d_ptr;
56int UsersModel::rowCount(const QModelIndex &parent) const
58 Q_D(const UsersModel);
60 if (parent.isValid()) {
61 return 0;
62 } else { // parent is root
63 return d->entries.size();
64 }
67QVariant UsersModel::data(const QModelIndex &index, int role) const
69 Q_D(const UsersModel);
71 if (!index.isValid()) {
72 return QVariant();
73 }
75 int row = index.row();
76 switch (role) {
77 case Qt::DisplayRole:
78 return d->entries[row].real_name;
79 case Qt::DecorationRole:
80 return QIcon();
81 case UsersModel::NameRole:
82 return d->entries[row].username;
83 case UsersModel::RealNameRole:
84 return d->entries[row].real_name;
85 case UsersModel::SessionRole:
86 return d->entries[row].session;
87 case UsersModel::LoggedInRole:
88 return d->entries[row].is_active;
89 case UsersModel::BackgroundRole:
90 return QPixmap(d->entries[row].background);
91 case UsersModel::BackgroundPathRole:
92 return d->entries[row].background;
93 case UsersModel::HasMessagesRole:
94 return d->entries[row].has_messages;
95 case UsersModel::ImagePathRole:
96 return "";
97 case UsersModel::UidRole:
98 return d->entries[row].uid;
99 default:
100 return QVariant();
101 }
104QString UsersModel::mockMode() const
106 Q_D(const UsersModel);
107 return d->mockMode;
110void UsersModel::setMockMode(QString mockMode)
112 Q_D(UsersModel);
114 if (d->mockMode != mockMode) {
115 d->mockMode = mockMode;
116 Q_EMIT mockModeChanged(mockMode);
117 d->resetEntries();
118 }