File indexing completed on 2024-04-28 03:51:50

0001 /*
0002     SPDX-FileCopyrightText: 1999 Carsten Pfeiffer <pfeiffer@kde.org>
0003     SPDX-FileCopyrightText: 1999-2001 David Faure <faure@kde.org>
0004     SPDX-FileCopyrightText: 2005 Till Adam <adam@kde.org>
0005     SPDX-FileCopyrightText: 2014 Alex Richardson <arichardson@kde.org>
0006     SPDX-FileCopyrightText: 2018 Friedrich W. H. Kossebau <kossebau@kde.org>
0007     SPDX-FileCopyrightText: 2020 Stefan BrĂ¼ns <bruns@kde.org>
0008 
0009     SPDX-License-Identifier: LGPL-2.0-or-later
0010 */
0011 
0012 #ifndef BALOO_KIO_COMMON_USERGROUPCACHE_H_
0013 #define BALOO_KIO_COMMON_USERGROUPCACHE_H_
0014 
0015 #include <KUser>
0016 
0017 #include <QHash>
0018 #include <QString>
0019 
0020 namespace Baloo {
0021 
0022 class UserGroupCache
0023 {
0024 public:
0025     QString getUserName(const KUserId &uid) const;
0026     QString getGroupName(const KGroupId &gid) const;
0027 
0028 private:
0029     mutable QHash<KUserId, QString> mUsercache;
0030     mutable QHash<KGroupId, QString> mGroupcache;
0031 };
0032 
0033 inline QString
0034 UserGroupCache::getUserName(const KUserId &uid) const
0035 {
0036     if (Q_UNLIKELY(!uid.isValid())) {
0037         return QString();
0038     }
0039     if (!mUsercache.contains(uid)) {
0040         KUser user(uid);
0041         QString name = user.loginName();
0042         if (name.isEmpty()) {
0043             name = uid.toString();
0044         }
0045         mUsercache.insert(uid, name);
0046         return name;
0047     }
0048     return mUsercache[uid];
0049 }
0050 
0051 inline QString
0052 UserGroupCache::getGroupName(const KGroupId &gid) const
0053 {
0054     if (Q_UNLIKELY(!gid.isValid())) {
0055         return QString();
0056     }
0057     if (!mGroupcache.contains(gid)) {
0058         KUserGroup group(gid);
0059         QString name = group.name();
0060         if (name.isEmpty()) {
0061             name = gid.toString();
0062         }
0063         mGroupcache.insert(gid, name);
0064         return name;
0065     }
0066     return mGroupcache[gid];
0067 }
0068 
0069 }
0070 #endif