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

0001 #ifndef oxygendockseparatorengine_h
0002 #define oxygendockseparatorengine_h
0003 
0004 //////////////////////////////////////////////////////////////////////////////
0005 // oxygendockseparatorengine.h
0006 // stores event filters and maps widgets to timelines for animations
0007 // -------------------
0008 //
0009 // SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0010 //
0011 // SPDX-License-Identifier: MIT
0012 //////////////////////////////////////////////////////////////////////////////
0013 
0014 #include "oxygenbaseengine.h"
0015 #include "oxygendatamap.h"
0016 #include "oxygendockseparatordata.h"
0017 
0018 namespace Oxygen
0019 {
0020 //* stores dockseparator hovered action and timeLine
0021 class DockSeparatorEngine : public BaseEngine
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     //* constructor
0027     explicit DockSeparatorEngine(QObject *parent)
0028         : BaseEngine(parent)
0029     {
0030     }
0031 
0032     //* register dockseparator
0033     bool registerWidget(QWidget *);
0034 
0035     //* update rect and hover value for data matching widget
0036     void updateRect(const QObject *object, const QRect &r, const Qt::Orientation orientation, bool hovered)
0037     {
0038         if (DataMap<DockSeparatorData>::Value data = _data.find(object)) {
0039             data.data()->updateRect(r, orientation, hovered);
0040         }
0041     }
0042 
0043     //* returns true if object is animated
0044     bool isAnimated(const QObject *object, const QRect &r, const Qt::Orientation orientation)
0045     {
0046         if (DataMap<DockSeparatorData>::Value data = _data.find(object)) {
0047             return data.data()->isAnimated(r, orientation);
0048         } else
0049             return false;
0050     }
0051 
0052     //* returns true if object is animated
0053     qreal opacity(const QObject *object, const Qt::Orientation orientation)
0054     {
0055         if (DataMap<DockSeparatorData>::Value data = _data.find(object)) {
0056             return data.data()->opacity(orientation);
0057         } else
0058             return AnimationData::OpacityInvalid;
0059     }
0060 
0061     //* enability
0062     void setEnabled(bool value) override
0063     {
0064         BaseEngine::setEnabled(value);
0065         _data.setEnabled(value);
0066     }
0067 
0068     //* duration
0069     void setDuration(int value) override
0070     {
0071         BaseEngine::setDuration(value);
0072         _data.setDuration(value);
0073     }
0074 
0075 public Q_SLOTS:
0076 
0077     //* remove widget from map
0078     bool unregisterWidget(QObject *object) override
0079     {
0080         return _data.unregisterWidget(object);
0081     }
0082 
0083 private:
0084     //* data map
0085     DataMap<DockSeparatorData> _data;
0086 };
0087 }
0088 
0089 #endif