1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: 2000 Kurt Granroth <granroth@kde.org> |
4 | SPDX-FileCopyrightText: 2006 Hamish Rodda <rodda@kde.org> |
5 | |
6 | SPDX-License-Identifier: LGPL-2.0-only |
7 | */ |
8 | #ifndef KANIMATEDBUTTON_H |
9 | #define KANIMATEDBUTTON_H |
10 | |
11 | #include <QToolButton> |
12 | #include <kwidgetsaddons_export.h> |
13 | #include <memory> |
14 | |
15 | /** |
16 | * @class KAnimatedButton kanimatedbutton.h KAnimatedButton |
17 | * |
18 | * @short An extended version of QToolButton which can display an animation. |
19 | * |
20 | * This widget extends QToolButton with the ability to display an animation. |
21 | * All you need to do is pass along a path to a file containing an animation, |
22 | * it can be anything supported by QMovie, or a picture containing all the |
23 | * frames of the animation next to each other (each frame being assumed of |
24 | * having the same size). |
25 | * |
26 | * @author Kurt Granroth <granroth@kde.org> |
27 | */ |
28 | class KWIDGETSADDONS_EXPORT KAnimatedButton : public QToolButton |
29 | { |
30 | Q_OBJECT |
31 | Q_PROPERTY(QString animationPath READ animationPath WRITE setAnimationPath) |
32 | |
33 | public: |
34 | /** |
35 | * Construct an animated tool button. |
36 | * |
37 | * @param parent The parent widget |
38 | */ |
39 | explicit KAnimatedButton(QWidget *parent = nullptr); |
40 | |
41 | /** |
42 | * Destructor |
43 | */ |
44 | ~KAnimatedButton() override; |
45 | |
46 | /** |
47 | * Returns the path used to load the animation |
48 | */ |
49 | QString animationPath() const; |
50 | |
51 | /** |
52 | * Sets the path to the file which contains the animation to load. |
53 | * |
54 | * @param path The path of the file containing the animation |
55 | */ |
56 | void setAnimationPath(const QString &path); |
57 | |
58 | public Q_SLOTS: |
59 | /** |
60 | * Starts the animation from frame 1 |
61 | */ |
62 | void start(); |
63 | |
64 | /** |
65 | * Stops the animation. This will also reset the widget to frame 1. |
66 | */ |
67 | void stop(); |
68 | |
69 | private: |
70 | std::unique_ptr<class KAnimatedButtonPrivate> const d; |
71 | |
72 | Q_DISABLE_COPY(KAnimatedButton) |
73 | }; |
74 | |
75 | #endif // KANIMATEDBUTTON_H |
76 | |