File indexing completed on 2024-05-05 05:35:32

0001 #ifndef oxygengenericanimationconfigitem_h
0002 #define oxygengenericanimationconfigitem_h
0003 
0004 //////////////////////////////////////////////////////////////////////////////
0005 // oxygengenericanimationconfigitem.h
0006 // animation configuration item
0007 // -------------------
0008 //
0009 // SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0010 //
0011 // SPDX-License-Identifier: MIT
0012 //////////////////////////////////////////////////////////////////////////////
0013 
0014 #include "oxygen_config_export.h"
0015 #include "oxygenanimationconfigitem.h"
0016 
0017 #include <QFrame>
0018 #include <QPointer>
0019 #include <QSpinBox>
0020 
0021 class Ui_GenericAnimationConfigBox;
0022 
0023 namespace Oxygen
0024 {
0025 class OXYGEN_CONFIG_EXPORT GenericAnimationConfigBox : public QFrame
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     //* constructor
0031     explicit GenericAnimationConfigBox(QWidget *);
0032 
0033     //* destructor
0034     virtual ~GenericAnimationConfigBox();
0035 
0036     //* duration spin box
0037     QSpinBox *durationSpinBox(void) const;
0038 
0039 private:
0040     Ui_GenericAnimationConfigBox *ui = nullptr;
0041 };
0042 
0043 //* generic animation config item
0044 class OXYGEN_CONFIG_EXPORT GenericAnimationConfigItem : public AnimationConfigItem
0045 {
0046     Q_OBJECT
0047 
0048 public:
0049     //* constructor
0050     explicit GenericAnimationConfigItem(QWidget *parent, const QString &title = QString(), const QString &description = QString())
0051         : AnimationConfigItem(parent, title, description)
0052     {
0053     }
0054 
0055     //* configure
0056     void initializeConfigurationWidget(QWidget *) override;
0057 
0058     //* configuration widget
0059     QWidget *configurationWidget(void) const override
0060     {
0061         return _configurationWidget.data();
0062     }
0063 
0064     //* duration
0065     virtual int duration(void) const
0066     {
0067         return _configurationWidget ? _configurationWidget.data()->durationSpinBox()->value() : 0;
0068     }
0069 
0070 public Q_SLOTS:
0071 
0072     //* duration
0073     virtual void setDuration(int value)
0074     {
0075         if (_configurationWidget) {
0076             _configurationWidget.data()->durationSpinBox()->setValue(value);
0077         }
0078     }
0079 
0080 private:
0081     //* configuration widget
0082     QPointer<GenericAnimationConfigBox> _configurationWidget;
0083 };
0084 }
0085 
0086 #endif