File indexing completed on 2024-05-12 17:06:30

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 "oxygenbaseanimationconfigwidget.h"
0012 #include "oxygenanimationconfigitem.h"
0013 
0014 #include "ui_oxygenanimationconfigwidget.h"
0015 
0016 #include <QButtonGroup>
0017 #include <QHoverEvent>
0018 #include <QTextStream>
0019 
0020 namespace Oxygen
0021 {
0022 
0023 //_______________________________________________
0024 BaseAnimationConfigWidget::BaseAnimationConfigWidget(QWidget *parent)
0025     : QWidget(parent)
0026     , ui(new Ui_AnimationConfigWidget())
0027     , _row(0)
0028     , _changed(false)
0029 {
0030     ui->setupUi(this);
0031     QGridLayout *layout(qobject_cast<QGridLayout *>(BaseAnimationConfigWidget::layout()));
0032     _row = layout->rowCount();
0033 }
0034 
0035 //_______________________________________________
0036 BaseAnimationConfigWidget::~BaseAnimationConfigWidget(void)
0037 {
0038     delete ui;
0039 }
0040 
0041 //_______________________________________________
0042 void BaseAnimationConfigWidget::updateItems(bool state)
0043 {
0044     if (!state)
0045         return;
0046     const auto children = findChildren<AnimationConfigItem *>();
0047     for (AnimationConfigItem *item : children) {
0048         if (item->configurationWidget()->isVisible())
0049             item->configurationButton()->setChecked(false);
0050     }
0051 }
0052 
0053 //_______________________________________________
0054 QCheckBox *BaseAnimationConfigWidget::animationsEnabled(void) const
0055 {
0056     return ui->animationsEnabled;
0057 }
0058 
0059 //_______________________________________________
0060 void BaseAnimationConfigWidget::setupItem(QGridLayout *layout, AnimationConfigItem *item)
0061 {
0062     layout->addWidget(item, _row, 0, 1, 2);
0063     ++_row;
0064 
0065     connect(item->configurationButton(), SIGNAL(toggled(bool)), SLOT(updateItems(bool)));
0066 
0067     item->initializeConfigurationWidget(this);
0068     layout->addWidget(item->configurationWidget(), _row, 1, 1, 1);
0069     ++_row;
0070 
0071     item->configurationWidget()->setVisible(false);
0072     connect(item->configurationButton(), SIGNAL(toggled(bool)), SIGNAL(layoutChanged()));
0073     connect(item, SIGNAL(changed()), SLOT(updateChanged()));
0074 }
0075 }