~ubuntu-branches/ubuntu/utopic/kde-workspace/utopic-proposed

« back to all changes in this revision

Viewing changes to kstyles/oxygen/animations/oxygenscrollbarengine.h

  • Committer: Bazaar Package Importer
  • Author(s): Michał Zając
  • Date: 2011-07-09 08:31:15 UTC
  • Revision ID: james.westby@ubuntu.com-20110709083115-ohyxn6z93mily9fc
Tags: upstream-4.6.90
Import upstream version 4.6.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef oxygenscrollbarengine_h
 
2
#define oxygenscrollbarengine_h
 
3
 
 
4
//////////////////////////////////////////////////////////////////////////////
 
5
// oxygenscrollbarengine.h
 
6
// stores event filters and maps widgets to timelines for animations
 
7
// -------------------
 
8
//
 
9
// Copyright (c) 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
 
10
//
 
11
// Permission is hereby granted, free of charge, to any person obtaining a copy
 
12
// of this software and associated documentation files (the "Software"), to
 
13
// deal in the Software without restriction, including without limitation the
 
14
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
15
// sell copies of the Software, and to permit persons to whom the Software is
 
16
// furnished to do so, subject to the following conditions:
 
17
//
 
18
// The above copyright notice and this permission notice shall be included in
 
19
// all copies or substantial portions of the Software.
 
20
//
 
21
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
22
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
23
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
24
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
25
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
26
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
27
// IN THE SOFTWARE.
 
28
//////////////////////////////////////////////////////////////////////////////
 
29
 
 
30
#include "oxygenbaseengine.h"
 
31
#include "oxygendatamap.h"
 
32
#include "oxygenscrollbardata.h"
 
33
 
 
34
namespace Oxygen
 
35
{
 
36
 
 
37
    //! stores scrollbar hovered action and timeLine
 
38
    class ScrollBarEngine: public BaseEngine
 
39
    {
 
40
 
 
41
        Q_OBJECT
 
42
 
 
43
        public:
 
44
 
 
45
        //! constructor
 
46
        ScrollBarEngine( QObject* parent ):
 
47
        BaseEngine( parent )
 
48
        {}
 
49
 
 
50
        //! destructor
 
51
        virtual ~ScrollBarEngine( void )
 
52
        {}
 
53
 
 
54
        //! register scrollbar
 
55
        virtual bool registerWidget( QWidget* );
 
56
 
 
57
        //! true if widget is animated
 
58
        virtual bool isAnimated( const QObject* object, QStyle::SubControl control );
 
59
 
 
60
        //! animation opacity
 
61
        virtual qreal opacity( const QObject* object, QStyle::SubControl control )
 
62
        { return isAnimated( object, control ) ? _data.find( object ).data()->opacity( control ):AnimationData::OpacityInvalid; }
 
63
 
 
64
        //! return true if given subcontrol is hovered
 
65
        virtual bool isHovered( const QObject* object, QStyle::SubControl control )
 
66
        {
 
67
            if( DataMap<ScrollBarData>::Value data = _data.find( object ) ) return data.data()->isHovered( control );
 
68
            else return false;
 
69
        }
 
70
 
 
71
        //! control rect associated to object
 
72
        virtual QRect subControlRect( const QObject* object, QStyle::SubControl control )
 
73
        {
 
74
            if( DataMap<ScrollBarData>::Value data = _data.find( object ) ) return data.data()->subControlRect( control );
 
75
            else return QRect();
 
76
        }
 
77
 
 
78
        //! control rect
 
79
        virtual void setSubControlRect( const QObject* object, QStyle::SubControl control, const QRect& rect )
 
80
        {
 
81
            if( DataMap<ScrollBarData>::Value data = _data.find( object ) )
 
82
            { data.data()->setSubControlRect( control, rect ); }
 
83
        }
 
84
 
 
85
        //! control rect
 
86
        virtual void updateState( const QObject* object, bool state )
 
87
        {
 
88
            if( DataMap<ScrollBarData>::Value data = _data.find( object ) )
 
89
            { data.data()->updateState( state ); }
 
90
        }
 
91
 
 
92
 
 
93
        //! enability
 
94
        virtual void setEnabled( bool value )
 
95
        {
 
96
            BaseEngine::setEnabled( value );
 
97
            /*
 
98
            do not disable the map directly, because the contained OxygenScrollbarData
 
99
            are also used in non animated mode to store scrollbar arrows rect. However
 
100
            do disable all contains DATA object, in order to prevent actual animations
 
101
            */
 
102
            foreach( const DataMap<ScrollBarData>::Value data, _data )
 
103
            { if( data ) data.data()->setEnabled( value ); }
 
104
 
 
105
        }
 
106
 
 
107
        //! duration
 
108
        virtual void setDuration( int value )
 
109
        {
 
110
            BaseEngine::setDuration( value );
 
111
            _data.setDuration( value );
 
112
        }
 
113
 
 
114
        public slots:
 
115
 
 
116
        //! remove widget from map
 
117
        virtual bool unregisterWidget( QObject* object )
 
118
        { return _data.unregisterWidget( object ); }
 
119
 
 
120
        private:
 
121
 
 
122
        //! data map
 
123
        DataMap<ScrollBarData> _data;
 
124
 
 
125
    };
 
126
 
 
127
}
 
128
 
 
129
#endif