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

« back to all changes in this revision

Viewing changes to kstyles/oxygen/config/oxygenanimationconfigwidget.cpp

  • 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
//////////////////////////////////////////////////////////////////////////////
 
2
// oxygenanimationconfigwidget.cpp
 
3
// animation configuration widget
 
4
// -------------------
 
5
//
 
6
// Copyright (c) 2010 Hugo Pereira Da Costa <hugo@oxygen-icons.org>
 
7
//
 
8
// Permission is hereby granted, free of charge, to any person obtaining a copy
 
9
// of this software and associated documentation files (the "Software"), to
 
10
// deal in the Software without restriction, including without limitation the
 
11
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
12
// sell copies of the Software, and to permit persons to whom the Software is
 
13
// furnished to do so, subject to the following conditions:
 
14
//
 
15
// The above copyright notice and this permission notice shall be included in
 
16
// all copies or substantial portions of the Software.
 
17
//
 
18
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
19
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
20
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
21
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
22
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
23
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
24
// IN THE SOFTWARE.
 
25
//////////////////////////////////////////////////////////////////////////////
 
26
 
 
27
#include "oxygenanimationconfigwidget.h"
 
28
#include "oxygenanimationconfigwidget.moc"
 
29
#include "oxygenanimationconfigitem.h"
 
30
#include "oxygenstyleconfigdata.h"
 
31
 
 
32
#include <QtGui/QButtonGroup>
 
33
#include <QtGui/QHoverEvent>
 
34
#include <QtCore/QTextStream>
 
35
#include <KLocale>
 
36
 
 
37
namespace Oxygen
 
38
{
 
39
 
 
40
    //_______________________________________________
 
41
    AnimationConfigWidget::AnimationConfigWidget( QWidget* parent ):
 
42
        QWidget( parent ),
 
43
        _changed( false ),
 
44
        row_(0)
 
45
    {
 
46
 
 
47
        ui.setupUi( this );
 
48
        QGridLayout* layout( qobject_cast<QGridLayout*>( AnimationConfigWidget::layout() ) );
 
49
        row_ = layout->rowCount();
 
50
 
 
51
        setupItem( layout, _genericAnimations = new GenericAnimationConfigItem( this,
 
52
            i18n("Focus, mouseover and widget state transition"),
 
53
            i18n("Configure widgets' focus and mouseover highlight animation, as well as widget enabled/disabled state transition") ) );
 
54
 
 
55
        setupItem( layout, _toolBarAnimations = new FollowMouseAnimationConfigItem( this,
 
56
            i18n("Toolbar highlight" ),
 
57
            i18n("Configure toolbars' mouseover highlight animation" ) ) );
 
58
        _toolBarAnimations->hideDurationSpinBox();
 
59
 
 
60
        setupItem( layout, _menuBarAnimations = new FollowMouseAnimationConfigItem( this,
 
61
            i18n("Menu bar highlight" ),
 
62
            i18n("Configure menu bars' mouseover highlight animation" ) ) );
 
63
 
 
64
        setupItem( layout, _menuAnimations = new FollowMouseAnimationConfigItem( this,
 
65
            i18n("Menu highlight" ),
 
66
            i18n("Configure menus' mouseover highlight animation" ) ) );
 
67
 
 
68
        setupItem( layout, _progressBarAnimations = new GenericAnimationConfigItem( this,
 
69
            i18n( "Progress bar animation" ),
 
70
            i18n( "Configure progress bars' steps animation" ) ) );
 
71
 
 
72
        setupItem( layout, _stackedWidgetAnimations = new GenericAnimationConfigItem( this,
 
73
            i18n( "Tab transitions" ), i18n( "Configure fading transition between tabs" ) ) );
 
74
 
 
75
        setupItem( layout, _labelAnimations = new GenericAnimationConfigItem( this,
 
76
            i18n( "Label transitions" ), i18n( "Configure fading transition when a label's text is changed" ) ) );
 
77
 
 
78
        setupItem( layout, _lineEditAnimations = new GenericAnimationConfigItem( this,
 
79
            i18n( "Text editor transitions" ), i18n( "Configure fading transition when an editor's text is changed" ) ) );
 
80
 
 
81
        setupItem( layout, _comboBoxAnimations = new GenericAnimationConfigItem( this,
 
82
            i18n( "Combo box transitions" ), i18n( "Configure fading transition when a combo box's selected choice is changed" ) ) );
 
83
 
 
84
        // add a separator
 
85
        QFrame* frame = new QFrame( this );
 
86
        frame->setFrameStyle( QFrame::HLine|QFrame::Sunken );
 
87
        layout->addWidget( frame, row_, 0, 1, 2 );
 
88
        ++row_;
 
89
 
 
90
        // progress bar busy animation
 
91
        setupItem( layout, _progressBarBusyAnimations = new GenericAnimationConfigItem( this,
 
92
            i18n( "Busy indicator steps" ),
 
93
            i18n( "Configure progress bars' busy indicator animation" ) ) );
 
94
 
 
95
 
 
96
        // add spacers to the first column, previous row to finalize layout
 
97
        layout->addItem( new QSpacerItem( 25, 0 ), row_-1, 0, 1, 1 );
 
98
 
 
99
        // add vertical spacer
 
100
        layout->addItem( new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ), row_, 1, 1, 1 );
 
101
        ++row_;
 
102
 
 
103
        connect( ui.animationsEnabled, SIGNAL( toggled( bool ) ), SLOT( updateChanged() ) );
 
104
        foreach( AnimationConfigItem* item, findChildren<AnimationConfigItem*>() )
 
105
        {
 
106
            if( item != _progressBarBusyAnimations )
 
107
            {
 
108
                item->QWidget::setEnabled( false );
 
109
                connect( ui.animationsEnabled, SIGNAL( toggled( bool ) ), item, SLOT( setEnabled( bool ) ) );
 
110
            }
 
111
        }
 
112
 
 
113
    }
 
