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 }