]> git.sesse.net Git - kdenlive/commitdiff
Hide/show up and down buttons only if required
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 16 Apr 2012 21:43:43 +0000 (23:43 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 16 Apr 2012 21:43:43 +0000 (23:43 +0200)
src/effectstack/collapsibleeffect.cpp
src/effectstack/collapsibleeffect.h
src/effectstack/collapsiblegroup.cpp
src/effectstack/collapsiblegroup.h
src/effectstack/effectstackview2.cpp

index 0fe942b14a16a8cce8b1ce2fcdf7a40fa0c61cf9..dc5ff8c506c70ac3f649d5418960a749b4025e99 100644 (file)
@@ -179,9 +179,10 @@ CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_ef
     else if (type == "custom") icon = KIcon("kdenlive-custom-effect");
     else icon = KIcon("kdenlive-show-video");
     effecticon->setPixmap(icon.pixmap(16,16));*/
-    
+    m_groupAction = new QAction(KIcon("folder-new"), i18n("Create Group"), this);
+    connect(m_groupAction, SIGNAL(triggered(bool)), this, SLOT(slotCreateGroup()));
     if (!m_regionEffect) {
-       m_menu->addAction(KIcon("folder-new"), i18n("Create Group"), this, SLOT(slotCreateGroup()));
+       if (m_info.groupIndex == -1) m_menu->addAction(m_groupAction);
        m_menu->addAction(KIcon("folder-new"), i18n("Create Region"), this, SLOT(slotCreateRegion()));
     }
     setupWidget(info, metaInfo);
@@ -480,6 +481,12 @@ void CollapsibleEffect::updateCollapsedState()
 
 void CollapsibleEffect::setGroupIndex(int ix)
 {
+    if (m_info.groupIndex == -1 && ix != -1) {
+       m_menu->removeAction(m_groupAction); 
+    }
+    else if (m_info.groupIndex != -1 && ix == -1) {
+       m_menu->addAction(m_groupAction); 
+    }
     m_info.groupIndex = ix;
     m_effect.setAttribute("kdenlive_info", m_info.toString());
 }
@@ -497,6 +504,9 @@ QString CollapsibleEffect::infoString() const
 
 void CollapsibleEffect::removeFromGroup()
 {
+    if (m_info.groupIndex != -1) {
+       m_menu->addAction(m_groupAction); 
+    }
     m_info.groupIndex = -1;
     m_info.groupName.clear();
     m_effect.setAttribute("kdenlive_info", m_info.toString());
@@ -683,6 +693,13 @@ void CollapsibleEffect::dropEvent(QDropEvent *event)
     event->accept();
 }
 
+
+void CollapsibleEffect::adjustButtons(int ix, int max)
+{
+    buttonUp->setVisible(ix > 0);
+    buttonDown->setVisible(ix < max - 1);
+}
+
 ParameterContainer::ParameterContainer(QDomElement effect, ItemInfo info, EffectMetaInfo *metaInfo, QWidget * parent) :
         m_keyframeEditor(NULL),
         m_geometryWidget(NULL),
@@ -1408,3 +1425,6 @@ void ParameterContainer::slotStartFilterJobAction()
         }
     }
 }
+
+
+
index b6766d7fb0536fae99cb955f16d748d4ddd0a093..59cf59561758c329a023bf467c90917fe6e56327 100644 (file)
@@ -149,6 +149,8 @@ public:
     static const QString getStyleSheet();
     /** @brief Parent group was collapsed, update. */
     void groupStateChanged(bool collapsed);
+    /** @brief Show / hide up / down buttons. */
+    void adjustButtons(int ix, int max);
 
 public slots:
     void slotSyncEffectsPos(int pos);
@@ -182,6 +184,8 @@ private:
     EffectInfo m_info;
     /** @brief True if this is a region effect, which behaves in a special way, like a group. */
     bool m_regionEffect;
+    /** @brief The add group action. */
+    QAction *m_groupAction;
     /** @brief Check if collapsed state changed and inform MLT. */
     void updateCollapsedState();
     
index 3d7b92975ad8a354341460dd3691de4cdc4ef42e..aaf35b18bed7d1733b9dd165bb7fd16825ab65a3 100644 (file)
@@ -403,3 +403,10 @@ QDomDocument CollapsibleGroup::effectsData()
     return doc;
 }
 
+void CollapsibleGroup::adjustEffects()
+{
+    for (int i = 0; i < m_subWidgets.count(); i++) {
+       m_subWidgets.at(i)->adjustButtons(i, m_subWidgets.count());
+    }
+}
+
index 703812d84baf59b9916d5d59ae05c831249248a6..ed54c246f5879926f58dc3aa3eb1c1bb3b42e3d1 100644 (file)
@@ -73,6 +73,8 @@ public:
     QWidget *title() const;
     /** @brief Return the XML data describing all effects in group. */
     QDomDocument effectsData();
+    /** @brief Adjust sub effects buttons. */
+    void adjustEffects();
 
 public slots:
     void slotEnable(bool enable);
index 831e066eec6981dede71d0e9b462725a1ee223a3..993c0e06c6346f82245ef4e63ba340645faf1046 100644 (file)
@@ -224,6 +224,13 @@ void EffectStackView2::setupListView()
        }
        connectEffect(currentEffect);
     }
+    
+    // Adjust group effects (up / down buttons)
+    QList<CollapsibleGroup *> allGroups = m_ui.container->widget()->findChildren<CollapsibleGroup *>();
+    for (int i = 0; i < allGroups.count(); i++) {
+       allGroups.at(i)->adjustEffects();
+    }
+    
     vbox1->addStretch(10);
     slotUpdateCheckAllButton();
     connect(m_effectMetaInfo.monitor, SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int)));