From c3deed6356f5456096f600d1a6e2d82ebe2e1fff Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 15 Apr 2012 23:35:45 +0200 Subject: [PATCH] collapsible effects cleanup --- src/CMakeLists.txt | 1 - src/effectstack/abstractcollapsiblewidget.cpp | 4 +- src/effectstack/abstractcollapsiblewidget.h | 14 +- src/effectstack/collapsibleeffect.cpp | 20 +- src/effectstack/collapsibleeffect.h | 14 +- src/effectstack/collapsiblegroup.cpp | 39 ++-- src/effectstack/collapsiblegroup.h | 10 +- src/effectstack/effectstackview2.cpp | 19 +- src/effectstack/effectstackview2.h | 4 +- src/widgets/collapsiblegroup_ui.ui | 197 ------------------ src/widgets/collapsiblewidget_ui.ui | 7 - 11 files changed, 69 insertions(+), 260 deletions(-) delete mode 100644 src/widgets/collapsiblegroup_ui.ui diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e7a73b4e..fdbd92b4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -197,7 +197,6 @@ kde4_add_ui_files(kdenlive_UIS widgets/clipproperties_ui.ui widgets/cliptranscode_ui.ui widgets/collapsiblewidget_ui.ui - widgets/collapsiblegroup_ui.ui widgets/clipstabilize_ui.ui widgets/colorclip_ui.ui widgets/colorplaneexport_ui.ui diff --git a/src/effectstack/abstractcollapsiblewidget.cpp b/src/effectstack/abstractcollapsiblewidget.cpp index 1820a501..b60e9a25 100644 --- a/src/effectstack/abstractcollapsiblewidget.cpp +++ b/src/effectstack/abstractcollapsiblewidget.cpp @@ -24,5 +24,5 @@ AbstractCollapsibleWidget::AbstractCollapsibleWidget(QWidget * parent) : QWidget(parent) { - -} \ No newline at end of file + setupUi(this); +} diff --git a/src/effectstack/abstractcollapsiblewidget.h b/src/effectstack/abstractcollapsiblewidget.h index 9177d7bb..fd0de8d6 100644 --- a/src/effectstack/abstractcollapsiblewidget.h +++ b/src/effectstack/abstractcollapsiblewidget.h @@ -21,9 +21,12 @@ #ifndef ABSTRACTCOLLAPSIBLEWIDGET_H #define ABSTRACTCOLLAPSIBLEWIDGET_H +#include "ui_collapsiblewidget_ui.h" + #include +#include -class AbstractCollapsibleWidget : public QWidget +class AbstractCollapsibleWidget : public QWidget, public Ui::CollapsibleWidget_UI { Q_OBJECT @@ -31,6 +34,15 @@ public: AbstractCollapsibleWidget(QWidget * parent = 0); virtual void setActive(bool activate) = 0; virtual bool isGroup() const = 0; + +signals: + void addEffect(QDomElement e); + /** @brief Move effects in the stack one step up or down. */ + void changeEffectPosition(QList , bool upwards); + /** @brief Move effects in the stack. */ + void moveEffect(QList current_pos, int new_pos, int groupIndex, QString groupName); + /** @brief An effect was saved, trigger effect list reload. */ + void reloadEffects(); }; diff --git a/src/effectstack/collapsibleeffect.cpp b/src/effectstack/collapsibleeffect.cpp index f8309fcd..0fe942b1 100644 --- a/src/effectstack/collapsibleeffect.cpp +++ b/src/effectstack/collapsibleeffect.cpp @@ -130,7 +130,6 @@ CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_ef m_lastEffect(lastEffect), m_regionEffect(false) { - setupUi(this); if (m_effect.attribute("tag") == "region") { m_regionEffect = true; decoframe->setObjectName("decoframegroup"); @@ -165,6 +164,11 @@ CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_ef if (namenode.isNull()) return; QString effectname = i18n(namenode.text().toUtf8().data()); if (m_regionEffect) effectname.append(":" + KUrl(EffectsList::parameter(m_effect, "resource")).fileName()); + + QHBoxLayout *l = static_cast (frame->layout()); + title = new QLabel(this); + l->insertWidget(2, title); + title->setText(effectname); /* * Do not show icon, makes too much visual noise @@ -233,12 +237,9 @@ const QString CollapsibleEffect::getStyleSheet() QString stylesheet; - // group editable labels - stylesheet.append(QString("MyEditableLabel { background-color: transparent;color: palette(bright-text);} ")); - // effect background stylesheet.append(QString("QFrame#decoframe {border-top-left-radius:5px;border-top-right-radius:5px;border-bottom:2px solid palette(mid);border-top:1px solid palette(light);} QFrame#decoframe[active=\"true\"] {background: %1;}").arg(hgh.name())); - + // effect in group background stylesheet.append(QString("QFrame#decoframesub {border-top:1px solid palette(light);} QFrame#decoframesub[active=\"true\"] {background: %1;}").arg(hgh.name())); @@ -259,7 +260,10 @@ const QString CollapsibleEffect::getStyleSheet() // spin box for draggable widget stylesheet.append(QString("QAbstractSpinBox#dragBox {border: 1px solid palette(dark);border-top-right-radius: 4px;border-bottom-right-radius: 4px;padding-right:0px;} QAbstractSpinBox::down-button#dragBox {width:0px;padding:0px;} QAbstractSpinBox:disabled#dragBox {border: 1px solid palette(button);} QAbstractSpinBox::up-button#dragBox {width:0px;padding:0px;} QAbstractSpinBox[inTimeline=\"true\"]#dragBox { border: 1px solid %1;} QAbstractSpinBox:hover#dragBox {border: 1px solid %2;} ").arg(hover_bg.name()).arg(selected_bg.name())); - + + // group editable labels + stylesheet.append(QString("MyEditableLabel { background-color: transparent; color: palette(bright-text); border-radius: 2px;border: 1px solid transparent;} MyEditableLabel:hover {border: 1px solid palette(highlight);} ")); + return stylesheet; } @@ -392,12 +396,12 @@ void CollapsibleEffect::slotDeleteEffect() void CollapsibleEffect::slotEffectUp() { - emit changeEffectPosition(effectIndex(), true); + emit changeEffectPosition(QList () <() < class QFrame; +class QLabel; + class Monitor; class GeometryWidget; @@ -117,7 +116,7 @@ signals: * @author Jean-Baptiste Mardelle */ -class CollapsibleEffect : public AbstractCollapsibleWidget, public Ui::CollapsibleWidget_UI +class CollapsibleEffect : public AbstractCollapsibleWidget { Q_OBJECT @@ -125,6 +124,8 @@ public: CollapsibleEffect(QDomElement effect, QDomElement original_effect, ItemInfo info, EffectMetaInfo *metaInfo, bool lastEffect, QWidget * parent = 0); ~CollapsibleEffect(); static QMap iconCache; + QLabel *title; + void setupWidget(ItemInfo info, EffectMetaInfo *metaInfo); void updateTimecodeFormat(); void setActive(bool activate); @@ -196,21 +197,16 @@ signals: void syncEffectsPos(int); void effectStateChanged(bool, int ix = -1, bool updateMainStatus = true); void deleteEffect(const QDomElement); - void changeEffectPosition(int, bool); void activateEffect(int); void checkMonitorPosition(int); void seekTimeline(int); /** @brief Start an MLT filter job on this clip. */ void startFilterJob(QString filterName, QString filterParams, QString finalFilterName, QString consumer, QString consumerParams, QString properties); - /** @brief An effect was saved, trigger effect list reload. */ - void reloadEffects(); /** @brief An effect was reset, trigger param reload. */ void resetEffect(int ix); /** @brief Ask for creation of a group. */ void createGroup(int ix); - void moveEffect(QList current_pos, int new_pos, int groupIndex, QString groupName); void unGroup(CollapsibleEffect *); - void addEffect(QDomElement e); void createRegion(int, KUrl); void deleteGroup(QDomDocument); }; diff --git a/src/effectstack/collapsiblegroup.cpp b/src/effectstack/collapsiblegroup.cpp index f414004d..3d7b9297 100644 --- a/src/effectstack/collapsiblegroup.cpp +++ b/src/effectstack/collapsiblegroup.cpp @@ -42,7 +42,7 @@ MyEditableLabel::MyEditableLabel(QWidget * parent): { setFrame(false); setReadOnly(true); - setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); } void MyEditableLabel::mouseDoubleClickEvent ( QMouseEvent * e ) @@ -56,13 +56,14 @@ void MyEditableLabel::mouseDoubleClickEvent ( QMouseEvent * e ) CollapsibleGroup::CollapsibleGroup(int ix, bool firstGroup, bool lastGroup, EffectInfo info, QWidget * parent) : AbstractCollapsibleWidget(parent) { - setupUi(this); m_info.groupIndex = ix; m_subWidgets = QList (); setFont(KGlobalSettings::smallestReadableFont()); - QHBoxLayout *l = static_cast (framegroup->layout()); + frame->setObjectName("framegroup"); + decoframe->setObjectName("decoframegroup"); + QHBoxLayout *l = static_cast (frame->layout()); m_title = new MyEditableLabel(this); - l->insertWidget(3, m_title); + l->insertWidget(2, m_title); m_title->setText(info.groupName.isEmpty() ? i18n("Effect Group") : info.groupName); m_info.groupName = m_title->text(); connect(m_title, SIGNAL(editingFinished()), this, SLOT(slotRenameGroup())); @@ -111,18 +112,18 @@ void CollapsibleGroup::slotUnGroup() bool CollapsibleGroup::isActive() const { - return decoframegroup->property("active").toBool(); + return decoframe->property("active").toBool(); } void CollapsibleGroup::setActive(bool activate) { - decoframegroup->setProperty("active", activate); - decoframegroup->setStyleSheet(decoframegroup->styleSheet()); + decoframe->setProperty("active", activate); + decoframe->setStyleSheet(decoframe->styleSheet()); } void CollapsibleGroup::mouseDoubleClickEvent ( QMouseEvent * event ) { - if (framegroup->underMouse() && collapseButton->isEnabled()) slotSwitch(); + if (frame->underMouse() && collapseButton->isEnabled()) slotSwitch(); QWidget::mouseDoubleClickEvent(event); } @@ -150,12 +151,18 @@ void CollapsibleGroup::slotDeleteGroup() void CollapsibleGroup::slotEffectUp() { - emit changeGroupPosition(groupIndex(), true); + QList indexes; + for (int i = 0; i < m_subWidgets.count(); i++) + indexes << m_subWidgets.at(i)->effectIndex(); + emit changeEffectPosition(indexes, true); } void CollapsibleGroup::slotEffectDown() { - emit changeGroupPosition(groupIndex(), false); + QList indexes; + for (int i = 0; i < m_subWidgets.count(); i++) + indexes << m_subWidgets.at(i)->effectIndex(); + emit changeEffectPosition(indexes, false); } void CollapsibleGroup::slotSaveGroup() @@ -286,22 +293,22 @@ void CollapsibleGroup::updateTimecodeFormat() void CollapsibleGroup::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasFormat("kdenlive/effectslist")) { - framegroup->setProperty("target", true); - framegroup->setStyleSheet(framegroup->styleSheet()); + frame->setProperty("target", true); + frame->setStyleSheet(frame->styleSheet()); event->acceptProposedAction(); } } void CollapsibleGroup::dragLeaveEvent(QDragLeaveEvent */*event*/) { - framegroup->setProperty("target", false); - framegroup->setStyleSheet(framegroup->styleSheet()); + frame->setProperty("target", false); + frame->setStyleSheet(frame->styleSheet()); } void CollapsibleGroup::dropEvent(QDropEvent *event) { - framegroup->setProperty("target", false); - framegroup->setStyleSheet(framegroup->styleSheet()); + frame->setProperty("target", false); + frame->setStyleSheet(frame->styleSheet()); const QString effects = QString::fromUtf8(event->mimeData()->data("kdenlive/effectslist")); //event->acceptProposedAction(); QDomDocument doc; diff --git a/src/effectstack/collapsiblegroup.h b/src/effectstack/collapsiblegroup.h index 9b7ed39f..bb7755d2 100644 --- a/src/effectstack/collapsiblegroup.h +++ b/src/effectstack/collapsiblegroup.h @@ -54,7 +54,7 @@ protected: * @author Jean-Baptiste Mardelle */ -class CollapsibleGroup : public AbstractCollapsibleWidget, public Ui::CollapsibleGroup_UI +class CollapsibleGroup : public AbstractCollapsibleWidget { Q_OBJECT @@ -104,16 +104,10 @@ protected: virtual void dropEvent(QDropEvent *event); signals: - void syncEffectsPos(int); - void effectStateChanged(bool, int ix = -1); void deleteGroup(QDomDocument); - void changeGroupPosition(int, bool); - void activateEffect(int); - void moveEffect(QList current_pos, int new_pos, int groupIndex, QString groupName); - void addEffect(QDomElement e); void unGroup(CollapsibleGroup *); void groupRenamed(CollapsibleGroup *); - void reloadEffects(); + }; diff --git a/src/effectstack/effectstackview2.cpp b/src/effectstack/effectstackview2.cpp index 90b6e9f4..831e066e 100644 --- a/src/effectstack/effectstackview2.cpp +++ b/src/effectstack/effectstackview2.cpp @@ -241,7 +241,7 @@ void EffectStackView2::connectEffect(CollapsibleEffect *currentEffect) connect(currentEffect, SIGNAL(deleteEffect(const QDomElement)), this , SLOT(slotDeleteEffect(const QDomElement))); connect(currentEffect, SIGNAL(reloadEffects()), this , SIGNAL(reloadEffects())); connect(currentEffect, SIGNAL(resetEffect(int)), this , SLOT(slotResetEffect(int))); - connect(currentEffect, SIGNAL(changeEffectPosition(int,bool)), this , SLOT(slotMoveEffectUp(int , bool))); + connect(currentEffect, SIGNAL(changeEffectPosition(QList ,bool)), this , SLOT(slotMoveEffectUp(QList ,bool))); connect(currentEffect, SIGNAL(effectStateChanged(bool,int,bool)), this, SLOT(slotUpdateEffectState(bool,int,bool))); connect(currentEffect, SIGNAL(activateEffect(int)), this, SLOT(slotSetCurrentEffect(int))); connect(currentEffect, SIGNAL(checkMonitorPosition(int)), this, SLOT(slotCheckMonitorPosition(int))); @@ -293,7 +293,7 @@ bool EffectStackView2::eventFilter( QObject * o, QEvent * e ) m_draggedGroup = qobject_cast(o); if (m_draggedGroup) { QMouseEvent *me = static_cast(e); - if (me->button() == Qt::LeftButton && (m_draggedGroup->framegroup->underMouse() || m_draggedGroup->title()->underMouse())) + if (me->button() == Qt::LeftButton && (m_draggedGroup->frame->underMouse() || m_draggedGroup->title()->underMouse())) m_clickPoint = me->globalPos(); else { m_clickPoint = QPoint(); @@ -552,19 +552,19 @@ void EffectStackView2::slotAddEffect(QDomElement effect) emit addEffect(m_clipref, effect); } -void EffectStackView2::slotMoveEffectUp(int index, bool up) +void EffectStackView2::slotMoveEffectUp(QList indexes, bool up) { - if (up && index <= 1) return; - if (!up && index >= m_currentEffectList.count()) return; + if (up && indexes.first() <= 1) return; + if (!up && indexes.last() >= m_currentEffectList.count()) return; int endPos; if (up) { - endPos = index - 1; + endPos = indexes.first() - 1; } else { - endPos = index + 1; + endPos = indexes.last() + 1; } - if (m_effectMetaInfo.trackMode) emit changeEffectPosition(NULL, m_trackindex, QList () <() <,bool)), this , SLOT(slotMoveEffectUp(QList ,bool))); } void EffectStackView2::slotMoveEffect(QList currentIndexes, int newIndex, int groupIndex, QString groupName) diff --git a/src/effectstack/effectstackview2.h b/src/effectstack/effectstackview2.h index 3de1b69c..6a6cdcc0 100644 --- a/src/effectstack/effectstackview2.h +++ b/src/effectstack/effectstackview2.h @@ -143,9 +143,9 @@ private slots: void slotUpdateEffectParams(const QDomElement old, const QDomElement e, int ix); /** @brief Move an effect in the stack. - * @param index The effect index in the stack + * @param indexes The list of effect index in the stack * @param up true if we want to move effect up, false for down */ - void slotMoveEffectUp(int index, bool up); + void slotMoveEffectUp(QList indexes, bool up); /** @brief Delete an effect in the stack. */ void slotDeleteEffect(const QDomElement effect); diff --git a/src/widgets/collapsiblegroup_ui.ui b/src/widgets/collapsiblegroup_ui.ui deleted file mode 100644 index 44805677..00000000 --- a/src/widgets/collapsiblegroup_ui.ui +++ /dev/null @@ -1,197 +0,0 @@ - - - CollapsibleGroup_UI - - - - 0 - 0 - 245 - 48 - - - - - 0 - - - - - true - - - QFrame::StyledPanel - - - QFrame::Plain - - - - 0 - - - 0 - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 0 - - - 2 - - - 0 - - - 2 - - - 0 - - - - - ... - - - true - - - Qt::DownArrow - - - - - - - - 22 - 22 - - - - ... - - - true - - - true - - - - - - - Qt::Horizontal - - - - 80 - 20 - - - - - - - - - 22 - 22 - - - - ... - - - QToolButton::InstantPopup - - - true - - - - - - - - 22 - 22 - - - - ... - - - true - - - - - - - - 22 - 22 - - - - ... - - - true - - - - - - - - 22 - 22 - - - - ... - - - true - - - - - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - - - - - - - - - diff --git a/src/widgets/collapsiblewidget_ui.ui b/src/widgets/collapsiblewidget_ui.ui index 78750bd6..dc45e18f 100644 --- a/src/widgets/collapsiblewidget_ui.ui +++ b/src/widgets/collapsiblewidget_ui.ui @@ -94,13 +94,6 @@ - - - - - - - -- 2.39.2