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 }