File indexing completed on 2025-03-09 04:54:38
0001 /* SPDX-FileCopyrightText: 2009 Thomas McGuire <mcguire@kde.org> 0002 0003 SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0004 */ 0005 0006 #include "iconnamecache.h" 0007 0008 #include <KIconLoader> 0009 #include <QStandardPaths> 0010 0011 using namespace MessageViewer; 0012 0013 Q_GLOBAL_STATIC(IconNameCache, s_iconNameCache) 0014 0015 IconNameCache *IconNameCache::instance() 0016 { 0017 return s_iconNameCache; 0018 } 0019 0020 bool IconNameCache::Entry::operator<(const Entry &other) const 0021 { 0022 const int fileNameCompare = fileName.compare(other.fileName); 0023 if (fileNameCompare != 0) { 0024 return fileNameCompare < 0; 0025 } else { 0026 return size < other.size; 0027 } 0028 } 0029 0030 QString IconNameCache::iconPath(const QString &name, int size) const 0031 { 0032 Entry entry; 0033 entry.fileName = name; 0034 entry.size = size; 0035 0036 const QString val = mCachedEntries.value(entry); 0037 if (!val.isEmpty()) { 0038 return val; 0039 } 0040 0041 const QString fileName = KIconLoader::global()->iconPath(name, size); 0042 mCachedEntries.insert(entry, fileName); 0043 return fileName; 0044 } 0045 0046 QString IconNameCache::iconPathFromLocal(const QString &name) const 0047 { 0048 Entry entry; 0049 entry.fileName = name; 0050 entry.size = 0; 0051 0052 const QString val = mCachedEntries.value(entry); 0053 if (!val.isEmpty()) { 0054 return val; 0055 } 0056 0057 const QString fileName = picsPath() + name; 0058 mCachedEntries.insert(entry, fileName); 0059 return fileName; 0060 } 0061 0062 QString IconNameCache::picsPath() const 0063 { 0064 if (mPicsPath.isEmpty()) { 0065 mPicsPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("libmessageviewer/pics/"), QStandardPaths::LocateDirectory); 0066 } 0067 return mPicsPath; 0068 }