File indexing completed on 2024-05-19 05:35:16
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 "oxygengenericanimationconfigitem.h" 0014 0015 #include <KLocalizedString> 0016 #include <QButtonGroup> 0017 #include <QHoverEvent> 0018 #include <QTextStream> 0019 0020 namespace Oxygen 0021 { 0022 //_______________________________________________ 0023 AnimationConfigWidget::AnimationConfigWidget(QWidget *parent) 0024 : BaseAnimationConfigWidget(parent) 0025 { 0026 QGridLayout *layout(qobject_cast<QGridLayout *>(BaseAnimationConfigWidget::layout())); 0027 0028 setupItem(layout, 0029 m_buttonAnimations = 0030 new GenericAnimationConfigItem(this, i18n("Button mouseover transition"), i18n("Configure window buttons' mouseover highlight animation"))); 0031 0032 setupItem(layout, 0033 m_shadowAnimations = 0034 new GenericAnimationConfigItem(this, 0035 i18n("Window active state change transitions"), 0036 i18n("Configure fading between window shadow and glow when window's active state is changed"))); 0037 0038 // add spacers to the first column, previous row to finalize layout 0039 layout->addItem(new QSpacerItem(25, 0), _row - 1, 0, 1, 1); 0040 0041 // add vertical spacer 0042 layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), _row, 1, 1, 1); 0043 ++_row; 0044 0045 connect(animationsEnabled(), SIGNAL(toggled(bool)), SLOT(updateChanged())); 0046 0047 const auto children = findChildren<AnimationConfigItem *>(); 0048 for (AnimationConfigItem *item : children) { 0049 item->QWidget::setEnabled(false); 0050 connect(animationsEnabled(), SIGNAL(toggled(bool)), item, SLOT(setEnabled(bool))); 0051 } 0052 } 0053 0054 //_______________________________________________ 0055 void AnimationConfigWidget::load(void) 0056 { 0057 // check configuration 0058 if (!m_internalSettings) 0059 return; 0060 0061 animationsEnabled()->setChecked(m_internalSettings.data()->animationsEnabled()); 0062 0063 m_buttonAnimations->setEnabled(m_internalSettings.data()->buttonAnimationsEnabled()); 0064 m_buttonAnimations->setDuration(m_internalSettings.data()->buttonAnimationsDuration()); 0065 0066 m_shadowAnimations->setEnabled(m_internalSettings.data()->shadowAnimationsEnabled()); 0067 m_shadowAnimations->setDuration(m_internalSettings.data()->shadowAnimationsDuration()); 0068 0069 setChanged(false); 0070 } 0071 0072 //_______________________________________________ 0073 void AnimationConfigWidget::save(void) 0074 { 0075 // check configuration 0076 if (!m_internalSettings) 0077 return; 0078 0079 // save modifications 0080 m_internalSettings.data()->setAnimationsEnabled(animationsEnabled()->isChecked()); 0081 0082 m_internalSettings.data()->setButtonAnimationsEnabled(m_buttonAnimations->enabled()); 0083 m_internalSettings.data()->setButtonAnimationsDuration(m_buttonAnimations->duration()); 0084 0085 m_internalSettings.data()->setShadowAnimationsEnabled(m_shadowAnimations->enabled()); 0086 m_internalSettings.data()->setShadowAnimationsDuration(m_shadowAnimations->duration()); 0087 0088 setChanged(false); 0089 } 0090 0091 //_______________________________________________ 0092 void AnimationConfigWidget::updateChanged(void) 0093 { 0094 // check configuration 0095 if (!m_internalSettings) 0096 return; 0097 0098 // track modifications 0099 bool modified(false); 0100 if (animationsEnabled()->isChecked() != m_internalSettings.data()->animationsEnabled()) 0101 modified = true; 0102 else if (m_buttonAnimations->enabled() != m_internalSettings.data()->buttonAnimationsEnabled()) 0103 modified = true; 0104 else if (m_buttonAnimations->duration() != m_internalSettings.data()->buttonAnimationsDuration()) 0105 modified = true; 0106 0107 else if (m_shadowAnimations->enabled() != m_internalSettings.data()->shadowAnimationsEnabled()) 0108 modified = true; 0109 else if (m_shadowAnimations->duration() != m_internalSettings.data()->shadowAnimationsDuration()) 0110 modified = true; 0111 0112 setChanged(modified); 0113 } 0114 }