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

0001 /*
0002     SPDX-FileCopyrightText: 2014 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "oxygentabbarengine.h"
0008 
0009 #include <QEvent>
0010 
0011 namespace Oxygen
0012 {
0013 //____________________________________________________________
0014 bool TabBarEngine::registerWidget(QWidget *widget)
0015 {
0016     if (!widget)
0017         return false;
0018 
0019     // create new data class
0020     if (!_hoverData.contains(widget))
0021         _hoverData.insert(widget, new TabBarData(this, widget, duration()), enabled());
0022     if (!_focusData.contains(widget))
0023         _focusData.insert(widget, new TabBarData(this, widget, duration()), enabled());
0024 
0025     // connect destruction signal
0026     connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(unregisterWidget(QObject *)), Qt::UniqueConnection);
0027     return true;
0028 }
0029 
0030 //____________________________________________________________
0031 bool TabBarEngine::updateState(const QObject *object, const QPoint &position, AnimationMode mode, bool value)
0032 {
0033     DataMap<TabBarData>::Value data(TabBarEngine::data(object, mode));
0034     return (data && data.data()->updateState(position, value));
0035 }
0036 
0037 //____________________________________________________________
0038 bool TabBarEngine::isAnimated(const QObject *object, const QPoint &position, AnimationMode mode)
0039 {
0040     DataMap<TabBarData>::Value data(TabBarEngine::data(object, mode));
0041     return (data && data.data()->animation(position) && data.data()->animation(position).data()->isRunning());
0042 }
0043 
0044 //____________________________________________________________
0045 DataMap<TabBarData>::Value TabBarEngine::data(const QObject *object, AnimationMode mode)
0046 {
0047     switch (mode) {
0048     case AnimationHover:
0049         return _hoverData.find(object).data();
0050     case AnimationFocus:
0051         return _focusData.find(object).data();
0052     default:
0053         return DataMap<TabBarData>::Value();
0054     }
0055 }
0056 }