+ setSortingEnabled(true);
+ sortByColumn(0, Qt::AscendingOrder);
+
+ // populate effects menu
+ QMenu *sub1 = NULL;
+ QMenu *sub2 = NULL;
+ QMenu *sub3 = NULL;
+ QMenu *sub4 = NULL;
+ for (int i = 0; i < topLevelItemCount(); ++i) {
+ if (!topLevelItem(i)->childCount())
+ continue;
+ QMenu *sub = new QMenu(topLevelItem(i)->text(0), effectsMenu);
+ effectsMenu->addMenu(sub);
+ int effectsInCategory = topLevelItem(i)->childCount();
+ bool hasSubCategories = false;
+ if (effectsInCategory > 60) {
+ // create subcategories if there are too many effects
+ hasSubCategories = true;
+ sub1 = new QMenu(i18nc("menu name for effects names between these 2 letters", "0 - F"), sub);
+ sub->addMenu(sub1);
+ sub2 = new QMenu(i18nc("menu name for effects names between these 2 letters", "G - L"), sub);
+ sub->addMenu(sub2);
+ sub3 = new QMenu(i18nc("menu name for effects names between these 2 letters", "M - R"), sub);
+ sub->addMenu(sub3);
+ sub4 = new QMenu(i18nc("menu name for effects names between these 2 letters", "S - Z"), sub);
+ sub->addMenu(sub4);
+ }
+ for (int j = 0; j < effectsInCategory; j++) {
+ QTreeWidgetItem *item = topLevelItem(i)->child(j);
+ KAction *a = new KAction(KIcon(item->icon(0)), item->text(0), sub);
+ 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);
+ if (hasSubCategories) {
+ // put action in sub category
+ QRegExp rx("^[s-z].+");
+ if (rx.exactMatch(item->text(0).toLower())) {
+ sub4->addAction(a);
+ } else {
+ rx.setPattern("^[m-r].+");
+ if (rx.exactMatch(item->text(0).toLower())) {
+ sub3->addAction(a);
+ }
+ else {
+ rx.setPattern("^[g-l].+");
+ if (rx.exactMatch(item->text(0).toLower())) {
+ sub2->addAction(a);
+ }
+ else sub1->addAction(a);
+ }
+ }
+ }
+ else sub->addAction(a);
+ effectActions->addAction("video_effect_" + id, a);
+ }
+ }
+}
+
+void EffectsListWidget::loadEffects(const EffectsList *effectlist, KIcon icon, QTreeWidgetItem *defaultFolder, const QList<QTreeWidgetItem *> *folders, int type, const QString ¤t, bool *found)
+{
+ QStringList effectInfo, l;
+ QTreeWidgetItem *parentItem;
+ QTreeWidgetItem *item;
+ int ct = effectlist->count();
+
+
+ for (int ix = 0; ix < ct; ++ix) {
+ effectInfo = effectlist->effectIdInfo(ix);
+ effectInfo.append(QString::number(type));
+ parentItem = NULL;
+
+ if (folders) {
+ for (int i = 0; i < folders->count(); ++i) {
+ l = folders->at(i)->data(0, IdRole).toString().split(QLatin1Char(','), QString::SkipEmptyParts);
+ if (l.contains(effectInfo.at(2))) {
+ parentItem = folders->at(i);
+ break;
+ }
+ }
+ }
+ if (parentItem == NULL)
+ parentItem = defaultFolder;