]> git.sesse.net Git - kdenlive/blobdiff - src/effectstackedit.cpp
collapsible effects cleanup
[kdenlive] / src / effectstackedit.cpp
index 2c10f8340984462cb88c2cd39d0abd93a012d555..85a526f12e5d5431a2f137ed36ef5662191f0569 100644 (file)
 #include <KDebug>
 #include <KLocale>
 #include <KFileDialog>
-#include <KColorScheme>
 
 #include <QVBoxLayout>
 #include <QLabel>
 #include <QPushButton>
 #include <QCheckBox>
 #include <QScrollArea>
+#include <QScrollBar>
+#include <QProgressBar>
 
 // For QDomNode debugging (output into files); leaving here as sample code.
 //#define DEBUG_ESE
@@ -99,21 +100,7 @@ EffectStackEdit::EffectStackEdit(Monitor *monitor, QWidget *parent) :
     setFrameStyle(QFrame::NoFrame);
     setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding));
     
-    QPalette p = palette();
-    KColorScheme scheme(p.currentColorGroup(), KColorScheme::View, KSharedConfig::openConfig(KdenliveSettings::colortheme()));
-    QColor dark_bg = scheme.shade(KColorScheme::DarkShade);
-    QColor selected_bg = scheme.decoration(KColorScheme::FocusColor).color();
-    QColor hover_bg = scheme.decoration(KColorScheme::HoverColor).color();    
-    QColor light_bg = scheme.shade(KColorScheme::LightShade);
-    
-    QString stylesheet(QString("QProgressBar:horizontal {border: 1px solid %1;border-radius:0px;border-top-left-radius: 4px;border-bottom-left-radius: 4px;border-right: 0px;background:%4;padding: 0px;text-align:left center}\
-                                QProgressBar:horizontal#dragOnly {background: %1} QProgressBar:horizontal:hover#dragOnly {background: %3} QProgressBar:horizontal:hover {border: 1px solid %3;border-right: 0px;}\
-                                QProgressBar::chunk:horizontal {background: %1;} QProgressBar::chunk:horizontal:hover {background: %3;}\
-                                QProgressBar:horizontal[inTimeline=\"true\"] { border: 1px solid %2;border-right: 0px;background: %4;padding: 0px;text-align:left center } QProgressBar::chunk:horizontal[inTimeline=\"true\"] {background: %2;}\
-                                QAbstractSpinBox#dragBox {border: 1px solid %1;border-top-right-radius: 4px;border-bottom-right-radius: 4px;padding-right:0px;} QAbstractSpinBox::down-button#dragBox {width:0px;padding:0px;}\
-                                QAbstractSpinBox::up-button#dragBox {width:0px;padding:0px;} QAbstractSpinBox[inTimeline=\"true\"]#dragBox { border: 1px solid %2;} QAbstractSpinBox:hover#dragBox {border: 1px solid %3;} ")
-                                .arg(dark_bg.name()).arg(selected_bg.name()).arg(hover_bg.name()).arg(light_bg.name()));
-    setStyleSheet(stylesheet);
+    setStyleSheet(CollapsibleEffect::getStyleSheet());
     setWidget(m_baseWidget);   
     /*m_vbox = new QVBoxLayout(m_baseWidget);
     m_vbox->setContentsMargins(0, 0, 0, 0);
@@ -187,7 +174,7 @@ void EffectStackEdit::meetDependency(const QString& name, QString type, QString
 
 void EffectStackEdit::updateParameter(const QString &name, const QString &value)
 {
-    m_params.setAttribute(name, value);
+    m_paramWidget->updateParameter(name, value);
 
     if (name == "disable") {
         // if effect is disabled, disable parameters widget
@@ -197,10 +184,59 @@ void EffectStackEdit::updateParameter(const QString &name, const QString &value)
     }
 }
 
+bool EffectStackEdit::eventFilter( QObject * o, QEvent * e ) 
+{
+    if (e->type() == QEvent::Wheel) {
+       QWheelEvent *we = static_cast<QWheelEvent *>(e);
+       bool filterWheel = verticalScrollBar() && verticalScrollBar()->isVisible();
+       if (!filterWheel || we->modifiers() != Qt::NoModifier) {
+           e->accept();
+           return false;
+       }
+       if (qobject_cast<QAbstractSpinBox*>(o)) {
+           if(qobject_cast<QAbstractSpinBox*>(o)->focusPolicy() == Qt::WheelFocus)
+           {
+               e->accept();
+               return false;
+           }
+           else
+           {
+               e->ignore();
+               return true;
+           }
+       }
+       if (qobject_cast<KComboBox*>(o)) {
+           if(qobject_cast<KComboBox*>(o)->focusPolicy() == Qt::WheelFocus)
+           {
+               e->accept();
+               return false;
+           }
+           else
+           {
+               e->ignore();
+               return true;
+           }
+       }
+       if (qobject_cast<QProgressBar*>(o)) {
+           if(qobject_cast<QProgressBar*>(o)->focusPolicy() == Qt::WheelFocus)
+           {
+               e->accept();
+               return false;
+           }
+           else
+           {
+               e->ignore();
+               return true;
+           }
+       }
+    }
+    return QWidget::eventFilter(o, e);
+}
+
 void EffectStackEdit::transferParamDesc(const QDomElement &d, ItemInfo info, bool /*isEffect*/)
 {
     if (m_paramWidget) delete m_paramWidget;
-    m_paramWidget = new ParameterContainer(d, info, &m_metaInfo, 0, m_baseWidget);
+    m_paramWidget = new ParameterContainer(d, info, &m_metaInfo, m_baseWidget);
     connect (m_paramWidget, SIGNAL(parameterChanged(const QDomElement, const QDomElement, int)), this, SIGNAL(parameterChanged(const QDomElement, const QDomElement, int)));
     
     connect(m_paramWidget, SIGNAL(startFilterJob(QString,QString,QString,QString,QString,QString)), this, SIGNAL(startFilterJob(QString,QString,QString,QString,QString,QString)));
@@ -208,6 +244,21 @@ void EffectStackEdit::transferParamDesc(const QDomElement &d, ItemInfo info, boo
     connect (this, SIGNAL(syncEffectsPos(int)), m_paramWidget, SIGNAL(syncEffectsPos(int)));
     connect (m_paramWidget, SIGNAL(checkMonitorPosition(int)), this, SIGNAL(checkMonitorPosition(int)));
     connect (m_paramWidget, SIGNAL(seekTimeline(int)), this, SIGNAL(seekTimeline(int)));
+    
+    
+    Q_FOREACH( QSpinBox * sp, m_baseWidget->findChildren<QSpinBox*>() ) {
+        sp->installEventFilter( this );
+        sp->setFocusPolicy( Qt::StrongFocus );
+    }
+    Q_FOREACH( KComboBox * cb, m_baseWidget->findChildren<KComboBox*>() ) {
+       cb->installEventFilter( this );
+        cb->setFocusPolicy( Qt::StrongFocus );
+    }
+    Q_FOREACH( QProgressBar * cb, m_baseWidget->findChildren<QProgressBar*>() ) {
+       cb->installEventFilter( this );
+        cb->setFocusPolicy( Qt::StrongFocus );
+    }
+    
     return;
     /*
     //clearAllItems();
@@ -804,18 +855,5 @@ void EffectStackEdit::slotSyncEffectsPos(int pos)
     emit syncEffectsPos(pos);
 }
 
-void EffectStackEdit::slotStartFilterJobAction()
-{
-    QDomNodeList namenode = m_params.elementsByTagName("parameter");
-    for (int i = 0; i < namenode.count() ; i++) {
-        QDomElement pa = namenode.item(i).toElement();
-        QString type = pa.attribute("type");
-        if (type == "filterjob") {
-            emit startFilterJob(pa.attribute("filtertag"), pa.attribute("filterparams"), pa.attribute("finalfilter"), pa.attribute("consumer"), pa.attribute("consumerparams"), pa.attribute("wantedproperties"));
-            kDebug()<<" - - -PROPS:\n"<<pa.attribute("filtertag")<<"-"<< pa.attribute("filterparams")<<"-"<< pa.attribute("consumer")<<"-"<< pa.attribute("consumerparams")<<"-"<< pa.attribute("wantedproperties");
-            break;
-        }
-    }
-}