114
 
 
115
    //_______________________________________________
 
116
    void AnimationConfigWidget::load( void )
 
117
    {
 
118
 
 
119
        ui.animationsEnabled->setChecked( StyleConfigData::animationsEnabled() );
 
120
        _genericAnimations->setEnabled( StyleConfigData::genericAnimationsEnabled() );
 
121
        _genericAnimations->setDuration( StyleConfigData::genericAnimationsDuration() );
 
122
 
 
123
        _toolBarAnimations->setEnabled( StyleConfigData::toolBarAnimationType() != StyleConfigData::TB_NONE );
 
124
        _toolBarAnimations->setDuration( StyleConfigData::genericAnimationsDuration() );
 
125
        _toolBarAnimations->setFollowMouseDuration( StyleConfigData::toolBarAnimationsDuration() );
 
126
 
 
127
        switch( StyleConfigData::toolBarAnimationType() )
 
128
        {
 
129
            case StyleConfigData::TB_FOLLOW_MOUSE:
 
130
            _toolBarAnimations->setType( 1 );
 
131
            break;
 
132
 
 
133
            case StyleConfigData::TB_FADE:
 
134
            default:
 
135
            _toolBarAnimations->setType( 0 );
 
136
            break;
 
137
        }
 
138
 
 
139
        _menuBarAnimations->setEnabled( StyleConfigData::menuBarAnimationType() != StyleConfigData::MB_NONE );
 
140
        _menuBarAnimations->setDuration( StyleConfigData::menuBarAnimationsDuration() );
 
141
        _menuBarAnimations->setFollowMouseDuration( StyleConfigData::menuBarFollowMouseAnimationsDuration() );
 
142
        switch( StyleConfigData::menuBarAnimationType() )
 
143
        {
 
144
            case StyleConfigData::MB_FOLLOW_MOUSE:
 
145
            _menuBarAnimations->setType( 1 );
 
146
            break;
 
147
 
 
148
            case StyleConfigData::MB_FADE:
 
149
            default:
 
150
            _menuBarAnimations->setType( 0 );
 
151
            break;
 
152
        }
 
153
 
 
154
        _menuAnimations->setEnabled( StyleConfigData::menuAnimationType() != StyleConfigData::ME_NONE );
 
155
        _menuAnimations->setDuration( StyleConfigData::menuAnimationsDuration() );
 
156
        _menuAnimations->setFollowMouseDuration( StyleConfigData::menuFollowMouseAnimationsDuration() );
 
157
        switch( StyleConfigData::menuAnimationType() )
 
158
        {
 
159
            case StyleConfigData::ME_FOLLOW_MOUSE:
 
160
            _menuAnimations->setType( 1 );
 
161
            break;
 
162
 
 
163
            case StyleConfigData::ME_FADE:
 
164
            default:
 
165
            _menuAnimations->setType( 0 );
 
166
            break;
 
167
        }
 
168
 
 
169
        _progressBarAnimations->setEnabled( StyleConfigData::progressBarAnimationsEnabled() );
 
170
        _progressBarAnimations->setDuration( StyleConfigData::progressBarAnimationsDuration() );
 
171
 
 
172
        _progressBarBusyAnimations->setEnabled( StyleConfigData::progressBarAnimated() );
 
173
        _progressBarBusyAnimations->setDuration( StyleConfigData::progressBarBusyStepDuration() );
 
174
 
 
175
        _stackedWidgetAnimations->setEnabled( StyleConfigData::stackedWidgetTransitionsEnabled() );
 
176
        _stackedWidgetAnimations->setDuration( StyleConfigData::stackedWidgetTransitionsDuration() );
 
177
 
 
178
        _labelAnimations->setEnabled( StyleConfigData::labelTransitionsEnabled() );
 
179
        _labelAnimations->setDuration( StyleConfigData::labelTransitionsDuration() );
 
180
 
 
181
        _lineEditAnimations->setEnabled( StyleConfigData::lineEditTransitionsEnabled() );
 
182
        _lineEditAnimations->setDuration( StyleConfigData::lineEditTransitionsDuration() );
 
183
 
 
184
        _comboBoxAnimations->setEnabled( StyleConfigData::comboBoxTransitionsEnabled() );
 
185
        _comboBoxAnimations->setDuration( StyleConfigData::comboBoxTransitionsDuration() );
 
186
    }
 
