File indexing completed on 2024-05-05 05:35:32

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