1 #ifndef oxygenprogressbarengine_h
2 #define oxygenprogressbarengine_h
3 
4 //////////////////////////////////////////////////////////////////////////////
5 // oxygenprogressbarengine.h
6 // handle progress bar animations
7 // -------------------
8 //
9 // SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
10 //
11 // SPDX-License-Identifier: MIT
12 //////////////////////////////////////////////////////////////////////////////
13 
14 #include "oxygenbaseengine.h"
15 #include "oxygenprogressbardata.h"
16 #include "oxygendatamap.h"
17 
18 #include <QWidget>
19 
20 namespace Oxygen
21 {
22 
23     //* handles progress bar animations
24     class ProgressBarEngine: public BaseEngine
25     {
26 
27         Q_OBJECT
28 
29         public:
30 
31         //* constructor
ProgressBarEngine(QObject * object)32         explicit ProgressBarEngine( QObject* object ):
33             BaseEngine( object )
34         {}
35 
36         //* register progressbar
37         bool registerWidget( QWidget* );
38 
39         //* true if widget is animated
40         bool isAnimated( const QObject* );
41 
42         //* animation opacity
value(const QObject * object)43         int value( const QObject* object )
44         { return isAnimated( object ) ? data( object ).data()->value():0 ; }
45 
46         //* enable state
setEnabled(bool value)47         void setEnabled( bool value ) override
48         {
49             BaseEngine::setEnabled( value );
50             _data.setEnabled( value );
51         }
52 
53         //* duration
setDuration(int value)54         void setDuration( int value ) override
55         {
56             BaseEngine::setDuration( value );
57             _data.setDuration( value );
58         }
59 
60         public Q_SLOTS:
61 
62         //* remove widget from map
unregisterWidget(QObject * object)63         bool unregisterWidget( QObject* object ) override
64         { return _data.unregisterWidget( object ); }
65 
66         private:
67 
68         //* returns data associated to widget
69         DataMap<ProgressBarData>::Value data( const QObject* );
70 
71         //* map widgets to progressbar data
72         DataMap<ProgressBarData> _data;
73 
74     };
75 
76 }
77 
78 #endif
79