summaryrefslogtreecommitdiffstats
path: root/kdesktop/kfileividesktop.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit4aed2c8219774f5d797760606b8489a92ddc5163 (patch)
tree3f8c130f7d269626bf6a9447407ef6c35954426a /kdesktop/kfileividesktop.h
downloadtdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz
tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdesktop/kfileividesktop.h')
-rw-r--r--kdesktop/kfileividesktop.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/kdesktop/kfileividesktop.h b/kdesktop/kfileividesktop.h
new file mode 100644
index 000000000..0fb764cd0
--- /dev/null
+++ b/kdesktop/kfileividesktop.h
@@ -0,0 +1,127 @@
+/* This file is proposed to be part of the KDE base.
+ * Copyright (C) 2003 Laur Ivan <laurivan@eircom.net>
+ *
+ * Many thanks to:
+ * - Bernardo Hung <deciare@gta.igs.net> for the enhanced shadow
+ * algorithm (currently used)
+ * - Tim Jansen <tim@tjansen.de> for the API updates and fixes.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KFILE_IVI_DESKTOP
+#define KFILE_IVI_DESKTOP
+
+#include <qcolor.h>
+#include <qpixmap.h>
+#include <qimage.h>
+#include <qstring.h>
+#include <kfileivi.h>
+
+/*
+ * The dither flags used to display the shadow image
+ */
+#define DITHER_FLAGS (Qt::DiffuseAlphaDither | Qt::ColorOnly | Qt::AvoidDither)
+
+
+class QFont;
+class KShadowEngine;
+
+/**
+ * This class replaces KFileIVI in the desktop only.
+ * If the shadow object is NULL, then the class should behave almost identical
+ * to its parent.
+ * @since 3.2
+ */
+class KFileIVIDesktop : public KFileIVI
+{
+ public:
+ /**
+ * Constructor. It replicates the KFileIVI constructor and adds an
+ * optional shadow object.
+ * @param iconview the parent (iconview)
+ * @param fileitem the item theis object is supposed to draw
+ * @param size the default size of the drawn object
+ * @param shadow reference to the shadow object
+ */
+ KFileIVIDesktop(KonqIconViewWidget *iconview, KFileItem* fileitem, int
+ size, KShadowEngine *shadow = 0L);
+
+ /**
+ * Default destructor. Doesn't really do anything.
+ */
+ ~KFileIVIDesktop();
+
+ protected:
+ /**
+ * Reimplements KIconView::calcRect to take the shadow metrics
+ * into account
+ */
+ virtual void calcRect( const QString& _text );
+
+ /**
+ * Paints this item. Takes care of using the normal or alpha
+ * blending methods depending on the configuration.
+ * @param p the painter for drawing the item
+ * @param cg the base color group
+ */
+ virtual void paintItem(QPainter *p, const QColorGroup &cg);
+
+ /**
+ * Reimplements QIconView::paintFocus() to take the shadow
+ * metrics into account();
+ */
+ virtual void paintFocus( QPainter *p, const QColorGroup &cg );
+
+ /**
+ * Draws the shadow text.
+ * @param p the painter for drawing the item
+ * @param cg the base color group
+ */
+ virtual void drawShadowedText(QPainter *p, const QColorGroup &cg);
+
+ /**
+ * Builds the shadow. As the algorithm is pretty slow (at pixel level),
+ * This method is triggered only if the configuration has changed.
+ * @param p the painter for drawing the item
+ * @param align the shadow alignment
+ * @param shadowColor the shadow color
+ */
+ virtual QImage *buildShadow(QPainter *p, const int align, QColor &shadowColor);
+
+ protected:
+ void setNormalImage(QImage *newImage) { delete m_normalImage; m_normalImage = newImage; };
+ void setSelectedImage(QImage *newImage) { delete m_selectedImage; m_selectedImage = newImage; };
+
+ QImage *normalImage() { return m_normalImage; };
+ QImage *selectedImage() { return m_selectedImage; };
+
+ private:
+ bool shouldUpdateShadow(bool selected);
+ int shadowThickness() const;
+
+ KShadowEngine *m_shadow;
+
+ QImage *m_selectedImage;
+ QImage *m_normalImage;
+
+ QString oldText;
+
+ unsigned long _selectedUID;
+ unsigned long _normalUID;
+
+};
+
+#endif