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

0001 //////////////////////////////////////////////////////////////////////////////
0002 // oxygenscrollbarengine.cpp
0003 // stores event filters and maps widgets to timelines for 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 "oxygenscrollbarengine.h"
0012 
0013 #include <QEvent>
0014 
0015 namespace Oxygen
0016 {
0017 //____________________________________________________________
0018 bool ScrollBarEngine::registerWidget(QWidget *widget)
0019 {
0020     // check widget
0021     /*
0022     note: widget is registered even if animation is disabled because OxygenScrollBarData
0023     is also used in non-animated mode to store arrow rect for hover highlight
0024     */
0025     if (!widget)
0026         return false;
0027 
0028     // create new data class
0029     if (!_data.contains(widget))
0030         _data.insert(widget, new ScrollBarData(this, widget, duration()), enabled());
0031 
0032     // connect destruction signal
0033     connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(unregisterWidget(QObject *)), Qt::UniqueConnection);
0034     return true;
0035 }
0036 
0037 //____________________________________________________________
0038 bool ScrollBarEngine::isAnimated(const QObject *object, QStyle::SubControl control)
0039 {
0040     if (DataMap<ScrollBarData>::Value data = _data.find(object)) {
0041         if (Animation::Pointer animation = data.data()->animation(control))
0042             return animation.data()->isRunning();
0043     }
0044 
0045     return false;
0046 }
0047 }