From 1e208254c5816671be7d7ac4753a8888f53062d9 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 21 Jun 2009 10:20:28 +0000 Subject: 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 --- src/tooltips/ktooltipdelegate.h | 110 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/tooltips/ktooltipdelegate.h (limited to 'src/tooltips/ktooltipdelegate.h') 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 * + * * + * 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 +#include +#include +#include +#include +#include +#include + +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 -- cgit v1.3