summaryrefslogtreecommitdiffstats
path: root/src/entryiconfactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entryiconfactory.cpp')
-rw-r--r--src/entryiconfactory.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/entryiconfactory.cpp b/src/entryiconfactory.cpp
new file mode 100644
index 0000000..0f4696d
--- /dev/null
+++ b/src/entryiconfactory.cpp
@@ -0,0 +1,43 @@
+/***************************************************************************
+ copyright : (C) 2005-2006 by Robby Stephenson
+ email : robby@periapsis.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of version 2 of the GNU General Public License as *
+ * published by the Free Software Foundation; *
+ * *
+ ***************************************************************************/
+
+#include "entryiconfactory.h"
+#include "tellico_kernel.h"
+
+#include <kiconloader.h>
+#include <kimageeffect.h>
+
+#include <qimage.h>
+
+using Tellico::EntryIconFactory;
+
+EntryIconFactory::EntryIconFactory(int size_) : QIconFactory(), m_size(size_) {
+ setAutoDelete(true);
+}
+
+QPixmap* EntryIconFactory::createPixmap(const QIconSet&, QIconSet::Size, QIconSet::Mode, QIconSet::State) {
+ QPixmap entryPix = UserIcon(Kernel::self()->collectionTypeName());
+ // if we're 22x22 or smaller, just use entry icon
+ if(m_size < 23) {
+ QImage entryImg = entryPix.convertToImage();
+ entryPix.convertFromImage(entryImg.smoothScale(m_size, m_size, QImage::ScaleMin), 0);
+ return new QPixmap(entryPix);
+ }
+
+ QPixmap newPix = BarIcon(QString::fromLatin1("mime_empty"), m_size);
+ QImage newImg = newPix.convertToImage();
+// QImage blend; Not exactly sure what the coordinates mean, but this seems to work ok.
+ KImageEffect::blendOnLower(m_size/4, m_size/4, entryPix.convertToImage(), newImg);
+ newPix.convertFromImage(newImg, 0);
+ return new QPixmap(newPix);
+}