1/* This file is part of the KDE project
2 Copyright (C) 2008 Matthias Kretz <kretz@kde.org>
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) version 3.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18
19*/
20
21#ifndef KFADEWIDGETEFFECT_H
22#define KFADEWIDGETEFFECT_H
23
24#include <kdeui_export.h>
25#include <QtGui/QWidget>
26
27class KFadeWidgetEffectPrivate;
28
29/** \class KFadeWidgetEffect kfadewidgeteffect.h KFadeWidgetEffect
30 * \brief Animates changes fading the new UI over the old look.
31 *
32 * This widget will put itself above the widget that will change and show a fading transition from
33 * the old to the new UI. It will delete itself after the animation is finished.
34 * Example:
35 * \code
36 * KFadeWidgetEffect *animation = new KFadeWidgetEffect(widgetThatWillChange);
37 * // do changes on widgetThatWillChange
38 * // ...
39 * animation->start();
40 * \endcode
41 *
42 * \note The widget that changes needs to have a parent widget. KFadeWidgetEffect does not work
43 * for toplevel widgets (windows).
44 *
45 * \author Matthias Kretz <kretz@kde.org>
46 * \since 4.1
47 */
48class KDEUI_EXPORT KFadeWidgetEffect : public QWidget
49{
50 Q_OBJECT
51 Q_DECLARE_PRIVATE(KFadeWidgetEffect)
52 public:
53 /**
54 * Create the animation widget. Takes a snapshot of the \p destWidget to use as old image
55 * that gets faded out.
56 *
57 * \param destWidget The widget that will change and should fade to the new look.
58 */
59 KFadeWidgetEffect(QWidget *destWidget);
60
61 /**
62 * Destructor.
63 *
64 * \warning KFadeWidgetEffect deletes itself after the animation is finished.
65 */
66 ~KFadeWidgetEffect();
67
68 /**
69 * Starts the animation.
70 *
71 * Call this function after all visual changes are done.
72 *
73 * \param duration The duration of the animation in milliseconds.
74 */
75 void start(int duration = 250);
76
77 protected:
78 /**
79 * \internal
80 */
81 void paintEvent(QPaintEvent *);
82
83 /**
84 * \internal
85 */
86 KFadeWidgetEffectPrivate *const d_ptr;
87
88 private:
89 Q_PRIVATE_SLOT(d_func(), void finished())
90};
91
92#endif // KFADEWIDGETEFFECT_H
93