File indexing completed on 2024-05-12 05:28:39

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 "breezetabbarengine.h"
0008 
0009 #include <QEvent>
0010 
0011 namespace Breeze
0012 {
0013 //____________________________________________________________
0014 bool TabBarEngine::registerWidget(QObject *target)
0015 {
0016     if (!target) {
0017         return false;
0018     }
0019 
0020     // create new data class
0021     if (!_hoverData.contains(target)) {
0022         _hoverData.insert(target, new TabBarData(this, target, duration()), enabled());
0023     }
0024     if (!_focusData.contains(target)) {
0025         _focusData.insert(target, new TabBarData(this, target, duration()), enabled());
0026     }
0027 
0028     // connect destruction signal
0029     connect(target, &QObject::destroyed, this, &TabBarEngine::unregisterWidget, Qt::UniqueConnection);
0030     return true;
0031 }
0032 
0033 //____________________________________________________________
0034 bool TabBarEngine::updateState(const QObject *object, const QPoint &position, AnimationMode mode, bool value)
0035 {
0036     DataMap<TabBarData>::Value data(TabBarEngine::data(object, mode));
0037     return (data && data.data()->updateState(position, value));
0038 }
0039 
0040 //____________________________________________________________
0041 bool TabBarEngine::isAnimated(const QObject *object, const QPoint &position, AnimationMode mode)
0042 {
0043     DataMap<TabBarData>::Value data(TabBarEngine::data(object, mode));
0044     return (data && data.data()->animation(position) && data.data()->animation(position).data()->isRunning());
0045 }
0046 
0047 //____________________________________________________________
0048 DataMap<TabBarData>::Value TabBarEngine::data(const QObject *object, AnimationMode mode)
0049 {
0050     switch (mode) {
0051     case AnimationHover:
0052         return _hoverData.find(object).data();
0053     case AnimationFocus:
0054         return _focusData.find(object).data();
0055     default:
0056         return DataMap<TabBarData>::Value();
0057     }
0058 }
0059 
0060 }