File indexing completed on 2025-02-02 04:11:33

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #include "keyframe_editor_widget.hpp"
0008 #include "ui_keyframe_editor_widget.h"
0009 #include "app/application.hpp"
0010 #include "keyframe_transition_data.hpp"
0011 
0012 using namespace glaxnimate::gui;
0013 using namespace glaxnimate;
0014 
0015 KeyframeEditorWidget::KeyframeEditorWidget(QWidget* parent)
0016     : QWidget(parent), d(std::make_unique<Ui::KeyframeEditorWidget>())
0017 {
0018     d->setupUi(this);
0019 
0020 
0021     for ( int i = 0; i < KeyframeTransitionData::count; i++ )
0022     {
0023         auto data = KeyframeTransitionData::from_index(i, KeyframeTransitionData::Start);
0024         d->combo_before->addItem(data.icon(), data.name);
0025         data = KeyframeTransitionData::from_index(i, KeyframeTransitionData::Finish);
0026         d->combo_after->addItem(data.icon(), data.name);
0027     }
0028 
0029     connect(d->bezier_editor, &KeyframeTransitionWidget::before_changed, this, &KeyframeEditorWidget::update_before);
0030     connect(d->bezier_editor, &KeyframeTransitionWidget::after_changed, this, &KeyframeEditorWidget::update_after);
0031 }
0032 
0033 KeyframeEditorWidget::~KeyframeEditorWidget() = default;
0034 
0035 void KeyframeEditorWidget::changeEvent ( QEvent* e )
0036 {
0037     QWidget::changeEvent(e);
0038     if ( e->type() == QEvent::LanguageChange)
0039     {
0040         d->retranslateUi(this);
0041     }
0042 }
0043 
0044 void KeyframeEditorWidget::set_target(model::KeyframeTransition* kft)
0045 {
0046     d->bezier_editor->set_target(kft);
0047 }
0048 
0049 void KeyframeEditorWidget::preset_after(int index)
0050 {
0051     if ( !d->bezier_editor->target() )
0052         return;
0053 
0054     d->bezier_editor->target()->set_after_descriptive(model::KeyframeTransition::Descriptive(index));
0055     d->bezier_editor->update();
0056 }
0057 
0058 void KeyframeEditorWidget::preset_before(int index)
0059 {
0060     if ( !d->bezier_editor->target() )
0061         return;
0062 
0063     d->bezier_editor->target()->set_before_descriptive(model::KeyframeTransition::Descriptive(index));
0064     d->bezier_editor->update();
0065 }
0066 
0067 void KeyframeEditorWidget::update_after(model::KeyframeTransition::Descriptive v)
0068 {
0069     d->combo_after->setCurrentIndex(int(v));
0070 }
0071 
0072 void KeyframeEditorWidget::update_before(model::KeyframeTransition::Descriptive v)
0073 {
0074     d->combo_before->setCurrentIndex(int(v));
0075 }