]> git.sesse.net Git - kdenlive/blobdiff - src/effectslistview.cpp
331 fixed: Naming of tracks now Audio 1, Video 1, etc. http://www.kdenlive.org/mantis...
[kdenlive] / src / effectslistview.cpp
index 96cc4d20bf1c872083306d3d319d39f4b1cb03b8..9769ac355d36a61ffb7cebd0fa6b90b22e1e08d6 100644 (file)
@@ -53,32 +53,40 @@ EffectsListView::EffectsListView(QWidget *parent) :
     connect(buttonInfo, SIGNAL(clicked()), this, SLOT(showInfoPanel()));
     connect(m_effectsList, SIGNAL(itemSelectionChanged()), this, SLOT(slotUpdateInfo()));
     connect(m_effectsList, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(slotEffectSelected()));
-
+    connect(search_effect, SIGNAL(hiddenChanged(QTreeWidgetItem *, bool)), this, SLOT(slotUpdateSearch(QTreeWidgetItem *, bool)));
     //m_effectsList->setCurrentRow(0);
 }
 
 
-void EffectsListView::focusInEvent(QFocusEvent * event)
+void EffectsListView::focusInEvent(QFocusEvent * /*event*/)
 {
-    kDebug() << "// got foc";
     search_effect->setFocus();
 }
 
 void EffectsListView::filterList(int pos)
 {
-    QTreeWidgetItem *item;
-    QTreeWidgetItem *folder;
     for (int i = 0; i < m_effectsList->topLevelItemCount(); i++) {
-        folder = m_effectsList->topLevelItem(i);
+        QTreeWidgetItem *folder = m_effectsList->topLevelItem(i);
+        bool hideFolder = true;
         for (int j = 0; j < folder->childCount(); j++) {
-            item = folder->child(j);
-            if (pos == 0) item->setHidden(false);
-            else if (item->data(0, Qt::UserRole).toInt() == pos) item->setHidden(false);
-            else item->setHidden(true);
+            QTreeWidgetItem *item = folder->child(j);
+            if (pos == 0 || pos == item->data(0, Qt::UserRole).toInt()) {
+                item->setHidden(false);
+                hideFolder = false;
+            } else {
+                item->setHidden(true);
+            }
         }
+        // do not hide the folder if it's empty but "All" is selected
+        if (pos == 0)
+            hideFolder = false;
+        folder->setHidden(hideFolder);
     }
-    item = m_effectsList->currentItem();
-    /*if (item) {
+    // make sure we don't show anything not matching the search expression
+    search_effect->updateSearch();
+
+    /*item = m_effectsList->currentItem();
+    if (item) {
         if (item->isHidden()) {
             int i;
             for (i = 0; i < m_effectsList->count() && m_effectsList->item(i)->isHidden(); i++); //do nothing
@@ -147,4 +155,16 @@ void EffectsListView::slotRemoveEffect()
     emit reloadEffects();
 }
 
+void EffectsListView::slotUpdateSearch(QTreeWidgetItem *item, bool hidden)
+{
+    if (!hidden) {
+        if (item->data(0, Qt::UserRole).toInt() == type_combo->currentIndex()) {
+            item->parent()->setHidden(false);
+        } else {
+            if (type_combo->currentIndex() != 0)
+                item->setHidden(true);
+        }
+    }
+}
+
 #include "effectslistview.moc"