187
 
 
188
    //_______________________________________________
 
189
    void AnimationConfigWidget::save( void )
 
190
    {
 
191
 
 
192
        StyleConfigData::setAnimationsEnabled( ui.animationsEnabled->isChecked() );
 
193
        StyleConfigData::setGenericAnimationsEnabled( _genericAnimations->enabled() );
 
194
        StyleConfigData::setGenericAnimationsDuration( _genericAnimations->duration() );
 
195
 
 
196
        StyleConfigData::setToolBarAnimationsDuration( _toolBarAnimations->followMouseDuration() );
 
197
        if( !_toolBarAnimations->enabled() ) StyleConfigData::setToolBarAnimationType( StyleConfigData::TB_NONE );
 
198
        else if( _toolBarAnimations->type() == 1 ) StyleConfigData::setToolBarAnimationType( StyleConfigData::TB_FOLLOW_MOUSE );
 
199
        else StyleConfigData::setToolBarAnimationType( StyleConfigData::TB_FADE );
 
200
 
 
201
        StyleConfigData::setMenuBarAnimationsDuration( _menuBarAnimations->duration() );
 
202
        StyleConfigData::setMenuBarFollowMouseAnimationsDuration( _menuBarAnimations->followMouseDuration() );
 
203
        if( !_menuBarAnimations->enabled() ) StyleConfigData::setMenuBarAnimationType( StyleConfigData::MB_NONE );
 
204
        else if( _menuBarAnimations->type() == 1 ) StyleConfigData::setMenuBarAnimationType( StyleConfigData::MB_FOLLOW_MOUSE );
 
205
        else StyleConfigData::setMenuBarAnimationType( StyleConfigData::MB_FADE );
 
206
 
 
207
        StyleConfigData::setMenuAnimationsDuration( _menuAnimations->duration() );
 
208
        StyleConfigData::setMenuFollowMouseAnimationsDuration( _menuAnimations->followMouseDuration() );
 
209
        if( !_menuAnimations->enabled() ) StyleConfigData::setMenuAnimationType( StyleConfigData::ME_NONE );
 
210
        else if( _menuAnimations->type() == 1 ) StyleConfigData::setMenuAnimationType( StyleConfigData::ME_FOLLOW_MOUSE );
 
211
        else StyleConfigData::setMenuAnimationType( StyleConfigData::ME_FADE );
 
212
 
 
213
        StyleConfigData::setProgressBarAnimationsEnabled( _progressBarAnimations->enabled() );
 
214
        StyleConfigData::setProgressBarAnimationsDuration( _progressBarAnimations->duration() );
 
215
 
 
216
        StyleConfigData::setProgressBarAnimated( _progressBarBusyAnimations->enabled() );
 
217
        StyleConfigData::setProgressBarBusyStepDuration( _progressBarBusyAnimations->duration() );
 
218
 
 
219
        StyleConfigData::setStackedWidgetTransitionsEnabled( _stackedWidgetAnimations->enabled() );
 
220
        StyleConfigData::setStackedWidgetTransitionsDuration( _stackedWidgetAnimations->duration() );
 
221
 
 
222
        StyleConfigData::setLabelTransitionsEnabled( _labelAnimations->enabled() );
 
223
        StyleConfigData::setLabelTransitionsDuration( _labelAnimations->duration() );
 
224
 
 
225
        StyleConfigData::setLineEditTransitionsEnabled( _lineEditAnimations->enabled() );
 
226
        StyleConfigData::setLineEditTransitionsDuration( _lineEditAnimations->duration() );
 
227
 
 
228
        StyleConfigData::setComboBoxTransitionsEnabled( _comboBoxAnimations->enabled() );
 
229
        StyleConfigData::setComboBoxTransitionsDuration( _comboBoxAnimations->duration() );
 
230
        setChanged( false );
 
231
 
 
232
    }
 
