┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tooltips/ktooltipdelegate.h
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-06-21 10:20:28 +0000
committerPeter Penz <[email protected]>2009-06-21 10:20:28 +0000
commit1e208254c5816671be7d7ac4753a8888f53062d9 (patch)
tree6a008116931f3bff38a55fc9ee9527b415808d0b /src/tooltips/ktooltipdelegate.h
parent1c351eac8f97082234d87604688c32829b3aa07a (diff)
The file ktooltip.h contained the three public classes KToolTip, KToolTipDelegate and KToolTipItem. Use one separate file for each class.
svn path=/trunk/KDE/kdebase/apps/; revision=984646
Diffstat (limited to 'src/tooltips/ktooltipdelegate.h')
-rw-r--r--src/tooltips/ktooltipdelegate.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/tooltips/ktooltipdelegate.h b/src/tooltips/ktooltipdelegate.h
new file mode 100644
index 000000000..a219ec5bf
--- /dev/null
+++ b/src/tooltips/ktooltipdelegate.h
@@ -0,0 +1,110 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Fredrik Höglund <[email protected]> *
+ * *
+ * 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 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * 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, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef KTOOLTIPDELEGATE_H
+#define KTOOLTIPDELEGATE_H
+
+#include <QFontMetrics>
+#include <QFont>
+#include <QObject>
+#include <QPalette>
+#include <QRect>
+#include <QStyle>
+#include <QSize>
+
+class KStyleOptionToolTip;
+class KToolTipItem;
+class QPainter;
+class QRegion;
+
+class KStyleOptionToolTip
+{
+public:
+ KStyleOptionToolTip();
+ enum Corner { TopLeftCorner, TopRightCorner, BottomLeftCorner, BottomRightCorner, NoCorner };
+
+ Qt::LayoutDirection direction;
+ QFontMetrics fontMetrics;
+ QPalette palette;
+ QRect rect;
+ QStyle::State state;
+ QFont font;
+ QSize decorationSize;
+ Corner activeCorner;
+};
+
+/**
+ * KToolTipDelegate is responsible for providing the size hint and
+ * painting the tooltips.
+ */
+class KToolTipDelegate : public QObject
+{
+ Q_OBJECT
+public:
+ KToolTipDelegate();
+ virtual ~KToolTipDelegate();
+
+ virtual QSize sizeHint(const KStyleOptionToolTip &option, const KToolTipItem &item) const;
+
+ /**
+ * If haveAlphaChannel() returns true, the paint device will be filled with
+ * Qt::transparent when this function is called, otherwise the content is
+ * undefined.
+ */
+ virtual void paint(QPainter *painter,
+ const KStyleOptionToolTip &option,
+ const KToolTipItem &item) const;
+
+ /**
+ * Reimplement this function to specify the region of the tooltip
+ * that accepts input. Any mouse events that occur outside this
+ * region will be sent to the widget below the tooltip.
+ *
+ * The default implementation returns a region containing the
+ * bounding rect of the tooltip.
+ *
+ * This function will only be called if haveAlphaChannel()
+ * returns true.
+ */
+ virtual QRegion inputShape(const KStyleOptionToolTip &option) const;
+
+ /**
+ * Reimplement this function to specify a shape mask for the tooltip.
+ *
+ * The default implementation returns a region containing the
+ * bounding rect of the tooltip.
+ *
+ * This function will only be called if haveAlphaChannel()
+ * returns false.
+ */
+ virtual QRegion shapeMask(const KStyleOptionToolTip &option) const;
+
+protected:
+ /**
+ * Returns true if the tooltip has an alpha channel, and false
+ * otherwise.
+ *
+ * Implementors should assume that this condition may change at
+ * any time during the runtime of the application, as compositing
+ * can be enabled or disabled in the window manager.
+ */
+ bool haveAlphaChannel() const;
+};
+
+#endif