File indexing completed on 2024-05-26 05:19:00
0001 /* 0002 SPDX-FileCopyrightText: 2014 Sandro Knauß <knauss@kolabsys.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "utils.h" 0008 #include "identitymanager.h" 0009 0010 #include <QObject> 0011 0012 using namespace KIdentityManagementCore; 0013 0014 class IdendentitiesCache : public QObject 0015 { 0016 Q_OBJECT 0017 public: 0018 explicit IdendentitiesCache(QObject *parent = nullptr) 0019 : QObject(parent) 0020 , mIdentityManager(/*ro=*/true) 0021 { 0022 connect(&mIdentityManager, &IdentityManager::identitiesWereChanged, this, &IdendentitiesCache::slotIdentitiesChanged); 0023 slotIdentitiesChanged(); 0024 } 0025 0026 [[nodiscard]] const QSet<QString> &emails() const 0027 { 0028 return mEmails; 0029 } 0030 0031 private: 0032 void slotIdentitiesChanged() 0033 { 0034 mEmails.clear(); 0035 const QStringList lst = mIdentityManager.allEmails(); 0036 mEmails.reserve(lst.count()); 0037 for (const QString &email : lst) { 0038 mEmails.insert(email.toLower()); 0039 } 0040 } 0041 0042 IdentityManager mIdentityManager; 0043 QSet<QString> mEmails; 0044 }; 0045 0046 Q_GLOBAL_STATIC(IdendentitiesCache, sIdentitiesCache) 0047 0048 bool KIdentityManagementCore::thatIsMe(const QString &email) 0049 { 0050 return allEmails().contains(email.toLower()); 0051 } 0052 0053 const QSet<QString> &KIdentityManagementCore::allEmails() 0054 { 0055 return sIdentitiesCache()->emails(); 0056 } 0057 0058 #include "utils.moc"