]> git.sesse.net Git - kdenlive/blobdiff - src/docclipbase.cpp
Use a real dialogbox so we understand how to cancel/accept unicode characters (ok...
[kdenlive] / src / docclipbase.cpp
index 8573056021d96e9fa30fd83b58dc8bafe6500966..61632374a4731e89e32c12756190e0420ad39777 100644 (file)
@@ -64,17 +64,16 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QStrin
     for (int i = 0; i < attributes.count(); i++) {
         QString name = attributes.item(i).nodeName();
         if (name.startsWith("meta.attr.")) {
-            m_metadata.insert(name.section('.', 2), attributes.item(i).nodeValue());
+            m_metadata.insert(name.section('.', 2), QStringList() << attributes.item(i).nodeValue());
         } else m_properties.insert(name, attributes.item(i).nodeValue());
     }
     QDomNodeList metas = xml.elementsByTagName("metaproperty");
     for (int i = 0; i < metas.count(); i++) {
         QDomElement e = metas.item(i).toElement();
         if (!e.isNull()) {
-           m_metadata.insert(e.attribute("name").section('.', 2), e.firstChild().nodeValue());
+           m_metadata.insert(e.attribute("name").section('.', 2), QStringList() << e.firstChild().nodeValue() << e.attribute("tool"));
        }
     }
-
     if (xml.hasAttribute("cutzones")) {
         QStringList cuts = xml.attribute("cutzones").split(';', QString::SkipEmptyParts);
         for (int i = 0; i < cuts.count(); i++) {
@@ -219,7 +218,7 @@ const QString DocClipBase::getProperty(const QString &prop) const
     return m_properties.value(prop);
 }
 
-void DocClipBase::setDuration(GenTime dur)
+void DocClipBase::setDuration(const GenTime &dur)
 {
     m_duration = dur;
     m_properties.insert("duration", QString::number((int) dur.frames(KdenliveSettings::project_fps())));
@@ -263,14 +262,16 @@ QDomElement DocClipBase::toXML(bool hideTemporaryProperties) const
         if (!i.value().isEmpty()) clip.setAttribute(i.key(), i.value());
     }
 
-    QMapIterator<QString, QString> j(m_metadata);
+    QMapIterator<QString, QStringList> j(m_metadata);
     // Metadata name can have special chars so we cannot pass it as simple attribute
     while (j.hasNext()) {
         j.next();
         if (!j.value().isEmpty()) {
            QDomElement property = doc.createElement("metaproperty");
            property.setAttribute("name", "meta.attr." + j.key());
-           QDomText value = doc.createTextNode(j.value());
+           QStringList values = j.value();
+           QDomText value = doc.createTextNode(values.at(0));
+           if (values.count() > 1) property.setAttribute("tool", values.at(1));
             property.appendChild(value);
            clip.appendChild(property);
        }
@@ -298,6 +299,57 @@ QDomElement DocClipBase::toXML(bool hideTemporaryProperties) const
     return doc.documentElement();
 }
 
+const QString DocClipBase::shortInfo() const
+{
+  
+    QString info;
+    if (m_clipType == AV || m_clipType == VIDEO || m_clipType == IMAGE || m_clipType == PLAYLIST) {
+       info = m_properties.value("frame_size") + " ";
+       if (m_properties.contains("fps")) {
+           info.append(i18n("%1 fps", m_properties.value("fps").left(5)));
+       }
+       if (!info.simplified().isEmpty()) info.prepend(" - ");
+    }
+    else if (m_clipType == AUDIO) {
+       info = " - " + m_properties.value("frequency") + i18n("Hz");
+    }
+    QString tip = "<b>";
+    switch (m_clipType) {
+    case AUDIO:
+        tip.append(i18n("Audio clip") + "</b>" + info + "<br />" + fileURL().path());
+        break;
+    case VIDEO:
+        tip.append(i18n("Mute video clip") + "</b>" + info + "<br />" + fileURL().path());
+        break;
+    case AV:
+        tip.append(i18n("Video clip") + "</b>" + info + "<br />" + fileURL().path());
+        break;
+    case COLOR:
+        tip.append(i18n("Color clip"));
+        break;
+    case IMAGE:
+        tip.append(i18n("Image clip") + "</b>" + info + "<br />" + fileURL().path());
+        break;
+    case TEXT:
+        if (!fileURL().isEmpty() && getProperty("xmldata").isEmpty()) tip.append(i18n("Template text clip") + "</b><br />" + fileURL().path());
+        else tip.append(i18n("Text clip") + "</b><br />" + fileURL().path());
+        break;
+    case SLIDESHOW:
+        tip.append(i18n("Slideshow clip") + "</b><br />" + fileURL().directory());
+        break;
+    case VIRTUAL:
+        tip.append(i18n("Virtual clip"));
+        break;
+    case PLAYLIST:
+        tip.append(i18n("Playlist clip") + "</b>" + info + "<br />" + fileURL().path());
+        break;
+    default:
+        tip.append(i18n("Unknown clip"));
+        break;
+    }
+    return tip;
+}
+
 
 void DocClipBase::setAudioThumbCreated(bool isDone)
 {
@@ -328,7 +380,7 @@ QList < CommentedTime > DocClipBase::commentedSnapMarkers() const
 }
 
 
-void DocClipBase::addSnapMarker(const CommentedTime marker)
+void DocClipBase::addSnapMarker(const CommentedTime &marker)
 {
     QList < CommentedTime >::Iterator it = m_snapMarkers.begin();
     for (it = m_snapMarkers.begin(); it != m_snapMarkers.end(); ++it) {
@@ -345,7 +397,7 @@ void DocClipBase::addSnapMarker(const CommentedTime marker)
     }
 }
 
-void DocClipBase::editSnapMarker(const GenTime & time, QString comment)
+void DocClipBase::editSnapMarker(const GenTime & time, const QString &comment)
 {
     QList < CommentedTime >::Iterator it;
     for (it = m_snapMarkers.begin(); it != m_snapMarkers.end(); ++it) {
@@ -996,7 +1048,7 @@ void DocClipBase::setProperties(QMap <QString, QString> properties)
     if (refreshProducer) slotRefreshProducer();
 }
 
-void DocClipBase::setMetadata(QMap <QString, QString> properties)
+void DocClipBase::setMetadata(QMap <QString, QString> properties, QString tool)
 {
     QMapIterator<QString, QString> i(properties);
     while (i.hasNext()) {
@@ -1004,12 +1056,12 @@ void DocClipBase::setMetadata(QMap <QString, QString> properties)
         if (i.value().isEmpty() && m_metadata.contains(i.key())) {
             m_metadata.remove(i.key());
         } else {
-            m_metadata.insert(i.key(), i.value());
+            m_metadata.insert(i.key(), QStringList() << i.value() << tool);
         }
     }
 }
 
-QMap <QString, QString> DocClipBase::metadata() const
+QMap <QString, QStringList> DocClipBase::metadata() const
 {
     return m_metadata;
 }