From 654c6f32c644b97435e59d6ea9ac619f0f5934ee Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 13 Mar 2019 19:43:28 +1100 Subject: [PATCH] reimplemented updating UI from effect fields --- effects/fields/colorfield.cpp | 7 +++++++ effects/fields/colorfield.h | 1 + effects/fields/combofield.cpp | 20 ++++++++++++++++++++ effects/fields/combofield.h | 1 + effects/fields/fontfield.cpp | 21 +++++++++++++++++++++ effects/fields/fontfield.h | 4 +++- effects/fields/stringfield.cpp | 5 +++++ effects/fields/stringfield.h | 1 + effects/internal/solideffect.cpp | 2 +- 9 files changed, 60 insertions(+), 2 deletions(-) diff --git a/effects/fields/colorfield.cpp b/effects/fields/colorfield.cpp index 865505dd2..909c177d1 100644 --- a/effects/fields/colorfield.cpp +++ b/effects/fields/colorfield.cpp @@ -23,6 +23,13 @@ QWidget *ColorField::CreateWidget() return cb; } +void ColorField::UpdateWidgetValue(QWidget *widget, double timecode) +{ + ColorButton* cb = static_cast(widget); + + cb->set_color(GetColorAt(timecode)); +} + QVariant ColorField::ConvertStringToValue(const QString &s) { return QColor(s); diff --git a/effects/fields/colorfield.h b/effects/fields/colorfield.h index 7c6d60216..9ff0b03c4 100644 --- a/effects/fields/colorfield.h +++ b/effects/fields/colorfield.h @@ -12,6 +12,7 @@ public: QColor GetColorAt(double timecode); virtual QWidget* CreateWidget() override; + virtual void UpdateWidgetValue(QWidget* widget, double timecode) override; virtual QVariant ConvertStringToValue(const QString& s) override; virtual QString ConvertValueToString(const QVariant& v) override; diff --git a/effects/fields/combofield.cpp b/effects/fields/combofield.cpp index 2058e9661..7b25645f4 100644 --- a/effects/fields/combofield.cpp +++ b/effects/fields/combofield.cpp @@ -1,5 +1,7 @@ #include "combofield.h" +#include + #include "ui/comboboxex.h" ComboField::ComboField(EffectRow* parent, const QString& id) : @@ -32,6 +34,24 @@ QWidget *ComboField::CreateWidget() return cb; } +void ComboField::UpdateWidgetValue(QWidget *widget, double timecode) +{ + QVariant data = GetValueAt(timecode); + + ComboBoxEx* cb = static_cast(widget); + + for (int i=0;iblockSignals(true); + cb->setCurrentIndex(i); + cb->blockSignals(false); + return; + } + } + + qWarning() << "Failed to set ComboField value from data"; +} + void ComboField::UpdateFromWidget(int index) { SetValueAt(Now(), items_.at(index).data); diff --git a/effects/fields/combofield.h b/effects/fields/combofield.h index bdf5a9972..97fe2efd7 100644 --- a/effects/fields/combofield.h +++ b/effects/fields/combofield.h @@ -17,6 +17,7 @@ public: void AddItem(const QString& text, const QVariant& data); virtual QWidget *CreateWidget() override; + virtual void UpdateWidgetValue(QWidget* widget, double timecode) override; signals: void IndexChanged(int i); diff --git a/effects/fields/fontfield.cpp b/effects/fields/fontfield.cpp index b647dd17e..9c7343225 100644 --- a/effects/fields/fontfield.cpp +++ b/effects/fields/fontfield.cpp @@ -1,9 +1,12 @@ #include "fontfield.h" #include +#include #include "ui/comboboxex.h" +// NOTE/TODO: This shares a lot of similarity with ComboField, and could probably be a derived class of it + FontField::FontField(EffectRow* parent, const QString &id) : EffectField(parent, id, EFFECT_FIELD_FONT) { @@ -31,6 +34,24 @@ QWidget *FontField::CreateWidget() return fcb; } +void FontField::UpdateWidgetValue(QWidget *widget, double timecode) +{ + QVariant data = GetValueAt(timecode); + + ComboBoxEx* cb = static_cast(widget); + + for (int i=0;iblockSignals(true); + cb->setCurrentIndex(i); + cb->blockSignals(false); + return; + } + } + + qWarning() << "Failed to set FontField value from data"; +} + void FontField::UpdateFromWidget(const QString& s) { SetValueAt(Now(), s); diff --git a/effects/fields/fontfield.h b/effects/fields/fontfield.h index ddd2b05be..f8b095d2b 100644 --- a/effects/fields/fontfield.h +++ b/effects/fields/fontfield.h @@ -1,7 +1,7 @@ #ifndef FONTFIELD_H #define FONTFIELD_H -#include "../effectfield.h" +#include "combofield.h" class FontField : public EffectField { Q_OBJECT @@ -11,6 +11,8 @@ public: QString GetFontAt(double timecode); virtual QWidget *CreateWidget() override; + virtual void UpdateWidgetValue(QWidget* widget, double timecode) override; + private: QStringList font_list; private slots: diff --git a/effects/fields/stringfield.cpp b/effects/fields/stringfield.cpp index b2f38a246..b885ef035 100644 --- a/effects/fields/stringfield.cpp +++ b/effects/fields/stringfield.cpp @@ -34,6 +34,11 @@ QWidget *StringField::CreateWidget() return text_edit; } +void StringField::UpdateWidgetValue(QWidget *widget, double timecode) +{ + static_cast(widget)->setHtml(GetValueAt(timecode).toString()); +} + void StringField::UpdateFromWidget(const QString &s) { SetValueAt(Now(), s); diff --git a/effects/fields/stringfield.h b/effects/fields/stringfield.h index 4643f7bd6..969ce52af 100644 --- a/effects/fields/stringfield.h +++ b/effects/fields/stringfield.h @@ -12,6 +12,7 @@ public: QString GetStringAt(double timecode); virtual QWidget *CreateWidget() override; + virtual void UpdateWidgetValue(QWidget* widget, double timecode) override; private slots: void UpdateFromWidget(const QString& b); }; diff --git a/effects/internal/solideffect.cpp b/effects/internal/solideffect.cpp index 95b01cb2d..7dd6c5cc3 100644 --- a/effects/internal/solideffect.cpp +++ b/effects/internal/solideffect.cpp @@ -49,7 +49,7 @@ SolidEffect::SolidEffect(Clip* c, const EffectMeta* em) : EffectRow* opacity_row = new EffectRow(this, tr("Opacity")); opacity_field = new DoubleField(opacity_row, "opacity"); opacity_field->SetMinimum(0); - opacity_field->SetDefault(0); + opacity_field->SetDefault(100); opacity_field->SetMaximum(100); EffectRow* solid_color_row = new EffectRow(this, tr("Color"));