+ bool dataProcessed = false;
+ QString key = filterInfo.value("key");
+ int offset = filterInfo.value("offset").toInt();
+ QStringList value = results.value(key).split(';', QString::SkipEmptyParts);
+ kDebug()<<"// RESULT; "<<key<<" = "<<value;
+ if (filterInfo.contains("resultmessage")) {
+ QString mess = filterInfo.value("resultmessage");
+ mess.replace("%count", QString::number(value.count()));
+ emit displayMessage(mess, 0, InformationMessage);
+ }
+ else emit displayMessage(i18n("Processing data analysis"), 0, InformationMessage);
+ if (filterInfo.contains("cutscenes")) {
+ // Check if we want to cut scenes from returned data
+ dataProcessed = true;
+ int cutPos = 0;
+ QUndoCommand *command = new QUndoCommand();
+ command->setText(i18n("Auto Split Clip"));
+ foreach (QString pos, value) {
+ if (!pos.contains("=")) continue;
+ int newPos = pos.section("=", 0, 0).toInt();
+ // Don't use scenes shorter than 1 second
+ if (newPos - cutPos < 24) continue;
+ (void) new AddClipCutCommand(this, id, cutPos + offset, newPos + offset, QString(), true, false, command);
+ cutPos = newPos;
+ }
+ if (command->childCount() == 0)
+ delete command;
+ else m_commandStack->push(command);
+ }
+ if (markersType >= 0) {
+ // Add markers from returned data
+ dataProcessed = true;
+ int cutPos = 0;
+ QUndoCommand *command = new QUndoCommand();
+ command->setText(i18n("Add Markers"));
+ QList <CommentedTime> markersList;
+ int index = 1;
+ foreach (QString pos, value) {
+ if (!pos.contains("=")) continue;
+ int newPos = pos.section("=", 0, 0).toInt();
+ // Don't use scenes shorter than 1 second
+ if (newPos - cutPos < 24) continue;
+ CommentedTime m(GenTime(newPos + offset, m_fps), QString::number(index), markersType);
+ markersList << m;
+ index++;
+ cutPos = newPos;
+ }
+ emit addMarkers(id, markersList);
+ }
+ if (!dataProcessed || filterInfo.contains("storedata")) {
+ // Store returned data as clip extra data
+ clip->referencedClip()->setAnalysisData(filterInfo.contains("displaydataname") ? filterInfo.value("displaydataname") : key, results.value(key), filterInfo.value("offset").toInt());
+ emit updateAnalysisData(clip->referencedClip());
+ }
+}
+
+
+/*
+// Work in progress: apply filter based on clip's camcorder
+void ProjectList::checkCamcorderFilters(DocClipBase *clip, QMap <QString, QString> meta)
+{
+ KConfig conf("camcorderfilters.rc", KConfig::CascadeConfig, "appdata");
+ QStringList groups = conf.groupList();
+ foreach(QString grp, groups) {
+ if (!meta.contains(grp)) continue;
+ KConfigGroup group(&conf, grp);
+ QString value = group.readEntry(meta.value(grp));
+ if (value.isEmpty()) continue;
+ clip->setProperty(value.section(' ', 0, 0), value.section(' ', 1));
+ break;
+ }
+}*/