]> git.sesse.net Git - kdenlive/blobdiff - src/clipproperties.cpp
*Re-introduce slideshow clips
[kdenlive] / src / clipproperties.cpp
index 81e4c88a817b7e13b869475fd4ad179ca95840f4..6268a478aec22e0890aba5c8116da5289238762a 100644 (file)
 #include "clipproperties.h"
 #include "kthumb.h"
 
+#define VIDEOTAB 0
+#define AUDIOTAB 1
+#define COLORTAB 2
+#define SLIDETAB 3
+#define ADVANCEDTAB 4
+
+#define TYPE_JPEG 0
+#define TYPE_PNG 1
+#define TYPE_BMP 2
+#define TYPE_GIF 3
+
 ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent): QDialog(parent), m_tc(tc), m_clip(clip), m_fps(fps) {
     setFont(KGlobalSettings::toolBarFont());
     m_view.setupUi(this);
@@ -36,28 +47,54 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
     QMap <QString, QString> props = m_clip->properties();
 
     if (props.contains("audiocodec"))
-        m_view.clip_acodec->setText(props["audiocodec"]);
+        m_view.clip_acodec->setText(props.value("audiocodec"));
     if (props.contains("frequency"))
-        m_view.clip_frequency->setText(props["frequency"]);
+        m_view.clip_frequency->setText(props.value("frequency"));
     if (props.contains("channels"))
-        m_view.clip_channels->setText(props["channels"]);
+        m_view.clip_channels->setText(props.value("channels"));
 
     CLIPTYPE t = m_clip->clipType();
-    if (t != AUDIO) {
+    if (t == COLOR) {
+       m_view.clip_path->setEnabled(false);
+       m_view.tabWidget->removeTab(SLIDETAB);
+       m_view.tabWidget->removeTab(AUDIOTAB);
+       m_view.tabWidget->removeTab(VIDEOTAB);
+        m_view.clip_thumb->setHidden(true);
+       m_view.clip_color->setColor(QColor("#" + props.value("colour").right(8).left(6)));
+    }
+    else if (t == SLIDESHOW) {
+       m_view.tabWidget->removeTab(COLORTAB);
+       m_view.tabWidget->removeTab(AUDIOTAB);
+       m_view.tabWidget->removeTab(VIDEOTAB);
+       QStringList types;
+       types << "JPG" << "PNG" << "BMP" << "GIF";
+       m_view.image_type->addItems(types);
+       m_view.slide_loop->setChecked(props.value("loop").toInt());
+       QString path = props.value("resource");
+       if (path.endsWith("png")) m_view.image_type->setCurrentIndex(TYPE_PNG);
+       else if (path.endsWith("bmp")) m_view.image_type->setCurrentIndex(TYPE_BMP);
+       else if (path.endsWith("gif")) m_view.image_type->setCurrentIndex(TYPE_GIF);
+       m_view.slide_duration->setText(tc.getTimecodeFromFrames(props.value("ttl").toInt()));
+    }
+    else if (t != AUDIO) {
+       m_view.tabWidget->removeTab(SLIDETAB);
+       m_view.tabWidget->removeTab(COLORTAB);
         if (props.contains("frame_size"))
-            m_view.clip_size->setText(props["frame_size"]);
+            m_view.clip_size->setText(props.value("frame_size"));
         if (props.contains("videocodec"))
-            m_view.clip_vcodec->setText(props["videocodec"]);
+            m_view.clip_vcodec->setText(props.value("videocodec"));
         if (props.contains("fps"))
-            m_view.clip_fps->setText(props["fps"]);
+            m_view.clip_fps->setText(props.value("fps"));
         if (props.contains("aspect_ratio"))
-            m_view.clip_ratio->setText(props["aspect_ratio"]);
+            m_view.clip_ratio->setText(props.value("aspect_ratio"));
 
         QPixmap pix = m_clip->thumbProducer()->getImage(url, 240, 180);
         m_view.clip_thumb->setPixmap(pix);
-        if (t == IMAGE || t == VIDEO || t == COLOR) m_view.tabWidget->removeTab(1);
+        if (t == IMAGE || t == VIDEO) m_view.tabWidget->removeTab(AUDIOTAB);
     } else {
-        m_view.tabWidget->removeTab(0);
+       m_view.tabWidget->removeTab(SLIDETAB);
+       m_view.tabWidget->removeTab(COLORTAB);
+        m_view.tabWidget->removeTab(VIDEOTAB);
         m_view.clip_thumb->setHidden(true);
     }
     if (t != IMAGE && t != COLOR && t != TEXT) m_view.clip_duration->setReadOnly(true);
@@ -72,9 +109,20 @@ int ClipProperties::clipId() {
     return m_clip->getId();
 }
 
+
 QMap <QString, QString> ClipProperties::properties() {
     QMap <QString, QString> props;
     props["description"] = m_view.clip_description->text();
+    CLIPTYPE t = m_clip->clipType();
+    if (t == SLIDESHOW) {
+       props["loop"] = QString::number((int) m_view.slide_loop->isChecked());
+    }
+    else if (t == COLOR) {
+       QMap <QString, QString> old_props = m_clip->properties();
+       QString new_color = m_view.clip_color->color().name();
+       if (new_color != QString("#" + old_props.value("colour").right(8).left(6)))
+           props["colour"] = "0x" + new_color.right(6) + "ff";
+    }
     return props;
 }