From ea9d9ab3b4c62693d9f8daa26cc782c4edf7f494 Mon Sep 17 00:00:00 2001 From: Marco Gittler Date: Thu, 21 Feb 2008 19:32:59 +0000 Subject: [PATCH] use and save order of filters svn path=/branches/KDE4/; revision=1899 --- src/effectstackedit.cpp | 55 ++++++++++-------- src/effectstackedit.h | 4 +- src/effectstackview.cpp | 55 ++++++++++++++---- src/effectstackview.h | 4 +- src/widgets/constval_ui.ui | 115 ++++++++++++++++++++++++++++--------- 5 files changed, 168 insertions(+), 65 deletions(-) diff --git a/src/effectstackedit.cpp b/src/effectstackedit.cpp index 1047e8c8..72903c1c 100644 --- a/src/effectstackedit.cpp +++ b/src/effectstackedit.cpp @@ -53,10 +53,14 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d,int ,int){ QDomNode na=pa.firstChildElement("name"); QDomNamedNodeMap nodeAtts=pa.attributes(); QString type=nodeAtts.namedItem("type").nodeValue(); - QWidget * toFillin=NULL,*labelToFillIn=NULL; + QWidget * toFillin=new QWidget; + QString value=nodeAtts.namedItem("value").isNull()? + nodeAtts.namedItem("default").nodeValue(): + nodeAtts.namedItem("value").nodeValue(); + //TODO constant, list, bool, complex , color, geometry, position if (type=="double" || type=="constant"){ - toFillin=new QWidget; + Ui::Constval_UI *ctval=new Ui::Constval_UI; ctval->setupUi(toFillin); @@ -64,16 +68,14 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d,int ,int){ ctval->horizontalSlider->setMaximum(nodeAtts.namedItem("max").nodeValue().toInt()); ctval->spinBox->setMinimum(ctval->horizontalSlider->minimum()); ctval->spinBox->setMaximum(ctval->horizontalSlider->maximum()); - if (nodeAtts.namedItem("value").isNull()) - ctval->horizontalSlider->setValue(nodeAtts.namedItem("default").nodeValue().toInt()); - else - ctval->horizontalSlider->setValue(nodeAtts.namedItem("value").nodeValue().toInt()); + + ctval->horizontalSlider->setValue(value.toInt()); ctval->title->setTitle(na.toElement().text() ); valueItems[na.toElement().text()]=ctval; - connect (ctval->horizontalSlider, SIGNAL(valueChanged(int)) , this, SLOT (slotSliderMoved(int))); - } - if (type=="list"){ - toFillin=new QWidget; + uiItems.append(ctval); + connect (ctval->horizontalSlider, SIGNAL(valueChanged(int)) , this, SLOT (collectAllParameters())); + }else if (type=="list"){ + Ui::Listval_UI *lsval=new Ui::Listval_UI; lsval->setupUi(toFillin); nodeAtts.namedItem("paramlist"); @@ -84,22 +86,22 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d,int ,int){ else lsval->list->setCurrentText(nodeAtts.namedItem("value").nodeValue()); */ - connect (lsval->list, SIGNAL(currentIndexChanged(int)) , this, SLOT (slotSliderMoved(int))); + connect (lsval->list, SIGNAL(currentIndexChanged(int)) , this, SLOT (collectAllParameters())); lsval->title->setTitle(na.toElement().text() ); valueItems[na.toElement().text()]=lsval; - } - if (type=="bool"){ - toFillin=new QWidget; + uiItems.append(lsval); + }else if (type=="bool"){ Ui::Boolval_UI *bval=new Ui::Boolval_UI; bval->setupUi(toFillin); - if (nodeAtts.namedItem("value").isNull()) - bval->checkBox->setCheckState(nodeAtts.namedItem("default").nodeValue()=="0" ? Qt::Unchecked : Qt::Checked); - else - bval->checkBox->setCheckState(nodeAtts.namedItem("value").nodeValue()=="0" ? Qt::Unchecked : Qt::Checked); + bval->checkBox->setCheckState(value=="0" ? Qt::Unchecked : Qt::Checked); - connect (bval->checkBox, SIGNAL(stateChanged(int)) , this, SLOT (slotSliderMoved(int))); + connect (bval->checkBox, SIGNAL(stateChanged(int)) , this, SLOT (collectAllParameters())); bval->title->setTitle(na.toElement().text() ); valueItems[na.toElement().text()]=bval; + uiItems.append(bval); + }else{ + delete toFillin; + toFillin=NULL; } if (toFillin){ @@ -115,17 +117,21 @@ void EffectStackEdit::collectAllParameters(){ QDomNode pa=namenode.item(i); QDomNode na=pa.firstChildElement("name"); QString type=pa.attributes().namedItem("type").nodeValue(); + QString setValue; if (type=="double" || type=="constant"){ QSlider* slider=((Ui::Constval_UI*)valueItems[na.toElement().text()])->horizontalSlider; - pa.attributes().namedItem("value").setNodeValue(QString::number(slider->value())); + setValue=QString::number(slider->value()); } if (type=="list"){ KComboBox *box=((Ui::Listval_UI*)valueItems[na.toElement().text()])->list; - pa.attributes().namedItem("value").setNodeValue(box->currentText()); + setValue=box->currentText(); } if (type=="bool"){ QCheckBox *box=((Ui::Boolval_UI*)valueItems[na.toElement().text()])->checkBox; - pa.attributes().namedItem("value").setNodeValue(box->checkState() == Qt::Checked ? "1" :"0" ); + setValue=box->checkState() == Qt::Checked ? "1" :"0" ; + } + if (!setValue.isEmpty()){ + pa.attributes().namedItem("value").setNodeValue(setValue); } } emit parameterChanged(params); @@ -136,10 +142,13 @@ void EffectStackEdit::slotSliderMoved(int){ void EffectStackEdit::clearAllItems(){ foreach (QWidget* w,items){ - kDebug() << "delete" << w; vbox->removeWidget(w); delete w; } + foreach(void * p, uiItems){ + delete p; + } + uiItems.clear(); items.clear(); valueItems.clear(); } diff --git a/src/effectstackedit.h b/src/effectstackedit.h index 6ed651f1..44a66c76 100644 --- a/src/effectstackedit.h +++ b/src/effectstackedit.h @@ -35,12 +35,14 @@ private: void clearAllItems(); QVBoxLayout *vbox; QList items; + QList uiItems; QDomElement params; QMap valueItems; - void collectAllParameters(); + public slots: void transferParamDesc(const QDomElement&,int ,int); void slotSliderMoved(int); + void collectAllParameters(); signals: void parameterChanged(const QDomElement& ); }; diff --git a/src/effectstackview.cpp b/src/effectstackview.cpp index 9d789bf6..8f1868e8 100644 --- a/src/effectstackview.cpp +++ b/src/effectstackview.cpp @@ -80,11 +80,10 @@ void EffectStackView::slotClipItemSelected(ClipItem* c) //effects=clipref->effectNames(); effects.clear(); for (int i=0;ieffectsCount();i++){ - QString outstr; - QTextStream str(&outstr); - clipref->effectAt(i).save(str,2); - kDebug() << outstr; - effects.append(clipref->effectAt(i)); + + QDomElement element=clipref->effectAt(i); + effects[element.attribute("kdenlive_ix").toInt()]=element; + renumberEffects(); } setupListView(); @@ -109,14 +108,14 @@ void EffectStackView::setupListView(){ ui.effectlist->setCurrentRow(activeRow); } } - + slotItemSelectionChanged(); } void EffectStackView::slotItemSelectionChanged(){ if (ui.effectlist->currentItem() && ui.effectlist->currentItem()->isSelected() ){ activeRow=ui.effectlist->row( ui.effectlist->currentItem() ); - emit transferParamDesc(effects.at(activeRow) ,0,100);//minx max frame + emit transferParamDesc(effects[activeRow] ,0,100);//minx max frame }else{ activeRow=-1; } @@ -127,7 +126,12 @@ void EffectStackView::slotItemSelectionChanged(){ void EffectStackView::slotItemUp(){ if (activeRow>0 && activeRow =0 ){ emit removeEffect(clipref, clipref->effectAt(activeRow)); - effects.removeAt(activeRow); - + effects.take(activeRow); + renumberEffects(); + //effects.removeAt(activeRow); } if (effects.size()>0 && activeRow>0) activeRow--; @@ -155,7 +165,28 @@ void EffectStackView::slotItemDel(){ } - +void EffectStackView::renumberEffects(){ + QMap tmplist=effects; + QMapIterator it(tmplist); + effects.clear(); + int i=0; + + while (it.hasNext()){ + it.next(); + QDomElement item=it.value(); + item.attributes().namedItem("kdenlive_ix").setNodeValue(QString::number(i)); + + effects[i]=item; + if (clipref) + emit updateClipEffect(clipref,item); + QString outstr; + QTextStream str(&outstr); + item.save(str,2); + kDebug() << "nummer: " << i << " " << outstr; + i++; + } + +} void EffectStackView::slotNewEffect(){ diff --git a/src/effectstackview.h b/src/effectstackview.h index 0fb971f6..77f05ac2 100644 --- a/src/effectstackview.h +++ b/src/effectstackview.h @@ -34,14 +34,14 @@ class EffectStackView : public QWidget private: int activeRow; - QList effects; + QMap effects; Ui::EffectStack_UI ui; ClipItem* clipref; void setupListView(); void updateButtonStatus(); QMap effectLists; EffectStackEdit* effectedit; - + void renumberEffects(); public slots: void slotClipItemSelected(ClipItem*); void slotItemSelectionChanged(); diff --git a/src/widgets/constval_ui.ui b/src/widgets/constval_ui.ui index 3b1b5701..2096564e 100644 --- a/src/widgets/constval_ui.ui +++ b/src/widgets/constval_ui.ui @@ -5,37 +5,98 @@ 0 0 - 410 - 259 + 312 + 67 Form + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + - - - TextLabel + + + + 8 + + + GroupBox + + + Qt::AlignLeading + + + false + + + false + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + Qt::Horizontal + + + false + + + QSlider::TicksBelow + + + 10 + + + + + + + + + - - - - - - Qt::Horizontal - - - - - - - - @@ -49,12 +110,12 @@ setValue(int) - 161 - 138 + 208 + 68 - 261 - 136 + 273 + 66 @@ -65,12 +126,12 @@ setValue(int) - 257 - 126 + 273 + 66 - 173 - 122 + 208 + 68 -- 2.39.2