+
+QStringList CustomTrackView::getLadspaParams(QDomElement effect) const {
+ QStringList result;
+ QDomNodeList params = effect.elementsByTagName("parameter");
+ for (int i = 0; i < params.count(); i++) {
+ QDomElement e = params.item(i).toElement();
+ if (!e.isNull() && e.attribute("type") == "constant") {
+ if (e.hasAttribute("factor")) {
+ double factor = e.attribute("factor").toDouble();
+ double value = e.attribute("value").toDouble();
+ value = value / factor;
+ result.append(QString::number(value));
+ } else result.append(e.attribute("value"));
+ }
+ }
+ return result;
+}
+
+void CustomTrackView::clipNameChanged(const QString id, const QString name) {
+ QList<QGraphicsItem *> list = scene()->items();
+ ClipItem *clip = NULL;
+ for (int i = 0; i < list.size(); ++i) {
+ if (list.at(i)->type() == AVWIDGET) {
+ clip = static_cast <ClipItem *>(list.at(i));
+ if (clip->clipProducer() == id) {
+ clip->setClipName(name);
+ }
+ }
+ }
+ viewport()->update();
+}
+
+void CustomTrackView::getClipAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum) {
+ minimum = GenTime();
+ maximum = GenTime();
+ QList<QGraphicsItem *> selection;
+ selection = m_scene->items(0, item->track() * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), 2);
+ selection.removeAll(item);
+ for (int i = 0; i < selection.count(); i++) {
+ AbstractClipItem *clip = static_cast <AbstractClipItem *>(selection.at(i));
+ if (clip && clip->type() == AVWIDGET) {
+ if (clip->endPos() <= item->startPos() && clip->endPos() > minimum) minimum = clip->endPos();
+ if (clip->startPos() > item->startPos() && (clip->startPos() < maximum || maximum == GenTime())) maximum = clip->startPos();
+ }
+ }
+}
+
+void CustomTrackView::getTransitionAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum) {
+ minimum = GenTime();
+ maximum = GenTime();
+ QList<QGraphicsItem *> selection;
+ selection = m_scene->items(0, (item->track() + 1) * m_tracksHeight, sceneRect().width(), 2);
+ selection.removeAll(item);
+ for (int i = 0; i < selection.count(); i++) {
+ AbstractClipItem *clip = static_cast <AbstractClipItem *>(selection.at(i));
+ if (clip && clip->type() == TRANSITIONWIDGET) {
+ if (clip->endPos() <= item->startPos() && clip->endPos() > minimum) minimum = clip->endPos();
+ if (clip->startPos() > item->startPos() && (clip->startPos() < maximum || maximum == GenTime())) maximum = clip->startPos();
+ }
+ }
+}
+