1
//////////////////////////////////////////////////////////////////////////////
2
// oxygenanimationconfigwidget.cpp
3
// animation configuration widget
6
// Copyright (c) 2010 Hugo Pereira Da Costa <hugo@oxygen-icons.org>
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:
15
// The above copyright notice and this permission notice shall be included in
16
// all copies or substantial portions of the Software.
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
25
//////////////////////////////////////////////////////////////////////////////
27
#include "oxygenanimationconfigwidget.h"
28
#include "oxygenanimationconfigwidget.moc"
29
#include "oxygenanimationconfigitem.h"
30
#include "oxygenstyleconfigdata.h"
32
#include <QtGui/QButtonGroup>
33
#include <QtGui/QHoverEvent>
34
#include <QtCore/QTextStream>
40
//_______________________________________________
41
AnimationConfigWidget::AnimationConfigWidget( QWidget* parent ):
48
QGridLayout* layout( qobject_cast<QGridLayout*>( AnimationConfigWidget::layout() ) );
49
row_ = layout->rowCount();
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") ) );
55
setupItem( layout, _toolBarAnimations = new FollowMouseAnimationConfigItem( this,
56
i18n("Toolbar highlight" ),
57
i18n("Configure toolbars' mouseover highlight animation" ) ) );
58
_toolBarAnimations->hideDurationSpinBox();
60
setupItem( layout, _menuBarAnimations = new FollowMouseAnimationConfigItem( this,
61
i18n("Menu bar highlight" ),
62
i18n("Configure menu bars' mouseover highlight animation" ) ) );
64
setupItem( layout, _menuAnimations = new FollowMouseAnimationConfigItem( this,
65
i18n("Menu highlight" ),
66
i18n("Configure menus' mouseover highlight animation" ) ) );
68
setupItem( layout, _progressBarAnimations = new GenericAnimationConfigItem( this,
69
i18n( "Progress bar animation" ),
70
i18n( "Configure progress bars' steps animation" ) ) );
72
setupItem( layout, _stackedWidgetAnimations = new GenericAnimationConfigItem( this,
73
i18n( "Tab transitions" ), i18n( "Configure fading transition between tabs" ) ) );
75
setupItem( layout, _labelAnimations = new GenericAnimationConfigItem( this,
76
i18n( "Label transitions" ), i18n( "Configure fading transition when a label's text is changed" ) ) );
78
setupItem( layout, _lineEditAnimations = new GenericAnimationConfigItem( this,
79
i18n( "Text editor transitions" ), i18n( "Configure fading transition when an editor's text is changed" ) ) );
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" ) ) );
85
QFrame* frame = new QFrame( this );
86
frame->setFrameStyle( QFrame::HLine|QFrame::Sunken );
87
layout->addWidget( frame, row_, 0, 1, 2 );
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" ) ) );
96
// add spacers to the first column, previous row to finalize layout
97
layout->addItem( new QSpacerItem( 25, 0 ), row_-1, 0, 1, 1 );
99
// add vertical spacer
100
layout->addItem( new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ), row_, 1, 1, 1 );
103
connect( ui.animationsEnabled, SIGNAL( toggled( bool ) ), SLOT( updateChanged() ) );
104
foreach( AnimationConfigItem* item, findChildren<AnimationConfigItem*>() )
106
if( item != _progressBarBusyAnimations )
108
item->QWidget::setEnabled( false );
109
connect( ui.animationsEnabled, SIGNAL( toggled( bool ) ), item, SLOT( setEnabled( bool ) ) );
115
//_______________________________________________
116
void AnimationConfigWidget::load( void )
119
ui.animationsEnabled->setChecked( StyleConfigData::animationsEnabled() );
120
_genericAnimations->setEnabled( StyleConfigData::genericAnimationsEnabled() );
121
_genericAnimations->setDuration( StyleConfigData::genericAnimationsDuration() );
123
_toolBarAnimations->setEnabled( StyleConfigData::toolBarAnimationType() != StyleConfigData::TB_NONE );
124
_toolBarAnimations->setDuration( StyleConfigData::genericAnimationsDuration() );
125
_toolBarAnimations->setFollowMouseDuration( StyleConfigData::toolBarAnimationsDuration() );
127
switch( StyleConfigData::toolBarAnimationType() )
129
case StyleConfigData::TB_FOLLOW_MOUSE:
130
_toolBarAnimations->setType( 1 );
133
case StyleConfigData::TB_FADE:
135
_toolBarAnimations->setType( 0 );
139
_menuBarAnimations->setEnabled( StyleConfigData::menuBarAnimationType() != StyleConfigData::MB_NONE );
140
_menuBarAnimations->setDuration( StyleConfigData::menuBarAnimationsDuration() );
141
_menuBarAnimations->setFollowMouseDuration( StyleConfigData::menuBarFollowMouseAnimationsDuration() );
142
switch( StyleConfigData::menuBarAnimationType() )
144
case StyleConfigData::MB_FOLLOW_MOUSE:
145
_menuBarAnimations->setType( 1 );
148
case StyleConfigData::MB_FADE:
150
_menuBarAnimations->setType( 0 );
154
_menuAnimations->setEnabled( StyleConfigData::menuAnimationType() != StyleConfigData::ME_NONE );
155
_menuAnimations->setDuration( StyleConfigData::menuAnimationsDuration() );
156
_menuAnimations->setFollowMouseDuration( StyleConfigData::menuFollowMouseAnimationsDuration() );
157
switch( StyleConfigData::menuAnimationType() )
159
case StyleConfigData::ME_FOLLOW_MOUSE:
160
_menuAnimations->setType( 1 );
163
case StyleConfigData::ME_FADE:
165
_menuAnimations->setType( 0 );
169
_progressBarAnimations->setEnabled( StyleConfigData::progressBarAnimationsEnabled() );
170
_progressBarAnimations->setDuration( StyleConfigData::progressBarAnimationsDuration() );
172
_progressBarBusyAnimations->setEnabled( StyleConfigData::progressBarAnimated() );
173
_progressBarBusyAnimations->setDuration( StyleConfigData::progressBarBusyStepDuration() );
175
_stackedWidgetAnimations->setEnabled( StyleConfigData::stackedWidgetTransitionsEnabled() );
176
_stackedWidgetAnimations->setDuration( StyleConfigData::stackedWidgetTransitionsDuration() );
178
_labelAnimations->setEnabled( StyleConfigData::labelTransitionsEnabled() );
179
_labelAnimations->setDuration( StyleConfigData::labelTransitionsDuration() );
181
_lineEditAnimations->setEnabled( StyleConfigData::lineEditTransitionsEnabled() );
182
_lineEditAnimations->setDuration( StyleConfigData::lineEditTransitionsDuration() );
184
_comboBoxAnimations->setEnabled( StyleConfigData::comboBoxTransitionsEnabled() );
185
_comboBoxAnimations->setDuration( StyleConfigData::comboBoxTransitionsDuration() );
188
//_______________________________________________
189
void AnimationConfigWidget::save( void )
192
StyleConfigData::setAnimationsEnabled( ui.animationsEnabled->isChecked() );
193
StyleConfigData::setGenericAnimationsEnabled( _genericAnimations->enabled() );
194
StyleConfigData::setGenericAnimationsDuration( _genericAnimations->duration() );
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 );
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 );
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 );
213
StyleConfigData::setProgressBarAnimationsEnabled( _progressBarAnimations->enabled() );
214
StyleConfigData::setProgressBarAnimationsDuration( _progressBarAnimations->duration() );
216
StyleConfigData::setProgressBarAnimated( _progressBarBusyAnimations->enabled() );
217
StyleConfigData::setProgressBarBusyStepDuration( _progressBarBusyAnimations->duration() );
219
StyleConfigData::setStackedWidgetTransitionsEnabled( _stackedWidgetAnimations->enabled() );
220
StyleConfigData::setStackedWidgetTransitionsDuration( _stackedWidgetAnimations->duration() );
222
StyleConfigData::setLabelTransitionsEnabled( _labelAnimations->enabled() );
223
StyleConfigData::setLabelTransitionsDuration( _labelAnimations->duration() );
225
StyleConfigData::setLineEditTransitionsEnabled( _lineEditAnimations->enabled() );
226
StyleConfigData::setLineEditTransitionsDuration( _lineEditAnimations->duration() );
228
StyleConfigData::setComboBoxTransitionsEnabled( _comboBoxAnimations->enabled() );
229
StyleConfigData::setComboBoxTransitionsDuration( _comboBoxAnimations->duration() );
234
//_______________________________________________
235
void AnimationConfigWidget::updateChanged( void )
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;
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;
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;
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;
261
else if( _progressBarAnimations->enabled() != StyleConfigData::progressBarAnimationsEnabled() ) modified = true;
262
else if( _progressBarAnimations->duration() != StyleConfigData::progressBarAnimationsDuration() ) modified = true;
264
else if( _progressBarBusyAnimations->enabled() != StyleConfigData::progressBarAnimated() ) modified = true;
265
else if( _progressBarBusyAnimations->duration() != StyleConfigData::progressBarBusyStepDuration() ) modified = true;
267
else if( _stackedWidgetAnimations->enabled() != StyleConfigData::stackedWidgetTransitionsEnabled() ) modified = true;
268
else if( _stackedWidgetAnimations->duration() != StyleConfigData::stackedWidgetTransitionsDuration() ) modified = true;
270
else if( _labelAnimations->enabled() != StyleConfigData::labelTransitionsEnabled() ) modified = true;
271
else if( _labelAnimations->duration() != StyleConfigData::labelTransitionsDuration() ) modified = true;
273
else if( _lineEditAnimations->enabled() != StyleConfigData::lineEditTransitionsEnabled() ) modified = true;
274
else if( _lineEditAnimations->duration() != StyleConfigData::lineEditTransitionsDuration() ) modified = true;
276
else if( _comboBoxAnimations->enabled() != StyleConfigData::comboBoxTransitionsEnabled() ) modified = true;
277
else if( _comboBoxAnimations->duration() != StyleConfigData::comboBoxTransitionsDuration() ) modified = true;
279
setChanged( modified );
283
//_______________________________________________
284
void AnimationConfigWidget::updateItems( bool state )
287
foreach( AnimationConfigItem* item, findChildren<AnimationConfigItem*>() )
288
{ if( item->configurationWidget()->isVisible() ) item->configurationButton()->setChecked( false ); }
291
//_______________________________________________
292
void AnimationConfigWidget::setupItem( QGridLayout* layout, AnimationConfigItem* item )
294
layout->addWidget( item, row_, 0, 1, 2 );
297
connect( item->configurationButton(), SIGNAL( toggled( bool ) ), SLOT( updateItems( bool ) ) );
299
item->initializeConfigurationWidget( this );
300
layout->addWidget( item->configurationWidget(), row_, 1, 1, 1 );
303
item->configurationWidget()->setVisible( false );
304
connect( item->configurationButton(), SIGNAL( toggled( bool ) ), SIGNAL( layoutChanged( void ) ) );
305
connect( item, SIGNAL( changed( void ) ), SLOT( updateChanged( void ) ) );