File indexing completed on 2024-05-19 05:35:22
0001 ////////////////////////////////////////////////////////////////////////////// 0002 // oxygenanimationconfigwidget.cpp 0003 // animation configuration widget 0004 // ------------------- 0005 // 0006 // SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0007 // 0008 // SPDX-License-Identifier: MIT 0009 ////////////////////////////////////////////////////////////////////////////// 0010 0011 #include "oxygenanimationconfigwidget.h" 0012 #include "oxygenanimationconfigitem.h" 0013 #include "oxygenfollowmouseanimationconfigitem.h" 0014 #include "oxygengenericanimationconfigitem.h" 0015 #include "oxygenstyleconfigdata.h" 0016 0017 #include <KLocalizedString> 0018 #include <QButtonGroup> 0019 #include <QHoverEvent> 0020 #include <QTextStream> 0021 0022 namespace Oxygen 0023 { 0024 //_______________________________________________ 0025 AnimationConfigWidget::AnimationConfigWidget(QWidget *parent) 0026 : BaseAnimationConfigWidget(parent) 0027 { 0028 QGridLayout *layout(qobject_cast<QGridLayout *>(BaseAnimationConfigWidget::layout())); 0029 0030 setupItem(layout, 0031 _genericAnimations = new GenericAnimationConfigItem( 0032 this, 0033 i18n("Focus, mouseover and widget state transition"), 0034 i18n("Configure widgets' focus and mouseover highlight animation, as well as widget enabled/disabled state transition"))); 0035 0036 setupItem(layout, 0037 _toolBarAnimations = 0038 new FollowMouseAnimationConfigItem(this, i18n("Toolbar highlight"), i18n("Configure toolbars' mouseover highlight animation"))); 0039 _toolBarAnimations->hideDurationSpinBox(); 0040 0041 setupItem(layout, 0042 _menuBarAnimations = 0043 new FollowMouseAnimationConfigItem(this, i18n("Menu bar highlight"), i18n("Configure menu bars' mouseover highlight animation"))); 0044 0045 setupItem(layout, 0046 _menuAnimations = new FollowMouseAnimationConfigItem(this, i18n("Menu highlight"), i18n("Configure menus' mouseover highlight animation"))); 0047 0048 setupItem(layout, 0049 _progressBarAnimations = new GenericAnimationConfigItem(this, i18n("Progress bar animation"), i18n("Configure progress bars' steps animation"))); 0050 0051 setupItem(layout, 0052 _stackedWidgetAnimations = new GenericAnimationConfigItem(this, i18n("Tab transitions"), i18n("Configure fading transition between tabs"))); 0053 0054 setupItem(layout, 0055 _labelAnimations = 0056 new GenericAnimationConfigItem(this, i18n("Label transitions"), i18n("Configure fading transition when a label's text is changed"))); 0057 0058 setupItem(layout, 0059 _lineEditAnimations = 0060 new GenericAnimationConfigItem(this, i18n("Text editor transitions"), i18n("Configure fading transition when an editor's text is changed"))); 0061 0062 setupItem(layout, 0063 _comboBoxAnimations = new GenericAnimationConfigItem(this, 0064 i18n("Combo box transitions"), 0065 i18n("Configure fading transition when a combo box's selected choice is changed"))); 0066 0067 // add a separator 0068 QFrame *frame = new QFrame(this); 0069 frame->setFrameStyle(QFrame::HLine | QFrame::Sunken); 0070 layout->addWidget(frame, _row, 0, 1, 2); 0071 ++_row; 0072 0073 // progress bar busy animation 0074 setupItem(layout, 0075 _progressBarBusyAnimations = 0076 new GenericAnimationConfigItem(this, i18n("Progress bar busy indicator"), i18n("Configure progress bars' busy indicator animation"))); 0077 0078 // add spacers to the first column, previous row to finalize layout 0079 layout->addItem(new QSpacerItem(25, 0), _row - 1, 0, 1, 1); 0080 0081 // add vertical spacer 0082 layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), _row, 1, 1, 1); 0083 ++_row; 0084 0085 connect(animationsEnabled(), SIGNAL(toggled(bool)), SLOT(updateChanged())); 0086 const auto children = findChildren<AnimationConfigItem *>(); 0087 for (AnimationConfigItem *item : children) { 0088 if (item != _progressBarBusyAnimations) { 0089 item->QWidget::setEnabled(false); 0090 connect(animationsEnabled(), SIGNAL(toggled(bool)), item, SLOT(setEnabled(bool))); 0091 } 0092 } 0093 } 0094 0095 //_______________________________________________ 0096 void AnimationConfigWidget::load(void) 0097 { 0098 animationsEnabled()->setChecked(StyleConfigData::animationsEnabled()); 0099 _genericAnimations->setEnabled(StyleConfigData::genericAnimationsEnabled()); 0100 _genericAnimations->setDuration(StyleConfigData::genericAnimationsDuration()); 0101 0102 _toolBarAnimations->setEnabled(StyleConfigData::toolBarAnimationType() != StyleConfigData::TB_NONE); 0103 _toolBarAnimations->setDuration(StyleConfigData::genericAnimationsDuration()); 0104 _toolBarAnimations->setFollowMouseDuration(StyleConfigData::toolBarAnimationsDuration()); 0105 0106 switch (StyleConfigData::toolBarAnimationType()) { 0107 case StyleConfigData::TB_FOLLOW_MOUSE: 0108 _toolBarAnimations->setType(1); 0109 break; 0110 0111 case StyleConfigData::TB_FADE: 0112 default: 0113 _toolBarAnimations->setType(0); 0114 break; 0115 } 0116 0117 _menuBarAnimations->setEnabled(StyleConfigData::menuBarAnimationType() != StyleConfigData::MB_NONE); 0118 _menuBarAnimations->setDuration(StyleConfigData::menuBarAnimationsDuration()); 0119 _menuBarAnimations->setFollowMouseDuration(StyleConfigData::menuBarFollowMouseAnimationsDuration()); 0120 switch (StyleConfigData::menuBarAnimationType()) { 0121 case StyleConfigData::MB_FOLLOW_MOUSE: 0122 _menuBarAnimations->setType(1); 0123 break; 0124 0125 case StyleConfigData::MB_FADE: 0126 default: 0127 _menuBarAnimations->setType(0); 0128 break; 0129 } 0130 0131 _menuAnimations->setEnabled(StyleConfigData::menuAnimationType() != StyleConfigData::ME_NONE); 0132 _menuAnimations->setDuration(StyleConfigData::menuAnimationsDuration()); 0133 _menuAnimations->setFollowMouseDuration(StyleConfigData::menuFollowMouseAnimationsDuration()); 0134 switch (StyleConfigData::menuAnimationType()) { 0135 case StyleConfigData::ME_FOLLOW_MOUSE: 0136 _menuAnimations->setType(1); 0137 break; 0138 0139 case StyleConfigData::ME_FADE: 0140 default: 0141 _menuAnimations->setType(0); 0142 break; 0143 } 0144 0145 _progressBarAnimations->setEnabled(StyleConfigData::progressBarAnimationsEnabled()); 0146 _progressBarAnimations->setDuration(StyleConfigData::progressBarAnimationsDuration()); 0147 0148 _progressBarBusyAnimations->setEnabled(StyleConfigData::progressBarAnimated()); 0149 _progressBarBusyAnimations->setDuration(StyleConfigData::progressBarBusyStepDuration()); 0150 0151 _stackedWidgetAnimations->setEnabled(StyleConfigData::stackedWidgetTransitionsEnabled()); 0152 _stackedWidgetAnimations->setDuration(StyleConfigData::stackedWidgetTransitionsDuration()); 0153 0154 _labelAnimations->setEnabled(StyleConfigData::labelTransitionsEnabled()); 0155 _labelAnimations->setDuration(StyleConfigData::labelTransitionsDuration()); 0156 0157 _lineEditAnimations->setEnabled(StyleConfigData::lineEditTransitionsEnabled()); 0158 _lineEditAnimations->setDuration(StyleConfigData::lineEditTransitionsDuration()); 0159 0160 _comboBoxAnimations->setEnabled(StyleConfigData::comboBoxTransitionsEnabled()); 0161 _comboBoxAnimations->setDuration(StyleConfigData::comboBoxTransitionsDuration()); 0162 } 0163 0164 //_______________________________________________ 0165 void AnimationConfigWidget::save(void) 0166 { 0167 StyleConfigData::setAnimationsEnabled(animationsEnabled()->isChecked()); 0168 StyleConfigData::setGenericAnimationsEnabled(_genericAnimations->enabled()); 0169 StyleConfigData::setGenericAnimationsDuration(_genericAnimations->duration()); 0170 0171 StyleConfigData::setToolBarAnimationsDuration(_toolBarAnimations->followMouseDuration()); 0172 if (!_toolBarAnimations->enabled()) 0173 StyleConfigData::setToolBarAnimationType(StyleConfigData::TB_NONE); 0174 else if (_toolBarAnimations->type() == 1) 0175 StyleConfigData::setToolBarAnimationType(StyleConfigData::TB_FOLLOW_MOUSE); 0176 else 0177 StyleConfigData::setToolBarAnimationType(StyleConfigData::TB_FADE); 0178 0179 StyleConfigData::setMenuBarAnimationsDuration(_menuBarAnimations->duration()); 0180 StyleConfigData::setMenuBarFollowMouseAnimationsDuration(_menuBarAnimations->followMouseDuration()); 0181 if (!_menuBarAnimations->enabled()) 0182 StyleConfigData::setMenuBarAnimationType(StyleConfigData::MB_NONE); 0183 else if (_menuBarAnimations->type() == 1) 0184 StyleConfigData::setMenuBarAnimationType(StyleConfigData::MB_FOLLOW_MOUSE); 0185 else 0186 StyleConfigData::setMenuBarAnimationType(StyleConfigData::MB_FADE); 0187 0188 StyleConfigData::setMenuAnimationsDuration(_menuAnimations->duration()); 0189 StyleConfigData::setMenuFollowMouseAnimationsDuration(_menuAnimations->followMouseDuration()); 0190 if (!_menuAnimations->enabled()) 0191 StyleConfigData::setMenuAnimationType(StyleConfigData::ME_NONE); 0192 else if (_menuAnimations->type() == 1) 0193 StyleConfigData::setMenuAnimationType(StyleConfigData::ME_FOLLOW_MOUSE); 0194 else 0195 StyleConfigData::setMenuAnimationType(StyleConfigData::ME_FADE); 0196 0197 StyleConfigData::setProgressBarAnimationsEnabled(_progressBarAnimations->enabled()); 0198 StyleConfigData::setProgressBarAnimationsDuration(_progressBarAnimations->duration()); 0199 0200 StyleConfigData::setProgressBarAnimated(_progressBarBusyAnimations->enabled()); 0201 StyleConfigData::setProgressBarBusyStepDuration(_progressBarBusyAnimations->duration()); 0202 0203 StyleConfigData::setStackedWidgetTransitionsEnabled(_stackedWidgetAnimations->enabled()); 0204 StyleConfigData::setStackedWidgetTransitionsDuration(_stackedWidgetAnimations->duration()); 0205 0206 StyleConfigData::setLabelTransitionsEnabled(_labelAnimations->enabled()); 0207 StyleConfigData::setLabelTransitionsDuration(_labelAnimations->duration()); 0208 0209 StyleConfigData::setLineEditTransitionsEnabled(_lineEditAnimations->enabled()); 0210 StyleConfigData::setLineEditTransitionsDuration(_lineEditAnimations->duration()); 0211 0212 StyleConfigData::setComboBoxTransitionsEnabled(_comboBoxAnimations->enabled()); 0213 StyleConfigData::setComboBoxTransitionsDuration(_comboBoxAnimations->duration()); 0214 setChanged(false); 0215 } 0216 0217 //_______________________________________________ 0218 void AnimationConfigWidget::updateChanged(void) 0219 { 0220 bool modified(false); 0221 if (animationsEnabled()->isChecked() != StyleConfigData::animationsEnabled()) 0222 modified = true; 0223 else if (_genericAnimations->enabled() != StyleConfigData::genericAnimationsEnabled()) 0224 modified = true; 0225 else if (_genericAnimations->duration() != StyleConfigData::genericAnimationsDuration()) 0226 modified = true; 0227 0228 else if (_toolBarAnimations->duration() != StyleConfigData::genericAnimationsDuration()) 0229 modified = true; 0230 else if (_toolBarAnimations->followMouseDuration() != StyleConfigData::toolBarAnimationsDuration()) 0231 modified = true; 0232 else if (StyleConfigData::toolBarAnimationType() == StyleConfigData::TB_NONE && _toolBarAnimations->enabled()) 0233 modified = true; 0234 else if (StyleConfigData::toolBarAnimationType() == StyleConfigData::TB_FOLLOW_MOUSE && !(_toolBarAnimations->type() == 1 && _toolBarAnimations->enabled())) 0235 modified = true; 0236 else if (StyleConfigData::toolBarAnimationType() == StyleConfigData::TB_FADE && !(_toolBarAnimations->type() == 0 && _toolBarAnimations->enabled())) 0237 modified = true; 0238 0239 else if (_menuBarAnimations->duration() != StyleConfigData::menuBarAnimationsDuration()) 0240 modified = true; 0241 else if (_menuBarAnimations->followMouseDuration() != StyleConfigData::menuBarFollowMouseAnimationsDuration()) 0242 modified = true; 0243 else if (StyleConfigData::menuBarAnimationType() == StyleConfigData::MB_NONE && _menuBarAnimations->enabled()) 0244 modified = true; 0245 else if (StyleConfigData::menuBarAnimationType() == StyleConfigData::MB_FOLLOW_MOUSE && !(_menuBarAnimations->type() == 1 && _menuBarAnimations->enabled())) 0246 modified = true; 0247 else if (StyleConfigData::menuBarAnimationType() == StyleConfigData::MB_FADE && !(_menuBarAnimations->type() == 0 && _menuBarAnimations->enabled())) 0248 modified = true; 0249 0250 else if (_menuAnimations->duration() != StyleConfigData::menuAnimationsDuration()) 0251 modified = true; 0252 else if (_menuAnimations->followMouseDuration() != StyleConfigData::menuFollowMouseAnimationsDuration()) 0253 modified = true; 0254 else if (StyleConfigData::menuAnimationType() == StyleConfigData::ME_NONE && _menuAnimations->enabled()) 0255 modified = true; 0256 else if (StyleConfigData::menuAnimationType() == StyleConfigData::ME_FOLLOW_MOUSE && !(_menuAnimations->type() == 1 && _menuAnimations->enabled())) 0257 modified = true; 0258 else if (StyleConfigData::menuAnimationType() == StyleConfigData::ME_FADE && !(_menuAnimations->type() == 0 && _menuAnimations->enabled())) 0259 modified = true; 0260 0261 else if (_progressBarAnimations->enabled() != StyleConfigData::progressBarAnimationsEnabled()) 0262 modified = true; 0263 else if (_progressBarAnimations->duration() != StyleConfigData::progressBarAnimationsDuration()) 0264 modified = true; 0265 0266 else if (_progressBarBusyAnimations->enabled() != StyleConfigData::progressBarAnimated()) 0267 modified = true; 0268 else if (_progressBarBusyAnimations->duration() != StyleConfigData::progressBarBusyStepDuration()) 0269 modified = true; 0270 0271 else if (_stackedWidgetAnimations->enabled() != StyleConfigData::stackedWidgetTransitionsEnabled()) 0272 modified = true; 0273 else if (_stackedWidgetAnimations->duration() != StyleConfigData::stackedWidgetTransitionsDuration()) 0274 modified = true; 0275 0276 else if (_labelAnimations->enabled() != StyleConfigData::labelTransitionsEnabled()) 0277 modified = true; 0278 else if (_labelAnimations->duration() != StyleConfigData::labelTransitionsDuration()) 0279 modified = true; 0280 0281 else if (_lineEditAnimations->enabled() != StyleConfigData::lineEditTransitionsEnabled()) 0282 modified = true; 0283 else if (_lineEditAnimations->duration() != StyleConfigData::lineEditTransitionsDuration()) 0284 modified = true; 0285 0286 else if (_comboBoxAnimations->enabled() != StyleConfigData::comboBoxTransitionsEnabled()) 0287 modified = true; 0288 else if (_comboBoxAnimations->duration() != StyleConfigData::comboBoxTransitionsDuration()) 0289 modified = true; 0290 0291 setChanged(modified); 0292 } 0293 }