233
 
 
234
    //_______________________________________________
 
235
    void AnimationConfigWidget::updateChanged( void )
 
236
    {
 
237
 
 
238
        bool modified( false );
 
239
        if( ui.animationsEnabled->isChecked() != StyleConfigData::animationsEnabled() ) modified = true;
 
240
        else if( _genericAnimations->enabled() != StyleConfigData::genericAnimationsEnabled() ) modified = true;
 
241
        else if( _genericAnimations->duration() != StyleConfigData::genericAnimationsDuration() ) modified = true;
 
242
 
 
243
        else if( _toolBarAnimations->duration() != StyleConfigData::genericAnimationsDuration() ) modified = true;
 
244
        else if( _toolBarAnimations->followMouseDuration() != StyleConfigData::toolBarAnimationsDuration() ) modified = true;
 
245
        else if( StyleConfigData::toolBarAnimationType() == StyleConfigData::TB_NONE && _toolBarAnimations->enabled() ) modified = true;
 
246
        else if( StyleConfigData::toolBarAnimationType() == StyleConfigData::TB_FOLLOW_MOUSE && !( _toolBarAnimations->type() == 1 && _toolBarAnimations->enabled() ) ) modified = true;
 
247
        else if( StyleConfigData::toolBarAnimationType() == StyleConfigData::TB_FADE && !( _toolBarAnimations->type() == 0 && _toolBarAnimations->enabled() )) modified = true;
 
248
 
 
249
        else if( _menuBarAnimations->duration() != StyleConfigData::menuBarAnimationsDuration() ) modified = true;
 
250
        else if( _menuBarAnimations->followMouseDuration() != StyleConfigData::menuBarFollowMouseAnimationsDuration() ) modified = true;
 
251
        else if( StyleConfigData::menuBarAnimationType() == StyleConfigData::MB_NONE && _menuBarAnimations->enabled() ) modified = true;
 
252
        else if( StyleConfigData::menuBarAnimationType() == StyleConfigData::MB_FOLLOW_MOUSE && !( _menuBarAnimations->type() == 1 && _menuBarAnimations->enabled() ) ) modified = true;
 
253
        else if( StyleConfigData::menuBarAnimationType() == StyleConfigData::MB_FADE && !( _menuBarAnimations->type() == 0 && _menuBarAnimations->enabled() ) ) modified = true;
 
254
 
 
255
        else if( _menuAnimations->duration() != StyleConfigData::menuAnimationsDuration() ) modified = true;
 
256
        else if( _menuAnimations->followMouseDuration() != StyleConfigData::menuFollowMouseAnimationsDuration() ) modified = true;
 
257
        else if( StyleConfigData::menuAnimationType() == StyleConfigData::ME_NONE && _menuAnimations->enabled() ) modified = true;
 
258
        else if( StyleConfigData::menuAnimationType() == StyleConfigData::ME_FOLLOW_MOUSE && !( _menuAnimations->type() == 1 && _menuAnimations->enabled() ) ) modified = true;
 
259
        else if( StyleConfigData::menuAnimationType() == StyleConfigData::ME_FADE && !( _menuAnimations->type() == 0 && _menuAnimations->enabled() ) ) modified = true;
 
260
 
 
261
        else if( _progressBarAnimations->enabled() != StyleConfigData::progressBarAnimationsEnabled() ) modified = true;
 
262
        else if( _progressBarAnimations->duration() != StyleConfigData::progressBarAnimationsDuration() ) modified = true;
 
263
 
 
264
        else if( _progressBarBusyAnimations->enabled() != StyleConfigData::progressBarAnimated() ) modified = true;
 
265
        else if( _progressBarBusyAnimations->duration() != StyleConfigData::progressBarBusyStepDuration() ) modified = true;
 
266
 
 
267
        else if( _stackedWidgetAnimations->enabled() != StyleConfigData::stackedWidgetTransitionsEnabled() ) modified = true;
 
268
        else if( _stackedWidgetAnimations->duration() != StyleConfigData::stackedWidgetTransitionsDuration() ) modified = true;
 
269
 
 
270
        else if( _labelAnimations->enabled() != StyleConfigData::labelTransitionsEnabled() ) modified = true;
 
271
        else if( _labelAnimations->duration() != StyleConfigData::labelTransitionsDuration() ) modified = true;
 
272
 
 
273
        else if( _lineEditAnimations->enabled() != StyleConfigData::lineEditTransitionsEnabled() ) modified = true;
 
274
        else if( _lineEditAnimations->duration() != StyleConfigData::lineEditTransitionsDuration() ) modified = true;
 
275
 
 
276
        else if( _comboBoxAnimations->enabled() != StyleConfigData::comboBoxTransitionsEnabled() ) modified = true;
 
277
        else if( _comboBoxAnimations->duration() != StyleConfigData::comboBoxTransitionsDuration() ) modified = true;
 
278
 
 
279
        setChanged( modified );
 
280
 
 
281
    }
 
