keepassxc/src/core/DatabaseIcons.cpp
Christian Kieschnick eca9c658f4
Add sharing of groups between databases
* Add source folder keeshare for sharing with corresponding define WITH_XC_KEESHARE
* Move common crypto parts to src/crypto/ssh
* Extended OpenSSHKey
* Move filewatching to own file (currently in two related classes DelayedFileWatcher and BulkFileWatcher)
* Small improvements for style and code in several classes
* Sharing is secured using RSA-Keys which are generated on demand
* Publisher signs the container using their private key
* Client can verify the signed container and choose to decline an import,
import only once or trust the publisher and automatically import all
data of this source henceforth
* Integration of settings into Group-Settings, Database-Settings and Application-Settings
* Introduced dependency QuaZip as dependency to allow combined export of
key container and the (custom format) certificate
2018-10-01 10:39:37 -04:00

155 lines
4.0 KiB
C++

/*
* 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"
#include "core/FilePath.h"
DatabaseIcons* DatabaseIcons::m_instance(nullptr);
const int DatabaseIcons::IconCount(69);
const int DatabaseIcons::ExpiredIconIndex(45);
const int DatabaseIcons::SharedIconIndex(1);
const int DatabaseIcons::UnsharedIconIndex(45);
// clang-format off
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",
"C65_W.png",
"C66_Money.png",
"C67_Certificate.png",
"C68_BlackBerry.png"
};
// clang-format on
QImage DatabaseIcons::icon(int index)
{
if (index < 0 || index >= IconCount) {
qWarning("DatabaseIcons::icon: invalid icon index %d", index);
return QImage();
}
if (!m_iconCache[index].isNull()) {
return m_iconCache[index];
} else {
QString iconPath = QString("icons/database/").append(m_indexToName[index]);
QImage icon(filePath()->dataPath(iconPath));
m_iconCache[index] = icon;
return icon;
}
}
QPixmap DatabaseIcons::iconPixmap(int index)
{
if (index < 0 || index >= IconCount) {
qWarning("DatabaseIcons::iconPixmap: invalid icon index %d", index);
return QPixmap();
}
QPixmap pixmap;
if (!QPixmapCache::find(m_pixmapCacheKeys[index], &pixmap)) {
pixmap = QPixmap::fromImage(icon(index));
m_pixmapCacheKeys[index] = QPixmapCache::insert(pixmap);
}
return pixmap;
}
DatabaseIcons::DatabaseIcons()
{
Q_STATIC_ASSERT(sizeof(m_indexToName) == IconCount * sizeof(m_indexToName[0]));
m_iconCache.reserve(IconCount);
m_iconCache.resize(IconCount);
m_pixmapCacheKeys.reserve(IconCount);
m_pixmapCacheKeys.resize(IconCount);
}
DatabaseIcons* DatabaseIcons::instance()
{
if (!m_instance) {
m_instance = new DatabaseIcons();
}
return m_instance;
}