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

0001 //////////////////////////////////////////////////////////////////////////////
0002 // oxygendockseparatordata.cpp
0003 // generic data container for widgetstate hover (mouse-over) animations
0004 // -------------------
0005 //
0006 // SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0007 //
0008 // SPDX-License-Identifier: MIT
0009 //////////////////////////////////////////////////////////////////////////////
0010 
0011 #include "oxygendockseparatordata.h"
0012 
0013 #include <QTextStream>
0014 namespace Oxygen
0015 {
0016 //______________________________________________
0017 DockSeparatorData::DockSeparatorData(QObject *parent, QWidget *target, int duration)
0018     : AnimationData(parent, target)
0019 {
0020     // setup animation
0021     _horizontalData._animation = new Animation(duration, this);
0022     _horizontalData._animation.data()->setStartValue(0.0);
0023     _horizontalData._animation.data()->setEndValue(1.0);
0024     _horizontalData._animation.data()->setTargetObject(this);
0025     _horizontalData._animation.data()->setPropertyName("horizontalOpacity");
0026 
0027     // setup animation
0028     _verticalData._animation = new Animation(duration, this);
0029     _verticalData._animation.data()->setStartValue(0.0);
0030     _verticalData._animation.data()->setEndValue(1.0);
0031     _verticalData._animation.data()->setTargetObject(this);
0032     _verticalData._animation.data()->setPropertyName("verticalOpacity");
0033 }
0034 
0035 //______________________________________________
0036 void DockSeparatorData::updateRect(const QRect &r, const Qt::Orientation &orientation, bool hovered)
0037 {
0038     Data &data(orientation == Qt::Vertical ? _verticalData : _horizontalData);
0039 
0040     if (hovered) {
0041         data._rect = r;
0042         if (data._animation.data()->direction() == Animation::Backward) {
0043             if (data._animation.data()->isRunning())
0044                 data._animation.data()->stop();
0045             data._animation.data()->setDirection(Animation::Forward);
0046             data._animation.data()->start();
0047         }
0048 
0049     } else if (data._animation.data()->direction() == Animation::Forward && r == data._rect) {
0050         if (data._animation.data()->isRunning())
0051             data._animation.data()->stop();
0052         data._animation.data()->setDirection(Animation::Backward);
0053         data._animation.data()->start();
0054     }
0055 }
0056 }