282
 
 
283
    //_______________________________________________
 
284
    void AnimationConfigWidget::updateItems( bool state )
 
285
    {
 
286
        if( !state ) return;
 
287
        foreach( AnimationConfigItem* item, findChildren<AnimationConfigItem*>() )
 
288
        { if( item->configurationWidget()->isVisible() ) item->configurationButton()->setChecked( false ); }
 
289
    }
 
290
 
 
291
    //_______________________________________________
 
292
    void AnimationConfigWidget::setupItem( QGridLayout* layout, AnimationConfigItem* item )
 
293
    {
 
294
        layout->addWidget( item, row_, 0, 1, 2 );
 
295
        ++row_;
 
296
 
 
297
        connect( item->configurationButton(), SIGNAL( toggled( bool ) ), SLOT( updateItems( bool ) ) );
 
298
 
 
299
        item->initializeConfigurationWidget( this );
 
300
        layout->addWidget( item->configurationWidget(), row_, 1, 1, 1 );
 
301
        ++row_;
 
302
 
 
303
        item->configurationWidget()->setVisible( false );
 
304
        connect( item->configurationButton(), SIGNAL( toggled( bool ) ), SIGNAL( layoutChanged( void ) ) );
 
305
        connect( item, SIGNAL( changed( void ) ), SLOT( updateChanged( void ) ) );
 
306
    }
 
307
 
 
308
}