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

0001 #ifndef oxygenmdiwindowengine_h
0002 #define oxygenmdiwindowengine_h
0003 
0004 //////////////////////////////////////////////////////////////////////////////
0005 // oxygenmdiwindowengine.h
0006 // stores event filters and maps widgets to animations
0007 // -------------------
0008 //
0009 // SPDX-FileCopyrightText: 2010 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 "oxygenmdiwindowdata.h"
0017 
0018 namespace Oxygen
0019 {
0020 //* handle mdiwindow arrows hover effect
0021 class MdiWindowEngine : public BaseEngine
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     //* constructor
0027     explicit MdiWindowEngine(QObject *parent)
0028         : BaseEngine(parent)
0029     {
0030     }
0031 
0032     //* register widget
0033     bool registerWidget(QWidget *);
0034 
0035     //* state
0036     bool updateState(const QObject *object, int primitive, bool value)
0037     {
0038         if (DataMap<MdiWindowData>::Value data = _data.find(object)) {
0039             return data.data()->updateState(primitive, value);
0040         } else
0041             return false;
0042     }
0043 
0044     //* true if widget is animated
0045     bool isAnimated(const QObject *object, int primitive)
0046     {
0047         if (DataMap<MdiWindowData>::Value data = _data.find(object)) {
0048             return data.data()->isAnimated(primitive);
0049         } else
0050             return false;
0051     }
0052 
0053     //* animation opacity
0054     qreal opacity(const QObject *object, int primitive)
0055     {
0056         if (DataMap<MdiWindowData>::Value data = _data.find(object)) {
0057             return data.data()->opacity(primitive);
0058         } else
0059             return AnimationData::OpacityInvalid;
0060     }
0061 
0062     //* enability
0063     void setEnabled(bool value) override
0064     {
0065         BaseEngine::setEnabled(value);
0066         _data.setEnabled(value);
0067     }
0068 
0069     //* duration
0070     void setDuration(int value) override
0071     {
0072         BaseEngine::setDuration(value);
0073         _data.setDuration(value);
0074     }
0075 
0076 public Q_SLOTS:
0077 
0078     //* remove widget from map
0079     bool unregisterWidget(QObject *object) override
0080     {
0081         return _data.unregisterWidget(object);
0082     }
0083 
0084 private:
0085     //* data map
0086     DataMap<MdiWindowData> _data;
0087 };
0088 }
0089 
0090 #endif