]> git.sesse.net Git - kdenlive/blobdiff - src/effectslistwidget.cpp
Initial support for project metadata (that can be embedded in rendered files)
[kdenlive] / src / effectslistwidget.cpp
index 350d0851f2b8e73570a1ab2490f49f5b14076fc9..e9a260dc0089611d3944b678120b1b7e719331bc 100644 (file)
@@ -50,7 +50,8 @@ EffectsListWidget::EffectsListWidget(QMenu *contextMenu, QWidget *parent) :
     setHeaderHidden(true);
     setFrameShape(QFrame::NoFrame);
     setAutoFillBackground(false);
-    setRootIsDecorated(false);
+    setRootIsDecorated(true);
+    setIndentation(10);
     //setSelectionMode(QAbstractItemView::ExtendedSelection);
     setDragDropMode(QAbstractItemView::DragOnly);
     QPalette p = palette();
@@ -84,8 +85,6 @@ void EffectsListWidget::initList(QMenu *effectsMenu, KActionCategory *effectActi
             currentFolder = currentItem()->text(0);
     }
 
-    KIcon folderIcon("folder");
-
     QString effectCategory = KStandardDirs::locate("config", "kdenliveeffectscategory.rc");
     QDomDocument doc;
     QFile file(effectCategory);
@@ -112,10 +111,10 @@ void EffectsListWidget::initList(QMenu *effectsMenu, KActionCategory *effectActi
             item->setData(0, IdRole, groups.at(i).toElement().attribute("list"));
         } else {
             item = new QTreeWidgetItem((QTreeWidget*)0, QStringList(folderNames.at(i)));
-            item->setIcon(0, folderIcon);
             item->setData(0, TypeRole, QString::number((int) EFFECT_FOLDER));
             item->setData(0, IdRole, groups.at(i).toElement().attribute("list"));
             item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+            item->setChildIndicatorPolicy(QTreeWidgetItem::DontShowIndicatorWhenChildless);
             insertTopLevelItem(0, item);
         }
         folders.append(item);
@@ -124,7 +123,6 @@ void EffectsListWidget::initList(QMenu *effectsMenu, KActionCategory *effectActi
     QTreeWidgetItem *misc = findFolder(i18n("Misc"));
     if (misc == NULL) {
         misc = new QTreeWidgetItem((QTreeWidget*)0, QStringList(i18n("Misc")));
-        misc->setIcon(0, folderIcon);
         misc->setData(0, TypeRole, QString::number((int) EFFECT_FOLDER));
         misc->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
         insertTopLevelItem(0, misc);
@@ -133,7 +131,6 @@ void EffectsListWidget::initList(QMenu *effectsMenu, KActionCategory *effectActi
     QTreeWidgetItem *audio = findFolder(i18n("Audio"));
     if (audio == NULL) {
         audio = new QTreeWidgetItem((QTreeWidget*)0, QStringList(i18n("Audio")));
-        audio->setIcon(0, folderIcon);
         audio->setData(0, TypeRole, QString::number((int) EFFECT_FOLDER));
         audio->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
         insertTopLevelItem(0, audio);
@@ -142,7 +139,6 @@ void EffectsListWidget::initList(QMenu *effectsMenu, KActionCategory *effectActi
     QTreeWidgetItem *custom = findFolder(i18nc("Folder Name", "Custom"));
     if (custom == NULL) {
         custom = new QTreeWidgetItem((QTreeWidget*)0, QStringList(i18nc("Folder Name", "Custom")));
-        custom->setIcon(0, folderIcon);
         custom->setData(0, TypeRole, QString::number((int) EFFECT_FOLDER));
         custom->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
         insertTopLevelItem(0, custom);
@@ -169,15 +165,20 @@ void EffectsListWidget::initList(QMenu *effectsMenu, KActionCategory *effectActi
 
     // populate effects menu
     for (int i = 0; i < topLevelItemCount(); i++) {
+        if (!topLevelItem(i)->childCount())
+            continue;
         QMenu *sub = new QMenu(topLevelItem(i)->text(0), effectsMenu);
         effectsMenu->addMenu(sub);
         for (int j = 0; j < topLevelItem(i)->childCount(); j++) {
                 QTreeWidgetItem *item = topLevelItem(i)->child(j);
                 KAction *a = new KAction(KIcon(item->icon(0)), item->text(0), sub);
-                a->setData(item->data(0, IdRole));
+                QStringList data = item->data(0, IdRole).toStringList();
+                QString id = data.at(1);
+                if (id.isEmpty()) id = data.at(0);
+                a->setData(data);
                 a->setIconVisibleInMenu(false);
                 sub->addAction(a);
-                effectActions->addAction("video_effect_" + item->text(0), a);
+                effectActions->addAction("video_effect_" + id, a);
         }
     }
 }