2010-09-19 15:22:24 -04:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 2 or (at your option)
|
|
|
|
* version 3 of the License.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "DatabaseIcons.h"
|
|
|
|
|
2012-07-18 14:44:28 -04:00
|
|
|
#include "core/FilePath.h"
|
2011-07-08 08:51:14 -04:00
|
|
|
|
2012-06-29 08:15:16 -04:00
|
|
|
DatabaseIcons* DatabaseIcons::m_instance(Q_NULLPTR);
|
2012-06-29 09:22:43 -04:00
|
|
|
const int DatabaseIcons::IconCount(69);
|
|
|
|
const int DatabaseIcons::ExpiredIconIndex(45);
|
2012-07-01 15:35:07 -04:00
|
|
|
const char* const DatabaseIcons::m_indexToName[] = {
|
|
|
|
"C00_Password.png",
|
|
|
|
"C01_Package_Network.png",
|
|
|
|
"C02_MessageBox_Warning.png",
|
|
|
|
"C03_Server.png",
|
|
|
|
"C04_Klipper.png",
|
|
|
|
"C05_Edu_Languages.png",
|
|
|
|
"C06_KCMDF.png",
|
|
|
|
"C07_Kate.png",
|
|
|
|
"C08_Socket.png",
|
|
|
|
"C09_Identity.png",
|
|
|
|
"C10_Kontact.png",
|
|
|
|
"C11_Camera.png",
|
|
|
|
"C12_IRKickFlash.png",
|
|
|
|
"C13_KGPG_Key3.png",
|
|
|
|
"C14_Laptop_Power.png",
|
|
|
|
"C15_Scanner.png",
|
|
|
|
"C16_Mozilla_Firebird.png",
|
|
|
|
"C17_CDROM_Unmount.png",
|
|
|
|
"C18_Display.png",
|
|
|
|
"C19_Mail_Generic.png",
|
|
|
|
"C20_Misc.png",
|
|
|
|
"C21_KOrganizer.png",
|
|
|
|
"C22_ASCII.png",
|
|
|
|
"C23_Icons.png",
|
|
|
|
"C24_Connect_Established.png",
|
|
|
|
"C25_Folder_Mail.png",
|
|
|
|
"C26_FileSave.png",
|
|
|
|
"C27_NFS_Unmount.png",
|
|
|
|
"C28_QuickTime.png",
|
|
|
|
"C29_KGPG_Term.png",
|
|
|
|
"C30_Konsole.png",
|
|
|
|
"C31_FilePrint.png",
|
|
|
|
"C32_FSView.png",
|
|
|
|
"C33_Run.png",
|
|
|
|
"C34_Configure.png",
|
|
|
|
"C35_KRFB.png",
|
|
|
|
"C36_Ark.png",
|
|
|
|
"C37_KPercentage.png",
|
|
|
|
"C38_Samba_Unmount.png",
|
|
|
|
"C39_History.png",
|
|
|
|
"C40_Mail_Find.png",
|
|
|
|
"C41_VectorGfx.png",
|
|
|
|
"C42_KCMMemory.png",
|
|
|
|
"C43_EditTrash.png",
|
|
|
|
"C44_KNotes.png",
|
|
|
|
"C45_Cancel.png",
|
|
|
|
"C46_Help.png",
|
|
|
|
"C47_KPackage.png",
|
|
|
|
"C48_Folder.png",
|
|
|
|
"C49_Folder_Blue_Open.png",
|
|
|
|
"C50_Folder_Tar.png",
|
|
|
|
"C51_Decrypted.png",
|
|
|
|
"C52_Encrypted.png",
|
|
|
|
"C53_Apply.png",
|
|
|
|
"C54_Signature.png",
|
|
|
|
"C55_Thumbnail.png",
|
|
|
|
"C56_KAddressBook.png",
|
|
|
|
"C57_View_Text.png",
|
|
|
|
"C58_KGPG.png",
|
|
|
|
"C59_Package_Development.png",
|
|
|
|
"C60_KFM_Home.png",
|
|
|
|
"C61_Services.png",
|
|
|
|
"C62_Tux.png",
|
|
|
|
"C63_Feather.png",
|
|
|
|
"C64_Apple.png",
|
2013-03-23 16:50:23 -04:00
|
|
|
"C65_W.png",
|
2012-07-01 15:35:07 -04:00
|
|
|
"C66_Money.png",
|
|
|
|
"C67_Certificate.png",
|
|
|
|
"C68_BlackBerry.png"
|
|
|
|
};
|
2012-05-31 08:51:44 -04:00
|
|
|
|
2012-01-01 15:52:54 -05:00
|
|
|
QImage DatabaseIcons::icon(int index)
|
2010-09-19 15:22:24 -04:00
|
|
|
{
|
2012-06-29 09:22:43 -04:00
|
|
|
if (index < 0 || index >= IconCount) {
|
2010-09-21 16:39:42 -04:00
|
|
|
qWarning("DatabaseIcons::icon: invalid icon index %d", index);
|
2012-01-01 15:52:54 -05:00
|
|
|
return QImage();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!m_iconCache[index].isNull()) {
|
|
|
|
return m_iconCache[index];
|
|
|
|
}
|
|
|
|
else {
|
2012-07-01 15:35:07 -04:00
|
|
|
QString iconPath = QString("icons/database/").append(m_indexToName[index]);
|
2012-07-18 14:54:26 -04:00
|
|
|
QImage icon(filePath()->dataPath(iconPath));
|
2012-01-01 15:52:54 -05:00
|
|
|
|
|
|
|
m_iconCache[index] = icon;
|
|
|
|
return icon;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QPixmap DatabaseIcons::iconPixmap(int index)
|
|
|
|
{
|
2012-06-29 09:22:43 -04:00
|
|
|
if (index < 0 || index >= IconCount) {
|
2012-01-01 15:52:54 -05:00
|
|
|
qWarning("DatabaseIcons::iconPixmap: invalid icon index %d", index);
|
|
|
|
return QPixmap();
|
2010-09-19 15:22:24 -04:00
|
|
|
}
|
|
|
|
|
2012-01-01 15:52:54 -05:00
|
|
|
QPixmap pixmap;
|
|
|
|
|
|
|
|
if (!QPixmapCache::find(m_pixmapCacheKeys[index], &pixmap)) {
|
|
|
|
pixmap = QPixmap::fromImage(icon(index));
|
|
|
|
m_pixmapCacheKeys[index] = QPixmapCache::insert(pixmap);
|
2010-09-19 15:22:24 -04:00
|
|
|
}
|
|
|
|
|
2012-01-01 15:52:54 -05:00
|
|
|
return pixmap;
|
2010-09-19 15:22:24 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
DatabaseIcons::DatabaseIcons()
|
|
|
|
{
|
2012-07-01 16:21:49 -04:00
|
|
|
Q_STATIC_ASSERT(sizeof(m_indexToName) == IconCount * sizeof(m_indexToName[0]));
|
2012-01-01 15:52:54 -05:00
|
|
|
|
2012-06-29 09:22:43 -04:00
|
|
|
m_iconCache.reserve(IconCount);
|
|
|
|
m_iconCache.resize(IconCount);
|
|
|
|
m_pixmapCacheKeys.reserve(IconCount);
|
|
|
|
m_pixmapCacheKeys.resize(IconCount);
|
2010-09-19 15:22:24 -04:00
|
|
|
}
|
2010-09-21 16:39:42 -04:00
|
|
|
|
2012-05-31 08:51:44 -04:00
|
|
|
DatabaseIcons* DatabaseIcons::instance()
|
2010-09-19 15:22:24 -04:00
|
|
|
{
|
2012-05-31 08:51:44 -04:00
|
|
|
if (!m_instance) {
|
|
|
|
m_instance = new DatabaseIcons();
|
2010-09-19 15:22:24 -04:00
|
|
|
}
|
2012-01-01 15:52:54 -05:00
|
|
|
|
2012-05-31 08:51:44 -04:00
|
|
|
return m_instance;
|
2010-09-19 15:22:24 -04:00
|
|
|
}
|