File indexing completed on 2024-04-14 05:29:59
0001 /* 0002 SPDX-FileCopyrightText: 2013 Reza Fatahilah Shah <rshah0385@kireihana.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "usersmodel.h" 0007 0008 #include <KLocalizedString> 0009 #include <KUser> 0010 0011 UsersModel::UsersModel(QObject *parent) 0012 : QAbstractListModel(parent) 0013 { 0014 populate(); 0015 } 0016 0017 UsersModel::~UsersModel() 0018 { 0019 } 0020 0021 int UsersModel::rowCount(const QModelIndex &parent) const 0022 { 0023 Q_UNUSED(parent) 0024 0025 return mUserList.size(); 0026 } 0027 0028 QVariant UsersModel::data(const QModelIndex &index, int role) const 0029 { 0030 auto row = index.row(); 0031 if (row < 0 || row >= mUserList.count()) { 0032 return QVariant(); 0033 } 0034 const KUser &user = mUserList[row]; 0035 0036 switch (role) { 0037 case Qt::DisplayRole: 0038 return user.loginName(); 0039 case UidRole: 0040 return user.userId().nativeId(); 0041 } 0042 0043 return QVariant(); 0044 } 0045 0046 void UsersModel::add(const KUser &user) 0047 { 0048 beginInsertRows(QModelIndex(), mUserList.count(), mUserList.count()); 0049 0050 mUserList.append(KUser(user)); 0051 0052 endInsertRows(); 0053 } 0054 0055 void UsersModel::populate() 0056 { 0057 mUserList.clear(); 0058 0059 QList<KUser> userList = KUser::allUsers(); 0060 0061 KUser user; 0062 0063 foreach (user, userList) { 0064 K_UID uuid = user.userId().nativeId(); 0065 0066 // invalid user 0067 if (uuid == (uid_t)-1) { 0068 continue; 0069 } 0070 0071 add(user); 0072 /*qDebug() << user.loginName() << ",uid" << uuid; 0073 qDebug() << " home:" << user.homeDir(); 0074 qDebug() << " isSuperUser:" << user.isSuperUser() << ",isValid:" << user.isValid(); 0075 qDebug() << " faceIconPath:" << user.faceIconPath();*/ 0076 } 0077 } 0078 0079 int UsersModel::indexOf(const QString &user) 0080 { 0081 if (user.isEmpty()) { 0082 return 0; 0083 } 0084 // find user index 0085 for (int i = 0; i < mUserList.size(); ++i) { 0086 if (mUserList.at(i).loginName() == user) { 0087 return i; 0088 } 0089 } 0090 // user not found 0091 return 0; 0092 }