File indexing completed on 2024-05-12 05:28:38
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 #pragma once 0008 0009 #include "breezescrollbardata.h" 0010 #include "breezewidgetstateengine.h" 0011 0012 namespace Breeze 0013 { 0014 //* stores scrollbar hovered action and timeLine 0015 class ScrollBarEngine : public WidgetStateEngine 0016 { 0017 Q_OBJECT 0018 0019 public: 0020 //* constructor 0021 explicit ScrollBarEngine(QObject *parent) 0022 : WidgetStateEngine(parent) 0023 { 0024 } 0025 0026 //* destructor 0027 virtual ~ScrollBarEngine() 0028 { 0029 } 0030 0031 //* register scrollbar 0032 virtual bool registerWidget(QObject *target, AnimationModes modes); 0033 0034 //*@name accessors 0035 //@{ 0036 0037 using WidgetStateEngine::isAnimated; 0038 using WidgetStateEngine::opacity; 0039 0040 //* true if widget is animated 0041 virtual bool isAnimated(const QObject *, AnimationMode, QStyle::SubControl control); 0042 0043 //* true if widget is animated 0044 virtual AnimationMode animationMode(const QObject *object, QStyle::SubControl control); 0045 0046 //* animation opacity 0047 virtual qreal opacity(const QObject *object, QStyle::SubControl control); 0048 0049 //* return true if given subcontrol is hovered 0050 virtual bool isHovered(const QObject *object, QStyle::SubControl control) 0051 { 0052 if (DataMap<WidgetStateData>::Value data = this->data(object, AnimationHover)) { 0053 return static_cast<const ScrollBarData *>(data.data())->isHovered(control); 0054 0055 } else { 0056 return false; 0057 } 0058 } 0059 0060 //* control rect associated to object 0061 virtual QRect subControlRect(const QObject *object, QStyle::SubControl control) 0062 { 0063 if (DataMap<WidgetStateData>::Value data = this->data(object, AnimationHover)) { 0064 return static_cast<const ScrollBarData *>(data.data())->subControlRect(control); 0065 0066 } else { 0067 return QRect(); 0068 } 0069 } 0070 0071 //* mouse position 0072 virtual QPoint position(const QObject *object) 0073 { 0074 if (DataMap<WidgetStateData>::Value data = this->data(object, AnimationHover)) { 0075 return static_cast<const ScrollBarData *>(data.data())->position(); 0076 0077 } else { 0078 return QPoint(-1, -1); 0079 } 0080 } 0081 0082 //@} 0083 0084 //*@name modifiers 0085 //@{ 0086 0087 //* control rect 0088 virtual void setSubControlRect(const QObject *object, QStyle::SubControl control, const QRect &rect) 0089 { 0090 if (DataMap<WidgetStateData>::Value data = this->data(object, AnimationHover)) { 0091 static_cast<ScrollBarData *>(data.data())->setSubControlRect(control, rect); 0092 } 0093 } 0094 0095 //@} 0096 }; 0097 0098 }