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