File indexing completed on 2024-05-19 05:35:21

0001 #ifndef oxygenprogressbarengine_h
0002 #define oxygenprogressbarengine_h
0003 
0004 //////////////////////////////////////////////////////////////////////////////
0005 // oxygenprogressbarengine.h
0006 // handle progress bar animations
0007 // -------------------
0008 //
0009 // SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0010 //
0011 // SPDX-License-Identifier: MIT
0012 //////////////////////////////////////////////////////////////////////////////
0013 
0014 #include "oxygenbaseengine.h"
0015 #include "oxygendatamap.h"
0016 #include "oxygenprogressbardata.h"
0017 
0018 #include <QWidget>
0019 
0020 namespace Oxygen
0021 {
0022 //* handles progress bar animations
0023 class ProgressBarEngine : public BaseEngine
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     //* constructor
0029     explicit ProgressBarEngine(QObject *object)
0030         : BaseEngine(object)
0031     {
0032     }
0033 
0034     //* register progressbar
0035     bool registerWidget(QWidget *);
0036 
0037     //* true if widget is animated
0038     bool isAnimated(const QObject *);
0039 
0040     //* animation opacity
0041     int value(const QObject *object)
0042     {
0043         return isAnimated(object) ? data(object).data()->value() : 0;
0044     }
0045 
0046     //* enable state
0047     void setEnabled(bool value) override
0048     {
0049         BaseEngine::setEnabled(value);
0050         _data.setEnabled(value);
0051     }
0052 
0053     //* duration
0054     void setDuration(int value) override
0055     {
0056         BaseEngine::setDuration(value);
0057         _data.setDuration(value);
0058     }
0059 
0060 public Q_SLOTS:
0061 
0062     //* remove widget from map
0063     bool unregisterWidget(QObject *object) override
0064     {
0065         return _data.unregisterWidget(object);
0066     }
0067 
0068 private:
0069     //* returns data associated to widget
0070     DataMap<ProgressBarData>::Value data(const QObject *);
0071 
0072     //* map widgets to progressbar data
0073     DataMap<ProgressBarData> _data;
0074 };
0075 }
0076 
0077 #endif