mirror of
https://gitgud.io/wackyideas/aerothemeplasma.git
synced 2024-08-15 00:43:43 +00:00
158 lines
3.3 KiB
C
158 lines
3.3 KiB
C
|
/*
|
||
|
* SPDX-FileCopyrightText: 2014 Hugo Pereira Da Costa <hugo.pereira@free.fr>
|
||
|
*
|
||
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
*/
|
||
|
|
||
|
#ifndef breezespinbox_data_h
|
||
|
#define breezespinbox_data_h
|
||
|
|
||
|
#include "breezeanimationdata.h"
|
||
|
|
||
|
#include <QStyle>
|
||
|
|
||
|
namespace Breeze
|
||
|
{
|
||
|
//* handles spinbox arrows hover
|
||
|
class SpinBoxData : public AnimationData
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
//* declare opacity property
|
||
|
Q_PROPERTY(qreal upArrowOpacity READ upArrowOpacity WRITE setUpArrowOpacity)
|
||
|
Q_PROPERTY(qreal downArrowOpacity READ downArrowOpacity WRITE setDownArrowOpacity)
|
||
|
|
||
|
public:
|
||
|
//* constructor
|
||
|
SpinBoxData(QObject *, QWidget *, int);
|
||
|
|
||
|
//* animation state
|
||
|
bool updateState(QStyle::SubControl subControl, bool value)
|
||
|
{
|
||
|
if (subControl == QStyle::SC_SpinBoxUp) {
|
||
|
return _upArrowData.updateState(value);
|
||
|
} else if (subControl == QStyle::SC_SpinBoxDown) {
|
||
|
return _downArrowData.updateState(value);
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//* animation state
|
||
|
bool isAnimated(QStyle::SubControl subControl) const
|
||
|
{
|
||
|
return ((subControl == QStyle::SC_SpinBoxUp && upArrowAnimation().data()->isRunning())
|
||
|
|| (subControl == QStyle::SC_SpinBoxDown && downArrowAnimation().data()->isRunning()));
|
||
|
}
|
||
|
|
||
|
//* opacity
|
||
|
qreal opacity(QStyle::SubControl subControl) const
|
||
|
{
|
||
|
if (subControl == QStyle::SC_SpinBoxUp) {
|
||
|
return upArrowOpacity();
|
||
|
} else if (subControl == QStyle::SC_SpinBoxDown) {
|
||
|
return downArrowOpacity();
|
||
|
} else {
|
||
|
return OpacityInvalid;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//* duration
|
||
|
void setDuration(int duration) override
|
||
|
{
|
||
|
upArrowAnimation().data()->setDuration(duration);
|
||
|
downArrowAnimation().data()->setDuration(duration);
|
||
|
}
|
||
|
|
||
|
//*@name up arrow animation
|
||
|
//@{
|
||
|
|
||
|
//* opacity
|
||
|
qreal upArrowOpacity() const
|
||
|
{
|
||
|
return _upArrowData._opacity;
|
||
|
}
|
||
|
|
||
|
//* opacity
|
||
|
void setUpArrowOpacity(qreal value)
|
||
|
{
|
||
|
value = digitize(value);
|
||
|
if (_upArrowData._opacity == value) {
|
||
|
return;
|
||
|
}
|
||
|
_upArrowData._opacity = value;
|
||
|
setDirty();
|
||
|
}
|
||
|
|
||
|
//* animation
|
||
|
Animation::Pointer upArrowAnimation() const
|
||
|
{
|
||
|
return _upArrowData._animation;
|
||
|
}
|
||
|
|
||
|
//@}
|
||
|
|
||
|
//*@name down arrow animation
|
||
|
//@{
|
||
|
|
||
|
//* opacity
|
||
|
qreal downArrowOpacity() const
|
||
|
{
|
||
|
return _downArrowData._opacity;
|
||
|
}
|
||
|
|
||
|
//* opacity
|
||
|
void setDownArrowOpacity(qreal value)
|
||
|
{
|
||
|
value = digitize(value);
|
||
|
if (_downArrowData._opacity == value) {
|
||
|
return;
|
||
|
}
|
||
|
_downArrowData._opacity = value;
|
||
|
setDirty();
|
||
|
}
|
||
|
|
||
|
//* animation
|
||
|
Animation::Pointer downArrowAnimation() const
|
||
|
{
|
||
|
return _downArrowData._animation;
|
||
|
}
|
||
|
|
||
|
//@}
|
||
|
|
||
|
private:
|
||
|
//* container for needed animation data
|
||
|
class Data
|
||
|
{
|
||
|
public:
|
||
|
//* default constructor
|
||
|
Data()
|
||
|
: _state(false)
|
||
|
, _opacity(0)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//* state
|
||
|
bool updateState(bool);
|
||
|
|
||
|
//* arrow state
|
||
|
bool _state;
|
||
|
|
||
|
//* animation
|
||
|
Animation::Pointer _animation;
|
||
|
|
||
|
//* opacity
|
||
|
qreal _opacity;
|
||
|
};
|
||
|
|
||
|
//* up arrow data
|
||
|
Data _upArrowData;
|
||
|
|
||
|
//* down arrow data
|
||
|
Data _downArrowData;
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif
|