]> git.sesse.net Git - kdenlive/commitdiff
* internal rework: switch clip id's from integer to string
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 27 Aug 2008 21:38:16 +0000 (21:38 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 27 Aug 2008 21:38:16 +0000 (21:38 +0000)
* improve loading of older kdenlive documents

svn path=/branches/KDE4/; revision=2385

44 files changed:
src/CMakeLists.txt
src/addclipcommand.cpp
src/addclipcommand.h
src/addeffectcommand.cpp
src/addfoldercommand.cpp
src/addfoldercommand.h
src/addmarkercommand.cpp
src/addmarkercommand.h
src/addtimelineclipcommand.cpp
src/addtimelineclipcommand.h
src/addtransitioncommand.cpp
src/changespeedcommand.cpp
src/changespeedcommand.h
src/clipitem.cpp
src/clipitem.h
src/clipmanager.cpp
src/clipmanager.h
src/clipproperties.cpp
src/clipproperties.h
src/customtrackview.cpp
src/customtrackview.h
src/docclipbase.cpp
src/docclipbase.h
src/editeffectcommand.cpp
src/editfoldercommand.cpp
src/editfoldercommand.h
src/editguidecommand.cpp
src/editkeyframecommand.cpp
src/edittransitioncommand.cpp
src/kdenlivedoc.cpp
src/kdenlivedoc.h
src/mainwindow.cpp
src/mainwindow.h
src/monitor.h
src/projectitem.cpp
src/projectitem.h
src/projectlist.cpp
src/projectlist.h
src/projectlistview.cpp
src/renderer.cpp
src/renderer.h
src/trackview.cpp
src/trackview.h
src/video-mlt-playlist.svgz [new file with mode: 0644]

index 0e61d2552c31d20c8daa5d6ad11626b2e06cf66a..c6ca1f16c64f17d5aa5a70bfab8ecddbdeb04bd6 100644 (file)
@@ -150,6 +150,6 @@ install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
 install( FILES kdenliveui.rc DESTINATION  ${DATA_INSTALL_DIR}/kdenlive )
 install (FILES kdenlivesettings.kcfg DESTINATION share/config.kcfg)
 install (FILES kdenlive.desktop DESTINATION share/applications/kde)
-install (FILES application-x-kdenlive.svgz DESTINATION share/icons/oxygen/scalable/mimetypes)
+install (FILES application-x-kdenlive.svgz video-mlt-playlist.svgz DESTINATION share/icons/oxygen/scalable/mimetypes)
 
 
index cda6a485d791847a7a4694fa3fc3b47161cef97e..1807e38c4922fb4d30aa9c6c3c97ffd41fd4a8ea 100644 (file)
@@ -22,7 +22,7 @@
 #include "addclipcommand.h"
 #include "kdenlivedoc.h"
 
-AddClipCommand::AddClipCommand(KdenliveDoc *doc, const QDomElement &xml, const uint id, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_doc(doc), m_xml(xml), m_id(id), m_doIt(doIt) {
+AddClipCommand::AddClipCommand(KdenliveDoc *doc, const QDomElement &xml, const QString &id, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_doc(doc), m_xml(xml), m_id(id), m_doIt(doIt) {
     if (doIt) setText(i18n("Add clip"));
     else setText(i18n("Delete clip"));
 }
@@ -41,4 +41,3 @@ void AddClipCommand::redo() {
     else m_doc->deleteClip(m_id);
 }
 
-#include "addclipcommand.moc"
index 3a4b3d520ce9aa7136e44215af6028e6ce228d5a..7f75d8bd2ce2272a47717898d012c0636da260a2 100644 (file)
@@ -29,7 +29,7 @@ class KdenliveDoc;
 
 class AddClipCommand : public QUndoCommand {
 public:
-    AddClipCommand(KdenliveDoc *list, const QDomElement &xml, const uint id, bool doIt, QUndoCommand * parent = 0);
+    AddClipCommand(KdenliveDoc *list, const QDomElement &xml, const QString &id, bool doIt, QUndoCommand * parent = 0);
 
     virtual void undo();
     virtual void redo();
@@ -37,7 +37,7 @@ public:
 private:
     KdenliveDoc *m_doc;
     QDomElement m_xml;
-    uint m_id;
+    QString m_id;
     bool m_doIt;
 };
 
index e9e48c182c68bb00a68822efcb987529bf423b67..d5564868c90548bd5d57dc42e6ea9101874d0203 100644 (file)
@@ -45,4 +45,4 @@ void AddEffectCommand::redo() {
     else m_view->deleteEffect(m_track, m_pos, m_effect);
 }
 
-#include "addeffectcommand.moc"
+
index a64a218ba25a1cf74b4741c1609c1ec666546bf6..7b881c5daf3c7dd87b6b6fe81fe0e3763d171eeb 100644 (file)
@@ -22,7 +22,7 @@
 #include "addfoldercommand.h"
 #include "kdenlivedoc.h"
 
-AddFolderCommand::AddFolderCommand(KdenliveDoc *doc, const QString folderName, int clipId, bool doIt)
+AddFolderCommand::AddFolderCommand(KdenliveDoc *doc, const QString folderName, const QString &clipId, bool doIt)
         : m_doc(doc), m_name(folderName), m_id(clipId), m_doIt(doIt) {
     if (doIt) setText(i18n("Add folder"));
     else setText(i18n("Delete folder"));
@@ -39,4 +39,4 @@ void AddFolderCommand::redo() {
     else m_doc->deleteFolder(m_name, m_id);
 }
 
-#include "addfoldercommand.moc"
+
index a9122b3c906dcabb94bbe2b9b461fd3d4155eec8..b7d4cc966a11ba4d66f82a84471a3aae5e9b1fd6 100644 (file)
@@ -27,7 +27,7 @@ class KdenliveDoc;
 
 class AddFolderCommand : public QUndoCommand {
 public:
-    AddFolderCommand(KdenliveDoc *doc, const QString folderName, int clipId, bool doIt);
+    AddFolderCommand(KdenliveDoc *doc, const QString folderName, const QString &clipId, bool doIt);
 
     virtual void undo();
     virtual void redo();
@@ -35,7 +35,7 @@ public:
 private:
     KdenliveDoc *m_doc;
     QString m_name;
-    int m_id;
+    QString m_id;
     bool m_doIt;
 };
 
index 5dc764f6f671f420d0656f4473ec469614fdbf84..da747f14e2a052589e741541d0b6c6335984380b 100644 (file)
@@ -19,7 +19,7 @@
 #include "addmarkercommand.h"
 #include "customtrackview.h"
 
-AddMarkerCommand::AddMarkerCommand(CustomTrackView *view, const QString &oldcomment, const QString &comment, const int id, const GenTime &pos, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_oldcomment(oldcomment), m_comment(comment), m_id(id), m_pos(pos), m_doIt(doIt) {
+AddMarkerCommand::AddMarkerCommand(CustomTrackView *view, const QString &oldcomment, const QString &comment, const QString &id, const GenTime &pos, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_oldcomment(oldcomment), m_comment(comment), m_id(id), m_pos(pos), m_doIt(doIt) {
     if (m_comment.isEmpty()) setText(i18n("Delete marker"));
     else if (m_oldcomment.isEmpty()) setText(i18n("Add marker"));
     else setText(i18n("Edit marker"));
@@ -38,4 +38,3 @@ void AddMarkerCommand::redo() {
     m_doIt = true;
 }
 
-#include "addmarkercommand.moc"
index cc16bf61e1a1f26cc41528f1a8c28a808a4a1685..cb539dac933e877ee3656e2b5b5e21fba73261d6 100644 (file)
@@ -31,7 +31,7 @@ class CustomTrackView;
 
 class AddMarkerCommand : public QUndoCommand {
 public:
-    AddMarkerCommand(CustomTrackView *view, const QString &oldcomment, const QString &comment, const int id, const GenTime &pos, bool doIt, QUndoCommand * parent = 0);
+    AddMarkerCommand(CustomTrackView *view, const QString &oldcomment, const QString &comment, const QString &id, const GenTime &pos, bool doIt, QUndoCommand * parent = 0);
     virtual void undo();
     virtual void redo();
 
@@ -39,7 +39,7 @@ private:
     CustomTrackView *m_view;
     QString m_oldcomment;
     QString m_comment;
-    int m_id;
+    QString m_id;
     GenTime m_pos;
     bool m_doIt;
 };
index f1d9d78fa4a160eaaca79e61e2e4797e06d2cb88..862b9a2354e508d57c0003b2a90a6f02fe72effd 100644 (file)
@@ -22,7 +22,7 @@
 #include "addtimelineclipcommand.h"
 #include "customtrackview.h"
 
-AddTimelineClipCommand::AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, ItemInfo info, EffectsList effects, bool doIt, bool doRemove, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_xml(xml), m_clipId(clipId), m_clipInfo(info), m_effects(effects),  m_doIt(doIt), m_remove(doRemove) {
+AddTimelineClipCommand::AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, const QString &clipId, ItemInfo info, EffectsList effects, bool doIt, bool doRemove, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_xml(xml), m_clipId(clipId), m_clipInfo(info), m_effects(effects),  m_doIt(doIt), m_remove(doRemove) {
     if (!m_remove) setText(i18n("Add timeline clip"));
     else setText(i18n("Delete timeline clip"));
 }
@@ -42,4 +42,4 @@ void AddTimelineClipCommand::redo() {
     m_doIt = true;
 }
 
-#include "addtimelineclipcommand.moc"
+
index 9d596808b34c1ee0f167c8b87c8ccb67fa589ce3..b4c3edb0dafb2302a42e01afd297d952c4b0fa85 100644 (file)
@@ -35,7 +35,7 @@ class CustomTrackView;
 
 class AddTimelineClipCommand : public QUndoCommand {
 public:
-    AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, ItemInfo info, EffectsList effects, bool doIt, bool doRemove, QUndoCommand * parent = 0);
+    AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, const QString &clipId, ItemInfo info, EffectsList effects, bool doIt, bool doRemove, QUndoCommand * parent = 0);
     virtual void undo();
     virtual void redo();
 
@@ -43,7 +43,7 @@ private:
     CustomTrackView *m_view;
     ItemInfo m_clipInfo;
     EffectsList m_effects;
-    int m_clipId;
+    QString m_clipId;
     QDomElement m_xml;
     bool m_doIt;
     bool m_remove;
index 4d3f075027aab48260118bda82aebadd2470c550..e41adff1194e694da76c369715e09c1fe186a4e7 100644 (file)
@@ -39,4 +39,4 @@ void AddTransitionCommand::redo() {
     m_doIt = true;
 }
 
-#include "addtimelineclipcommand.moc"
+
index 154b96d15ad703e28602ec61c27831b2ab184848..e7b66af7e603cb9a12ef6a319a8ea16b3cac38d3 100644 (file)
@@ -22,7 +22,7 @@
 #include "changespeedcommand.h"
 #include "customtrackview.h"
 
-ChangeSpeedCommand::ChangeSpeedCommand(CustomTrackView *view, ItemInfo info, double old_speed, double new_speed, int clipId, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_clipInfo(info), m_old_speed(old_speed), m_new_speed(new_speed), m_clipId(clipId), m_doIt(doIt) {
+ChangeSpeedCommand::ChangeSpeedCommand(CustomTrackView *view, ItemInfo info, double old_speed, double new_speed, const QString &clipId, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_clipInfo(info), m_old_speed(old_speed), m_new_speed(new_speed), m_clipId(clipId), m_doIt(doIt) {
     setText(i18n("Adjust clip length"));
 }
 
@@ -39,4 +39,4 @@ void ChangeSpeedCommand::redo() {
     m_doIt = true;
 }
 
-#include "changespeedcommand.moc"
+
index c360716fc3f12f3e792879a4bd71e6dfb91c63a1..a95463cb317c2380210157b4887ce07ff8316f36 100644 (file)
@@ -32,14 +32,14 @@ class CustomTrackView;
 
 class ChangeSpeedCommand : public QUndoCommand {
 public:
-    ChangeSpeedCommand(CustomTrackView *view, ItemInfo info, double old_speed, double new_speed, int clipId, bool doIt, QUndoCommand * parent = 0);
+    ChangeSpeedCommand(CustomTrackView *view, ItemInfo info, double old_speed, double new_speed, const QString &clipId, bool doIt, QUndoCommand * parent = 0);
     virtual void undo();
     virtual void redo();
 
 private:
     CustomTrackView *m_view;
     ItemInfo m_clipInfo;
-    int m_clipId;
+    QString m_clipId;
     bool m_doIt;
     double m_old_speed;
     double m_new_speed;
index fadf4228fa1f80f7b02aab950de23895bdab487f..b7fbfbdba19e8ba7cf42bc33c76fd57bb205cb3c 100644 (file)
@@ -67,7 +67,7 @@ ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps)
     connect(this , SIGNAL(prepareAudioThumb(double, int, int, int)) , this, SLOT(slotPrepareAudioThumb(double, int, int, int)));
 
     setBrush(QColor(141, 166, 215));
-    if (m_clipType == VIDEO || m_clipType == AV || m_clipType == SLIDESHOW) {
+    if (m_clipType == VIDEO || m_clipType == AV || m_clipType == SLIDESHOW || m_clipType == PLAYLIST) {
         m_hasThumbs = true;
         startThumbTimer = new QTimer(this);
         startThumbTimer->setSingleShot(true);
@@ -388,7 +388,7 @@ QString ClipItem::clipName() const {
     return m_clipName;
 }
 
-int ClipItem::clipProducer() const {
+const QString &ClipItem::clipProducer() const {
     return m_producer;
 }
 
index 3c62293a81c3af3846285f384284c8bcb6e64bcd..256f94293ad5262d45c1547e8ec4b270c4f7e9f2 100644 (file)
@@ -49,7 +49,7 @@ public:
     void resizeStart(int posx);
     void resizeEnd(int posx);
     OPERATIONTYPE operationMode(QPointF pos);
-    int clipProducer() const;
+    const QString &clipProducer() const;
     int clipType() const;
     DocClipBase *baseClip() const;
     QString clipName() const;
@@ -112,7 +112,7 @@ private:
     DocClipBase *m_clip;
     OPERATIONTYPE m_resizeMode;
     int m_grabPoint;
-    int m_producer;
+    QString m_producer;
     CLIPTYPE m_clipType;
     QString m_clipName;
     QString m_effectNames;
index 7827c52397888c8e3974c5e8998c1d0885037ac9..87990b6126d5a82280efc8ecf8bbe259284c00a4 100644 (file)
@@ -54,11 +54,11 @@ QList <DocClipBase*> ClipManager::documentClipList() {
 
 void ClipManager::addClip(DocClipBase *clip) {
     m_clipList.append(clip);
-    int id = clip->getId();
-    if (id >= m_clipIdCounter) m_clipIdCounter = id + 1;
+    QString id = clip->getId();
+    if (id.toInt() >= m_clipIdCounter) m_clipIdCounter = id.toInt() + 1;
 }
 
-void ClipManager::slotDeleteClip(uint clipId) {
+void ClipManager::slotDeleteClip(const QString &clipId) {
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
             AddClipCommand *command = new AddClipCommand(m_doc, m_clipList.at(i)->toXML(), clipId, false);
@@ -68,7 +68,7 @@ void ClipManager::slotDeleteClip(uint clipId) {
     }
 }
 
-void ClipManager::deleteClip(uint clipId) {
+void ClipManager::deleteClip(const QString &clipId) {
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
             m_clipList.removeAt(i);
@@ -81,7 +81,7 @@ DocClipBase *ClipManager::getClipAt(int pos) {
     return m_clipList.at(pos);
 }
 
-DocClipBase *ClipManager::getClipById(int clipId) {
+DocClipBase *ClipManager::getClipById(const QString &clipId) {
     //kDebug() << "++++  CLIP MAN, LOOKING FOR CLIP ID: " << clipId;
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
@@ -92,7 +92,7 @@ DocClipBase *ClipManager::getClipById(int clipId) {
     return NULL;
 }
 
-void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, const int groupId) {
+void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId) {
     QUndoCommand *addClips = new QUndoCommand();
     addClips->setText("Add clips");
 
@@ -113,13 +113,13 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co
                 prod.setAttribute("in", "0");
                 prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
             }
-            new AddClipCommand(m_doc, prod, id, true, addClips);
+            new AddClipCommand(m_doc, prod, QString::number(id), true, addClips);
         }
     }
     m_doc->commandStack()->push(addClips);
 }
 
-void ClipManager::slotAddClipFile(const KUrl url, const QString group, const int groupId) {
+void ClipManager::slotAddClipFile(const KUrl url, const QString group, const QString &groupId) {
     kDebug() << "/////  CLIP MANAGER, ADDING CLIP: " << url;
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
@@ -136,11 +136,11 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group, const int
         prod.setAttribute("in", "0");
         prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
     }
-    AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
+    AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
 
-void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId) {
+void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId) {
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
     prod.setAttribute("mlt_service", "colour");
@@ -155,11 +155,11 @@ void ClipManager::slotAddColorClipFile(const QString name, const QString color,
         prod.setAttribute("groupname", group);
         prod.setAttribute("groupid", groupId);
     }
-    AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
+    AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
 
-void ClipManager::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, QString group, const int groupId) {
+void ClipManager::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, QString group, const QString &groupId) {
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
     prod.setAttribute("resource", path);
@@ -179,13 +179,13 @@ void ClipManager::slotAddSlideshowClipFile(const QString name, const QString pat
         prod.setAttribute("groupname", group);
         prod.setAttribute("groupid", groupId);
     }
-    AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
+    AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
 
 
 
-void ClipManager::slotAddTextClipFile(const QString path, const QString xml, const QString group, const int groupId) {
+void ClipManager::slotAddTextClipFile(const QString path, const QString xml, const QString group, const QString &groupId) {
     kDebug() << "/////  CLIP MANAGER, ADDING CLIP: " << path;
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
@@ -202,7 +202,7 @@ void ClipManager::slotAddTextClipFile(const QString path, const QString xml, con
     prod.setAttribute("transparency", "1");
     prod.setAttribute("in", "0");
     prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
-    AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
+    AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
 
index b671870977aa7772a9e0e71df85cc299869d4bce..95a8cceae91862f17ba0cbcc794b702cc2e691fe 100644 (file)
@@ -47,14 +47,14 @@ Q_OBJECT public:
     virtual ~ ClipManager();
     void addClip(DocClipBase *clip);
     DocClipBase *getClipAt(int pos);
-    void deleteClip(uint clipId);
-    void slotAddClipFile(const KUrl url, const QString group, const int groupId);
-    void slotAddClipList(const KUrl::List urls, const QString group, const int groupId);
-    void slotAddTextClipFile(const QString path, const QString xml, const QString group, const int groupId);
-    void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId);
-    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const int groupId);
-    DocClipBase *getClipById(int clipId);
-    void slotDeleteClip(uint clipId);
+    void deleteClip(const QString &clipId);
+    void slotAddClipFile(const KUrl url, const QString group, const QString &groupId);
+    void slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId);
+    void slotAddTextClipFile(const QString path, const QString xml, const QString group, const QString &groupId);
+    void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId);
+    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const QString &groupId);
+    DocClipBase *getClipById(const QString &clipId);
+    void slotDeleteClip(const QString & clipId);
     void setThumbsProgress(const QString &message, int progress);
     void checkAudioThumbs();
     QList <DocClipBase*> documentClipList();
index 550a8ab7e4f3ba23816017b724a12062b24fe4c6..8b6c6a314c76de0ad9a44c084ee8b2f36383432c 100644 (file)
@@ -179,8 +179,7 @@ void ClipProperties::slotAddMarker() {
     CommentedTime marker(GenTime(), i18n("Marker"));
     MarkerDialog d(m_clip, marker, m_tc, this);
     if (d.exec() == QDialog::Accepted) {
-        int id = m_clip->getId();
-        emit addMarker(id, d.newMarker().time(), d.newMarker().comment());
+        emit addMarker(m_clip->getId(), d.newMarker().time(), d.newMarker().comment());
     }
     QTimer::singleShot(500, this, SLOT(slotFillMarkersList()));
 }
@@ -191,8 +190,7 @@ void ClipProperties::slotEditMarker() {
     if (pos < 0 || pos > marks.count() - 1) return;
     MarkerDialog d(m_clip, marks.at(pos), m_tc, this);
     if (d.exec() == QDialog::Accepted) {
-        int id = m_clip->getId();
-        emit addMarker(id, d.newMarker().time(), d.newMarker().comment());
+        emit addMarker(m_clip->getId(), d.newMarker().time(), d.newMarker().comment());
     }
     QTimer::singleShot(500, this, SLOT(slotFillMarkersList()));
 }
@@ -201,13 +199,12 @@ void ClipProperties::slotDeleteMarker() {
     QList < CommentedTime > marks = m_clip->commentedSnapMarkers();
     int pos = m_view.markers_list->currentIndex().row();
     if (pos < 0 || pos > marks.count() - 1) return;
-    int id = m_clip->getId();
-    emit addMarker(id, marks.at(pos).time(), QString());
+    emit addMarker(m_clip->getId(), marks.at(pos).time(), QString());
 
     QTimer::singleShot(500, this, SLOT(slotFillMarkersList()));
 }
 
-int ClipProperties::clipId() const {
+const QString &ClipProperties::clipId() const {
     return m_clip->getId();
 }
 
index aa5c8e217cf83692a86141e48861b40ee2f98ca8..e90fd3b7eb5fb0d095cae1cefdcc508edb2e3490 100644 (file)
@@ -34,7 +34,7 @@ class ClipProperties : public QDialog {
 public:
     ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent = 0);
     QMap <QString, QString> properties();
-    int clipId() const;
+    const QString &clipId() const;
     bool needsTimelineRefresh() const;
 
 private slots:
@@ -54,7 +54,7 @@ private:
     bool m_clipNeedsRefresh;
 
 signals:
-    void addMarker(int, GenTime, QString);
+    void addMarker(const QString &, GenTime, QString);
 };
 
 
index 1d14d1216c4347021ff18dce4ac732d4d46fdd8d..a70c3c8cd49a67138a6c6b9ca106c9f3646596dc 100644 (file)
@@ -753,8 +753,8 @@ void CustomTrackView::dragEnterEvent(QDragEnterEvent * event) {
         //TODO: drop of several clips
         for (int i = 0; i < ids.size(); ++i) {
         }
-        DocClipBase *clip = m_document->getBaseClip(ids.at(0).toInt());
-        if (clip == NULL) kDebug() << " WARNING))))))))) CLIP NOT FOUND : " << ids.at(0).toInt();
+        DocClipBase *clip = m_document->getBaseClip(ids.at(0));
+        if (clip == NULL) kDebug() << " WARNING))))))))) CLIP NOT FOUND : " << ids.at(0);
         addItem(clip, event->pos());
         event->acceptProposedAction();
     } else QGraphicsView::dragEnterEvent(event);
@@ -1095,7 +1095,7 @@ void CustomTrackView::slotSwitchTrackVideo(int ix) {
     m_document->renderer()->mltChangeTrackState(tracknumber, m_scene->m_tracksList.at(tracknumber - 1).isMute, m_scene->m_tracksList.at(tracknumber - 1).isBlind);
 }
 
-void CustomTrackView::deleteClip(int clipId) {
+void CustomTrackView::deleteClip(const QString &clipId) {
     QList<QGraphicsItem *> itemList = items();
     for (int i = 0; i < itemList.count(); i++) {
         if (itemList.at(i)->type() == AVWIDGET) {
@@ -1410,7 +1410,7 @@ void CustomTrackView::changeClipSpeed() {
     m_commandStack->push(changeSelected);
 }
 
-void CustomTrackView::doChangeClipSpeed(ItemInfo info, double speed, int id) {
+void CustomTrackView::doChangeClipSpeed(ItemInfo info, double speed, const QString &id) {
     DocClipBase *baseclip = m_document->clipManager()->getClipById(id);
     ClipItem *item = getClipItemAt((int) info.startPos.frames(m_document->fps()) + 1, info.track);
     info.track = m_scene->m_tracksList.count() - item->track();
@@ -1440,7 +1440,7 @@ void CustomTrackView::cutSelectedClips() {
     }
 }
 
-void CustomTrackView::addClip(QDomElement xml, int clipId, ItemInfo info, EffectsList effects) {
+void CustomTrackView::addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList effects) {
     DocClipBase *baseclip = m_document->clipManager()->getClipById(clipId);
     ClipItem *item = new ClipItem(baseclip, info, m_document->fps());
     item->setEffectList(effects);
@@ -1455,7 +1455,7 @@ void CustomTrackView::addClip(QDomElement xml, int clipId, ItemInfo info, Effect
     m_document->renderer()->doRefresh();
 }
 
-void CustomTrackView::slotUpdateClip(int clipId) {
+void CustomTrackView::slotUpdateClip(const QString &clipId) {
     QList<QGraphicsItem *> list = scene()->items();
     ClipItem *clip = NULL;
     for (int i = 0; i < list.size(); ++i) {
@@ -1718,7 +1718,7 @@ void CustomTrackView::slotAddClipMarker() {
     GenTime pos = GenTime(m_cursorPos, m_document->fps());
     if (item->startPos() > pos || item->endPos() < pos) return;
     ClipItem *clip = (ClipItem *) item;
-    int id = clip->baseClip()->getId();
+    QString id = clip->baseClip()->getId();
     GenTime position = pos - item->startPos() + item->cropStart();
     CommentedTime marker(position, i18n("Marker"));
     MarkerDialog d(clip->baseClip(), marker, m_document->timecode(), this);
@@ -1727,7 +1727,7 @@ void CustomTrackView::slotAddClipMarker() {
     }
 }
 
-void CustomTrackView::slotAddClipMarker(int id, GenTime t, QString c) {
+void CustomTrackView::slotAddClipMarker(const QString &id, GenTime t, QString c) {
     QString oldcomment = m_document->clipManager()->getClipById(id)->markerComment(t);
     AddMarkerCommand *command = new AddMarkerCommand(this, oldcomment, c, id, t, true);
     m_commandStack->push(command);
@@ -1751,7 +1751,7 @@ void CustomTrackView::slotDeleteClipMarker() {
         return;
     }
     ClipItem *clip = (ClipItem *) item;
-    int id = clip->baseClip()->getId();
+    QString id = clip->baseClip()->getId();
     GenTime position = pos - item->startPos() + item->cropStart();
     QString comment = clip->baseClip()->markerComment(position);
     if (comment.isEmpty()) {
@@ -1782,7 +1782,7 @@ void CustomTrackView::slotDeleteAllClipMarkers() {
         emit displayMessage(i18n("Clip has no markers"), ErrorMessage);
         return;
     }
-    int id = clip->baseClip()->getId();
+    QString id = clip->baseClip()->getId();
     QUndoCommand *deleteMarkers = new QUndoCommand();
     deleteMarkers->setText("Delete clip markers");
 
@@ -1810,7 +1810,7 @@ void CustomTrackView::slotEditClipMarker() {
         return;
     }
     ClipItem *clip = (ClipItem *) item;
-    int id = clip->baseClip()->getId();
+    QString id = clip->baseClip()->getId();
     GenTime position = pos - item->startPos() + item->cropStart();
     QString oldcomment = clip->baseClip()->markerComment(position);
     if (oldcomment.isEmpty()) {
@@ -1835,7 +1835,7 @@ void CustomTrackView::slotEditClipMarker() {
     }
 }
 
-void CustomTrackView::addMarker(const int id, const GenTime &pos, const QString comment) {
+void CustomTrackView::addMarker(const QString &id, const GenTime &pos, const QString comment) {
     DocClipBase *base = m_document->clipManager()->getClipById(id);
     if (!comment.isEmpty()) base->addSnapMarker(pos, comment);
     else base->deleteSnapMarker(pos);
index 6812e904ee1697596901f6467169fe3e9947dc3a..6ef7a4379aa508b079e9e06cd98548d8209e52c8 100644 (file)
@@ -56,15 +56,15 @@ public:
     /** move transition, startPos = (old start, old end), endPos = (new start, new end) */
     void moveTransition(const ItemInfo start, const ItemInfo end);
     void resizeClip(const ItemInfo start, const ItemInfo end);
-    void addClip(QDomElement xml, int clipId, ItemInfo info, EffectsList list = EffectsList());
+    void addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList list = EffectsList());
     void deleteClip(ItemInfo info);
     void slotAddClipMarker();
     void slotEditClipMarker();
     void slotDeleteClipMarker();
     void slotDeleteAllClipMarkers();
-    void addMarker(const int id, const GenTime &pos, const QString comment);
+    void addMarker(const QString &id, const GenTime &pos, const QString comment);
     void setScale(double scaleFactor);
-    void deleteClip(int clipId);
+    void deleteClip(const QString &clipId);
     void slotAddEffect(QDomElement effect, GenTime pos, int track);
     void addEffect(int track, GenTime pos, QDomElement effect);
     void deleteEffect(int track, GenTime pos, QDomElement effect);
@@ -94,7 +94,7 @@ public:
     void clipStart();
     void clipEnd();
     void changeClipSpeed();
-    void doChangeClipSpeed(ItemInfo info, double speed, int id);
+    void doChangeClipSpeed(ItemInfo info, double speed, const QString &id);
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
@@ -111,8 +111,8 @@ public slots:
     void slotTransitionUpdated(Transition *, QDomElement);
     void slotSwitchTrackAudio(int ix);
     void slotSwitchTrackVideo(int ix);
-    void slotUpdateClip(int clipId);
-    void slotAddClipMarker(int id, GenTime t, QString c);
+    void slotUpdateClip(const QString &clipId);
+    void slotAddClipMarker(const QString &id, GenTime t, QString c);
     bool addGuide(const GenTime pos, const QString &comment);
     void slotAddGuide();
     void slotEditGuide(CommentedTime guide);
index 1ddf523b3298dd5987257b3201c107af88e01d1b..3c6620ccd721f0a1c2814ce276e3a1773d14ae9e 100644 (file)
 #include "kthumb.h"
 #include "clipmanager.h"
 
-DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, uint id):
+DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QString &id):
         m_id(id), m_description(QString()), m_refcount(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL), m_clipProducer(NULL) {
     int type = xml.attribute("type").toInt();
     m_clipType = (CLIPTYPE) type;
     m_name = xml.attribute("name");
-    m_id = id;
 
     QDomNamedNodeMap attributes = xml.attributes();
     for (unsigned int i = 0; i < attributes.count(); i++) {
@@ -102,11 +101,11 @@ const QString & DocClipBase::name() const {
     return m_name;
 }
 
-uint DocClipBase::getId() const {
+const QString &DocClipBase::getId() const {
     return m_id;
 }
 
-void DocClipBase::setId(const uint &newId) {
+void DocClipBase::setId(const QString &newId) {
     m_id = newId;
 }
 
index 2e9817eca84ad8383d1bc1c2c96689f48e340f73..e78f223712ef27624170428bfcc2f41e24528722 100644 (file)
@@ -54,7 +54,7 @@ Q_OBJECT public:
      *   done here. If a new clip type is added then it should be possible to combine it with both audio
      *   and video. */
 
-    DocClipBase(ClipManager *clipManager, QDomElement xml, uint id);
+    DocClipBase(ClipManager *clipManager, QDomElement xml, const QString &id);
 //    DocClipBase & operator=(const DocClipBase & clip);
     virtual ~ DocClipBase();
 
@@ -74,8 +74,8 @@ Q_OBJECT public:
     void setProperty(QString key, QString value);
 
     /** Returns the internal unique id of the clip. */
-    uint getId() const;
-    void setId(const uint &newId);
+    const QString &getId() const;
+    void setId(const QString &newId);
 
     //KThumb *thumbCreator;
     bool audioThumbCreated() const;
@@ -211,7 +211,7 @@ private:   // Private attributes
     bool m_audioThumbCreated;
 
     /** a unique numeric id */
-    uint m_id;
+    QString m_id;
     void setAudioThumbCreated(bool isDone);
     /** Holds clip infos like fps, size,... */
     QMap <QString, QString> m_properties;
index 2c44b0ffa0e53d8a2368e2c2ff7bfb9b4dddc6c8..84a5d2269cfefe8856d5642ecc95afeef9cd90c0 100644 (file)
@@ -57,4 +57,4 @@ void EditEffectCommand::redo() {
     m_view->updateEffect(m_track, m_pos, m_effect, m_stackPos);
 }
 
-#include "editeffectcommand.moc"
+
index 227d759d33dd6d6e5a6591251fc07711744b7af1..d54af57e47c540702449bf9d84d0064e92eb95e8 100644 (file)
@@ -22,7 +22,7 @@
 #include "editfoldercommand.h"
 #include "kdenlivedoc.h"
 
-EditFolderCommand::EditFolderCommand(KdenliveDoc *doc, const QString newfolderName, const QString oldfolderName, int clipId, bool doIt)
+EditFolderCommand::EditFolderCommand(KdenliveDoc *doc, const QString newfolderName, const QString oldfolderName, const QString &clipId, bool doIt)
         : m_doc(doc), m_name(newfolderName), m_oldname(oldfolderName), m_id(clipId), m_doIt(doIt) {
     setText(i18n("Rename folder"));
 }
@@ -37,4 +37,4 @@ void EditFolderCommand::redo() {
     m_doIt = true;
 }
 
-#include "editfoldercommand.moc"
+
index 87840ff5f204cef9677c5440d497c6dc942dc9c6..a264df57a7e48f31992b86217c65669f60e49c9f 100644 (file)
@@ -27,7 +27,7 @@ class KdenliveDoc;
 
 class EditFolderCommand : public QUndoCommand {
 public:
-    EditFolderCommand(KdenliveDoc *doc, const QString newfolderName, const QString oldfolderName, int clipId, bool doIt);
+    EditFolderCommand(KdenliveDoc *doc, const QString newfolderName, const QString oldfolderName, const QString &clipId, bool doIt);
 
     virtual void undo();
     virtual void redo();
@@ -36,7 +36,7 @@ private:
     KdenliveDoc *m_doc;
     QString m_name;
     QString m_oldname;
-    int m_id;
+    QString m_id;
     bool m_doIt;
 };
 
index 10b2b78e02396bec70af86f3bd84d28461589294..c60a90e3ad063971a4eac10ac9068f7e523a4c8d 100644 (file)
@@ -39,4 +39,3 @@ void EditGuideCommand::redo() {
     m_doIt = true;
 }
 
-#include "editguidecommand.moc"
index f9dde76cadeb1f357b57d9dfca8fde9b18b35696..e9624471cf4d70e46e19581100ca9c464c4762f2 100644 (file)
@@ -41,4 +41,3 @@ void EditKeyFrameCommand::redo() {
     m_doIt = true;
 }
 
-#include "editkeyframecommand.moc"
index 0708d33e3d4a8f55e4532db173d431f3aecf5d23..92ec2d6bfe529a9436e5771403fc697b18c600a8 100644 (file)
@@ -52,4 +52,3 @@ void EditTransitionCommand::redo() {
     m_view->updateTransition(m_track, m_pos, m_oldeffect, m_effect);
 }
 
-#include "editeffectcommand.moc"
index ef161d8e7e799b4ff4cb3133cdd357408c3190fb..18e2d6b9215be37765280a7628b873dbb0e3e23f 100644 (file)
@@ -90,8 +90,8 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                         qApp->processEvents();
                     }
                     QString prodId = e.attribute("id");
-                    if (!e.isNull() && prodId != "black" && prodId.toInt() > 0) {
-                        addClip(e, e.attribute("id").toInt());
+                    if (!e.isNull() && prodId != "black" && !prodId.startsWith("slowmotion")/*&& prodId.toInt() > 0*/) {
+                        addClip(e, prodId);
                     }
                 }
 
@@ -102,11 +102,10 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                     for (int k = 0; k < maxchild; k++) {
                         e = markerslist.at(k).toElement();
                         if (e.tagName() == "marker") {
-                            int id = e.attribute("id").toInt();
-                            m_clipManager->getClipById(id)->addSnapMarker(GenTime(e.attribute("time").toDouble()), e.attribute("comment"));
+                            m_clipManager->getClipById(e.attribute("id"))->addSnapMarker(GenTime(e.attribute("time").toDouble()), e.attribute("comment"));
                         }
                     }
-                    m_document.removeChild(markers);
+                    westley.removeChild(markers);
                 }
                 m_document.removeChild(infoXmlNode);
 
@@ -278,7 +277,8 @@ void KdenliveDoc::convertDocument(double version) {
             pl.setAttribute("id", playlist_id);
         }
         track.setAttribute("producer", playlist_id);
-        tractor.appendChild(track);
+        //tractor.appendChild(track);
+        tractor.insertAfter(track, QDomNode());
     }
     tractor.removeChild(multitrack);
 
@@ -315,28 +315,90 @@ void KdenliveDoc::convertDocument(double version) {
     }
 
     // Fix filters format
-    QDomNodeList filters = m_document.elementsByTagName("filter");
-    max = filters.count();
+    QDomNodeList entries = m_document.elementsByTagName("entry");
+    max = entries.count();
     for (int i = 0; i < max; i++) {
-        QDomElement filt = filters.at(i).toElement();
-        QDomNamedNodeMap attrs = filt.attributes();
-        for (int j = 0; j < attrs.count(); j++) {
-            QDomAttr a = attrs.item(j).toAttr();
-            if (!a.isNull()) {
-                kDebug() << " FILTER; adding :" << a.name() << ":" << a.value();
+        QString last_id;
+        int effectix = 0;
+        QDomNode m = entries.at(i).firstChild();
+        while (!m.isNull()) {
+            if (m.toElement().tagName() == "filter") {
+                QDomElement filt = m.toElement();
+                QDomNamedNodeMap attrs = filt.attributes();
+                QString current_id = filt.attribute("kdenlive_id");
+                if (current_id != last_id) {
+                    effectix++;
+                    last_id = current_id;
+                }
                 QDomElement e = m_document.createElement("property");
-                e.setAttribute("name", a.name());
-                QDomText value = m_document.createTextNode(a.value());
+                e.setAttribute("name", "kdenlive_ix");
+                QDomText value = m_document.createTextNode(QString::number(effectix));
                 e.appendChild(value);
                 filt.appendChild(e);
+                for (int j = 0; j < attrs.count(); j++) {
+                    QDomAttr a = attrs.item(j).toAttr();
+                    if (!a.isNull()) {
+                        kDebug() << " FILTER; adding :" << a.name() << ":" << a.value();
+                        QDomElement e = m_document.createElement("property");
+                        e.setAttribute("name", a.name());
+                        QDomText value = m_document.createTextNode(a.value());
+                        e.appendChild(value);
+                        filt.appendChild(e);
+
+                    }
+                }
             }
+            m = m.nextSibling();
         }
     }
 
+    /*
+        QDomNodeList filters = m_document.elementsByTagName("filter");
+        max = filters.count();
+        QString last_id;
+        int effectix = 0;
+        for (int i = 0; i < max; i++) {
+            QDomElement filt = filters.at(i).toElement();
+            QDomNamedNodeMap attrs = filt.attributes();
+     QString current_id = filt.attribute("kdenlive_id");
+     if (current_id != last_id) {
+         effectix++;
+         last_id = current_id;
+     }
+     QDomElement e = m_document.createElement("property");
+            e.setAttribute("name", "kdenlive_ix");
+            QDomText value = m_document.createTextNode(QString::number(1));
+            e.appendChild(value);
+            filt.appendChild(e);
+            for (int j = 0; j < attrs.count(); j++) {
+                QDomAttr a = attrs.item(j).toAttr();
+                if (!a.isNull()) {
+                    kDebug() << " FILTER; adding :" << a.name() << ":" << a.value();
+                    QDomElement e = m_document.createElement("property");
+                    e.setAttribute("name", a.name());
+                    QDomText value = m_document.createTextNode(a.value());
+                    e.appendChild(value);
+                    filt.appendChild(e);
+                }
+            }
+        }*/
+
+    // fix slowmotion
+    QDomNodeList producers = westley.toElement().elementsByTagName("producer");
+    max = producers.count();
+    for (int i = 0; i < max; i++) {
+        QDomElement prod = producers.at(i).toElement();
+        if (prod.attribute("mlt_service") == "framebuffer") {
+            QString slowmotionprod = prod.attribute("resource");
+            slowmotionprod.replace(':', '?');
+            kDebug() << "// FOUND WRONG SLOWMO, new: " << slowmotionprod;
+            prod.setAttribute("resource", slowmotionprod);
+        }
+    }
 
-    // move markers to a global list
+    // move producers to correct place, markers to a global list, fix clip descriptions
     QDomElement markers = m_document.createElement("markers");
-    QDomNodeList producers = m_document.elementsByTagName("producer");
+    producers = m_document.elementsByTagName("producer");
     max = producers.count();
     for (int i = 0; i < max; i++) {
         QDomElement prod = producers.at(0).toElement();
@@ -350,6 +412,12 @@ void KdenliveDoc::convertDocument(double version) {
                 markers.insertAfter(mark, QDomNode());
             }
             prod.removeChild(m);
+        } else if (m.isText()) {
+            QString comment = m.nodeValue();
+            if (!comment.isEmpty()) {
+                prod.setAttribute("description", comment);
+            }
+            prod.removeChild(m);
         }
         int duration = prod.attribute("duration").toInt();
         if (duration > 0) prod.setAttribute("out", QString::number(duration));
@@ -465,7 +533,7 @@ Render *KdenliveDoc::renderer() {
     return m_render;
 }
 
-void KdenliveDoc::updateClip(int id) {
+void KdenliveDoc::updateClip(const QString &id) {
     emit updateClipDisplay(id);
 }
 
@@ -479,13 +547,13 @@ int KdenliveDoc::getFramePos(QString duration) {
     return m_timecode.getFrameCount(duration, m_fps);
 }
 
-QString KdenliveDoc::producerName(int id) {
+QString KdenliveDoc::producerName(const QString &id) {
     QString result = "unnamed";
     QDomNodeList prods = producersList();
     int ct = prods.count();
     for (int i = 0; i <  ct ; i++) {
         QDomElement e = prods.item(i).toElement();
-        if (e.attribute("id") != "black" && e.attribute("id").toInt() == id) {
+        if (e.attribute("id") != "black" && e.attribute("id") == id) {
             result = e.attribute("name");
             if (result.isEmpty()) result = KUrl(e.attribute("resource")).fileName();
             break;
@@ -494,25 +562,25 @@ QString KdenliveDoc::producerName(int id) {
     return result;
 }
 
-void KdenliveDoc::setProducerDuration(int id, int duration) {
+void KdenliveDoc::setProducerDuration(const QString &id, int duration) {
     QDomNodeList prods = producersList();
     int ct = prods.count();
     for (int i = 0; i <  ct ; i++) {
         QDomElement e = prods.item(i).toElement();
-        if (e.attribute("id") != "black" && e.attribute("id").toInt() == id) {
+        if (e.attribute("id") != "black" && e.attribute("id") == id) {
             e.setAttribute("duration", QString::number(duration));
             break;
         }
     }
 }
 
-int KdenliveDoc::getProducerDuration(int id) {
+int KdenliveDoc::getProducerDuration(const QString &id) {
     int result = 0;
     QDomNodeList prods = producersList();
     int ct = prods.count();
     for (int i = 0; i <  ct ; i++) {
         QDomElement e = prods.item(i).toElement();
-        if (e.attribute("id") != "black" && e.attribute("id").toInt() == id) {
+        if (e.attribute("id") != "black" && e.attribute("id") == id) {
             result = e.attribute("duration").toInt();
             break;
         }
@@ -588,31 +656,31 @@ QString KdenliveDoc::description() const {
         return m_url.fileName() + " / " + m_profile.description;
 }
 
-void KdenliveDoc::addClip(const QDomElement &elem, const int clipId) {
+void KdenliveDoc::addClip(const QDomElement &elem, const QString &clipId) {
     DocClipBase *clip = new DocClipBase(m_clipManager, elem, clipId);
     kDebug() << "/////////  DOCUM, CREATING NEW CLIP, ID:" << clipId << ", PAR ID:" << elem.attribute("groupid");
     m_clipManager->addClip(clip);
     emit addProjectClip(clip);
 }
 
-void KdenliveDoc::addFolder(const QString foldername, int clipId, bool edit) {
+void KdenliveDoc::addFolder(const QString foldername, const QString &clipId, bool edit) {
     emit addProjectFolder(foldername, clipId, false, edit);
 }
 
-void KdenliveDoc::deleteFolder(const QString foldername, int clipId) {
+void KdenliveDoc::deleteFolder(const QString foldername, const QString &clipId) {
     emit addProjectFolder(foldername, clipId, true);
 }
 
-void KdenliveDoc::deleteProjectClip(QList <int> ids) {
+void KdenliveDoc::deleteProjectClip(QList <QString> ids) {
     for (int i = 0; i < ids.size(); ++i) {
-        emit deletTimelineClip(ids.at(i));
+        emit deleteTimelineClip(ids.at(i));
         m_clipManager->slotDeleteClip(ids.at(i));
     }
     setModified(true);
 }
 
-void KdenliveDoc::deleteProjectFolder(QMap <QString, int> map) {
-    QMapIterator<QString, int> i(map);
+void KdenliveDoc::deleteProjectFolder(QMap <QString, QString> map) {
+    QMapIterator<QString, QString> i(map);
     while (i.hasNext()) {
         i.next();
         slotDeleteFolder(i.key(), i.value());
@@ -620,68 +688,68 @@ void KdenliveDoc::deleteProjectFolder(QMap <QString, int> map) {
     setModified(true);
 }
 
-void KdenliveDoc::deleteClip(const uint clipId) {
+void KdenliveDoc::deleteClip(const QString &clipId) {
     emit signalDeleteProjectClip(clipId);
     m_clipManager->deleteClip(clipId);
 }
 
-void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, const int groupId) {
+void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId) {
     m_clipManager->slotAddClipList(urls, group, groupId);
-    emit selectLastAddedClip(m_clipManager->lastClipId());
+    emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
     setModified(true);
 }
 
 
-void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const int groupId) {
+void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const QString &groupId) {
     kDebug() << "/////////  DOCUM, ADD CLP: " << url;
     m_clipManager->slotAddClipFile(url, group, groupId);
-    emit selectLastAddedClip(m_clipManager->lastClipId());
+    emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
     setModified(true);
 }
 
-void KdenliveDoc::slotAddTextClipFile(const QString path, const QString xml, const QString group, const int groupId) {
+void KdenliveDoc::slotAddTextClipFile(const QString path, const QString xml, const QString group, const QString &groupId) {
     kDebug() << "/////////  DOCUM, ADD TXT CLP: " << path;
     m_clipManager->slotAddTextClipFile(path, xml, group, groupId);
     setModified(true);
 }
 
 void KdenliveDoc::slotAddFolder(const QString folderName) {
-    AddFolderCommand *command = new AddFolderCommand(this, folderName, m_clipManager->getFreeClipId(), true);
+    AddFolderCommand *command = new AddFolderCommand(this, folderName, QString::number(m_clipManager->getFreeClipId()), true);
     commandStack()->push(command);
     setModified(true);
 }
 
-void KdenliveDoc::slotDeleteFolder(const QString folderName, const int id) {
+void KdenliveDoc::slotDeleteFolder(const QString folderName, const QString &id) {
     AddFolderCommand *command = new AddFolderCommand(this, folderName, id, false);
     commandStack()->push(command);
     setModified(true);
 }
 
-void KdenliveDoc::slotEditFolder(const QString newfolderName, const QString oldfolderName, int clipId) {
+void KdenliveDoc::slotEditFolder(const QString newfolderName, const QString oldfolderName, const QString &clipId) {
     EditFolderCommand *command = new EditFolderCommand(this, newfolderName, oldfolderName, clipId, false);
     commandStack()->push(command);
     setModified(true);
 }
 
-int KdenliveDoc::getFreeClipId() {
-    return m_clipManager->getFreeClipId();
+const QString&KdenliveDoc::getFreeClipId() {
+    return QString::number(m_clipManager->getFreeClipId());
 }
 
-DocClipBase *KdenliveDoc::getBaseClip(int clipId) {
+DocClipBase *KdenliveDoc::getBaseClip(const QString &clipId) {
     return m_clipManager->getClipById(clipId);
 }
 
-void KdenliveDoc::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId) {
+void KdenliveDoc::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId) {
     m_clipManager->slotAddColorClipFile(name, color, duration, group, groupId);
     setModified(true);
 }
 
-void KdenliveDoc::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const int groupId) {
+void KdenliveDoc::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const QString &groupId) {
     m_clipManager->slotAddSlideshowClipFile(name, path, count, duration, loop, fade, luma_duration, luma_file, softness, group, groupId);
     setModified(true);
 }
 
-void KdenliveDoc::slotCreateTextClip(QString group, int groupId) {
+void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId) {
     QString titlesFolder = projectFolder().path() + "/titles/";
     KStandardDirs::makeDir(titlesFolder);
     TitleWidget *dia_ui = new TitleWidget(KUrl(), titlesFolder, m_render, kapp->activeWindow());
@@ -696,12 +764,12 @@ void KdenliveDoc::slotCreateTextClip(QString group, int groupId) {
         QPixmap pix = dia_ui->renderedPixmap();
         pix.save(path + ".png");
         //dia_ui->saveTitle(path + ".kdenlivetitle");
-        slotAddTextClipFile(path, dia_ui->xml().toString(), QString(), -1);
+        slotAddTextClipFile(path, dia_ui->xml().toString(), QString(), QString());
     }
     delete dia_ui;
 }
 
-void KdenliveDoc::editTextClip(QString path, int id) {
+void KdenliveDoc::editTextClip(QString path, const QString &id) {
     DocClipBase *clip = m_clipManager->getClipById(id);
     if (!clip) return;
     TitleWidget *dia_ui = new TitleWidget(KUrl()/*path + ".kdenlivetitle")*/, path, m_render, kapp->activeWindow());
index e8320e194bb81fe0f2e755c1f3c2e0dde0043292..acf17cd023410035674fc92b26e5cc02046d0ea2 100644 (file)
@@ -57,30 +57,30 @@ Q_OBJECT public:
     QDomDocument toXml() const;
     void setRenderer(Render *render);
     QUndoStack *commandStack();
-    QString producerName(int id);
-    void setProducerDuration(int id, int duration);
-    int getProducerDuration(int id);
+    QString producerName(const QString &id);
+    void setProducerDuration(const QString &id, int duration);
+    int getProducerDuration(const QString &id);
     Render *renderer();
     QDomElement m_guidesXml;
     ClipManager *clipManager();
-    void addClip(const QDomElement &elem, const int clipId);
-    void addFolder(const QString foldername, int clipId, bool edit);
-    void deleteFolder(const QString foldername, int clipId);
-    void slotAddClipFile(const KUrl url, const QString group, const int groupId = -1);
-    void slotAddClipList(const KUrl::List urls, const QString group, const int groupId = -1);
-    void slotAddTextClipFile(const QString path, const QString xml, const QString group, const int groupId = -1);
-    void editTextClip(QString path, int id);
+    void addClip(const QDomElement &elem, const QString &clipId);
+    void addFolder(const QString foldername, const QString &clipId, bool edit);
+    void deleteFolder(const QString foldername, const QString &clipId);
+    void slotAddClipFile(const KUrl url, const QString group, const QString &groupId = QString());
+    void slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId = QString());
+    void slotAddTextClipFile(const QString path, const QString xml, const QString group, const QString &groupId = QString());
+    void editTextClip(QString path, const QString &id);
     void slotAddFolder(const QString folderName);
-    void slotDeleteFolder(const QString folderName, const int id);
-    void slotEditFolder(const QString folderName, const QString oldfolderName, int clipId);
-    void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId = -1);
-    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const int groupId = -1);
-    void deleteClip(const uint clipId);
+    void slotDeleteFolder(const QString folderName, const QString &id);
+    void slotEditFolder(const QString folderName, const QString oldfolderName, const QString &clipId);
+    void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId = QString());
+    void slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const QString &groupId = QString());
+    void deleteClip(const QString &clipId);
     int getFramePos(QString duration);
-    DocClipBase *getBaseClip(int clipId);
-    void updateClip(int id);
-    void deleteProjectClip(QList <int> ids);
-    void deleteProjectFolder(QMap <QString, int> map);
+    DocClipBase *getBaseClip(const QString &clipId);
+    void updateClip(const QString &id);
+    void deleteProjectClip(QList <QString> ids);
+    void deleteProjectFolder(QMap <QString, QString> map);
     /** Inform application of the audio thumbnails generation progress */
     void setThumbsProgress(const QString &message, int progress);
     QString profilePath() const;
@@ -92,7 +92,7 @@ Q_OBJECT public:
     void setProfilePath(QString path);
     /** Set to true if document needs saving, false otherwise */
     void setModified(bool mod);
-    int getFreeClipId();
+    const QString&getFreeClipId();
     /** does the document need saving */
     bool isModified() const;
     /** Returns project folder, used to store project files (titles, effects,...) */
@@ -133,22 +133,22 @@ private:
     void convertDocument(double version);
 
 public slots:
-    void slotCreateTextClip(QString group, int groupId);
+    void slotCreateTextClip(QString group, const QString &groupId);
 
 private slots:
     void slotAutoSave();
 
 signals:
     void addProjectClip(DocClipBase *);
-    void addProjectFolder(const QString, int, bool, bool edit = false);
-    void signalDeleteProjectClip(int);
-    void updateClipDisplay(int);
-    void deletTimelineClip(int);
+    void addProjectFolder(const QString, const QString &, bool, bool edit = false);
+    void signalDeleteProjectClip(const QString &);
+    void updateClipDisplay(const QString&);
+    void deleteTimelineClip(const QString&);
     void progressInfo(const QString &, int);
     /** emited when the document state has been modified (= needs saving or not) */
     void docModified(bool);
-    void refreshClipThumbnail(int);
-    void selectLastAddedClip(const int);
+    void refreshClipThumbnail(const QString &);
+    void selectLastAddedClip(const QString &);
 };
 
 #endif
index 6ad902e9962c7aa9b043d51fabee9e9425cc2cb2..1475f1a80aaa8828701fe7ec32be1d30124b88bf 100644 (file)
@@ -397,7 +397,7 @@ void MainWindow::slotRaiseMonitor(bool clipMonitor) {
     else projectMonitorDock->raise();
 }
 
-void MainWindow::slotSetClipDuration(int id, int duration) {
+void MainWindow::slotSetClipDuration(const QString &id, int duration) {
     if (!m_activeDocument) return;
     m_activeDocument->setProducerDuration(id, duration);
 }
@@ -407,13 +407,13 @@ void MainWindow::slotConnectMonitors() {
     m_projectList->setRenderer(m_clipMonitor->render);
     connect(m_projectList, SIGNAL(receivedClipDuration(int, int)), this, SLOT(slotSetClipDuration(int, int)));
     connect(m_projectList, SIGNAL(showClipProperties(DocClipBase *)), this, SLOT(slotShowClipProperties(DocClipBase *)));
-    connect(m_projectList, SIGNAL(getFileProperties(const QDomElement &, int)), m_clipMonitor->render, SLOT(getFileProperties(const QDomElement &, int)));
-    connect(m_clipMonitor->render, SIGNAL(replyGetImage(int, int, const QPixmap &, int, int)), m_projectList, SLOT(slotReplyGetImage(int, int, const QPixmap &, int, int)));
-    connect(m_clipMonitor->render, SIGNAL(replyGetFileProperties(int, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &)), m_projectList, SLOT(slotReplyGetFileProperties(int, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &)));
+    connect(m_projectList, SIGNAL(getFileProperties(const QDomElement &, const QString &)), m_clipMonitor->render, SLOT(getFileProperties(const QDomElement &, const QString &)));
+    connect(m_clipMonitor->render, SIGNAL(replyGetImage(const QString &, int, const QPixmap &, int, int)), m_projectList, SLOT(slotReplyGetImage(const QString &, int, const QPixmap &, int, int)));
+    connect(m_clipMonitor->render, SIGNAL(replyGetFileProperties(const QString &, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &)), m_projectList, SLOT(slotReplyGetFileProperties(const QString &, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &)));
 
-    connect(m_clipMonitor->render, SIGNAL(removeInvalidClip(int)), m_projectList, SLOT(slotRemoveInvalidClip(int)));
+    connect(m_clipMonitor->render, SIGNAL(removeInvalidClip(const QString &)), m_projectList, SLOT(slotRemoveInvalidClip(const QString &)));
 
-    connect(m_clipMonitor, SIGNAL(refreshClipThumbnail(int)), m_projectList, SLOT(slotRefreshClipThumbnail(int)));
+    connect(m_clipMonitor, SIGNAL(refreshClipThumbnail(const QString &)), m_projectList, SLOT(slotRefreshClipThumbnail(const QString &)));
 
     connect(m_clipMonitor, SIGNAL(adjustMonitorSize()), this, SLOT(slotAdjustClipMonitor()));
     connect(m_projectMonitor, SIGNAL(adjustMonitorSize()), this, SLOT(slotAdjustProjectMonitor()));
@@ -1039,12 +1039,12 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
             disconnect(m_projectMonitor, SIGNAL(renderPosition(int)), m_activeTimeline, SLOT(moveCursorPos(int)));
             disconnect(m_projectMonitor, SIGNAL(durationChanged(int)), m_activeTimeline, SLOT(setDuration(int)));
             disconnect(m_activeDocument, SIGNAL(addProjectClip(DocClipBase *)), m_projectList, SLOT(slotAddClip(DocClipBase *)));
-            disconnect(m_activeDocument, SIGNAL(addProjectFolder(const QString, int, bool, bool)), m_projectList, SLOT(slotAddFolder(const QString, int, bool, bool)));
-            disconnect(m_activeDocument, SIGNAL(signalDeleteProjectClip(int)), m_projectList, SLOT(slotDeleteClip(int)));
-            disconnect(m_activeDocument, SIGNAL(updateClipDisplay(int)), m_projectList, SLOT(slotUpdateClip(int)));
-            disconnect(m_activeDocument, SIGNAL(refreshClipThumbnail(int)), m_projectList, SLOT(slotRefreshClipThumbnail(int)));
-            disconnect(m_activeDocument, SIGNAL(selectLastAddedClip(const int)), m_projectList, SLOT(slotSelectClip(const int)));
-            disconnect(m_activeDocument, SIGNAL(deletTimelineClip(int)), m_activeTimeline, SLOT(slotDeleteClip(int)));
+            disconnect(m_activeDocument, SIGNAL(addProjectFolder(const QString, const QString &, bool, bool)), m_projectList, SLOT(slotAddFolder(const QString, const QString &, bool, bool)));
+            disconnect(m_activeDocument, SIGNAL(signalDeleteProjectClip(const QString &)), m_projectList, SLOT(slotDeleteClip(const QString &)));
+            disconnect(m_activeDocument, SIGNAL(updateClipDisplay(const QString &)), m_projectList, SLOT(slotUpdateClip(const QString &)));
+            disconnect(m_activeDocument, SIGNAL(refreshClipThumbnail(const QString &)), m_projectList, SLOT(slotRefreshClipThumbnail(const QString &)));
+            disconnect(m_activeDocument, SIGNAL(selectLastAddedClip(const QString &)), m_projectList, SLOT(slotSelectClip(const QString &)));
+            disconnect(m_activeDocument, SIGNAL(deleteTimelineClip(const QString &)), m_activeTimeline, SLOT(slotDeleteClip(const QString &)));
             disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
             disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), this, SLOT(slotActivateEffectStackView()));
             disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*)));
@@ -1077,13 +1077,13 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
     connect(m_projectMonitor, SIGNAL(renderPosition(int)), trackView, SLOT(moveCursorPos(int)));
     connect(m_projectMonitor, SIGNAL(durationChanged(int)), trackView, SLOT(setDuration(int)));
     connect(doc, SIGNAL(addProjectClip(DocClipBase *)), m_projectList, SLOT(slotAddClip(DocClipBase *)));
-    connect(doc, SIGNAL(addProjectFolder(const QString, int, bool, bool)), m_projectList, SLOT(slotAddFolder(const QString, int, bool, bool)));
-    connect(doc, SIGNAL(signalDeleteProjectClip(int)), m_projectList, SLOT(slotDeleteClip(int)));
-    connect(doc, SIGNAL(updateClipDisplay(int)), m_projectList, SLOT(slotUpdateClip(int)));
-    connect(doc, SIGNAL(refreshClipThumbnail(int)), m_projectList, SLOT(slotRefreshClipThumbnail(int)));
-    connect(doc, SIGNAL(selectLastAddedClip(const int)), m_projectList, SLOT(slotSelectClip(const int)));
+    connect(doc, SIGNAL(addProjectFolder(const QString, const QString &, bool, bool)), m_projectList, SLOT(slotAddFolder(const QString, const QString &, bool, bool)));
+    connect(doc, SIGNAL(signalDeleteProjectClip(const QString &)), m_projectList, SLOT(slotDeleteClip(const QString &)));
+    connect(doc, SIGNAL(updateClipDisplay(const QString &)), m_projectList, SLOT(slotUpdateClip(const QString &)));
+    connect(doc, SIGNAL(refreshClipThumbnail(const QString &)), m_projectList, SLOT(slotRefreshClipThumbnail(const QString &)));
+    connect(doc, SIGNAL(selectLastAddedClip(const QString &)), m_projectList, SLOT(slotSelectClip(const QString &)));
 
-    connect(doc, SIGNAL(deletTimelineClip(int)), trackView, SLOT(slotDeleteClip(int)));
+    connect(doc, SIGNAL(deleteTimelineClip(const QString &)), trackView, SLOT(slotDeleteClip(const QString &)));
     connect(doc, SIGNAL(docModified(bool)), this, SLOT(slotUpdateDocumentState(bool)));
 
 
@@ -1318,7 +1318,7 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip) {
         return;
     }
     ClipProperties dia(clip, m_activeDocument->timecode(), m_activeDocument->fps(), this);
-    connect(&dia, SIGNAL(addMarker(int, GenTime, QString)), m_activeTimeline->projectView(), SLOT(slotAddClipMarker(int, GenTime, QString)));
+    connect(&dia, SIGNAL(addMarker(const QString &, GenTime, QString)), m_activeTimeline->projectView(), SLOT(slotAddClipMarker(const QString &, GenTime, QString)));
     if (dia.exec() == QDialog::Accepted) {
         m_projectList->slotUpdateClipProperties(dia.clipId(), dia.properties());
         if (dia.needsTimelineRefresh()) {
index 07a54664b3f50c7bd86673fd69b68fb2b49d8866..68994486c1054d18e64f37e1de22f43b97d50acc 100644 (file)
@@ -177,7 +177,7 @@ private slots:
     void updateConfiguration();
     void slotConnectMonitors();
     void slotRaiseMonitor(bool clipMonitor);
-    void slotSetClipDuration(int id, int duration);
+    void slotSetClipDuration(const QString &id, int duration);
     void slotUpdateMousePosition(int pos);
     void slotAddEffect(QDomElement effect, GenTime pos = GenTime(), int track = -1);
     void slotEditProfiles();
index ca2b52952b936dfac2621aeecc6f5e6830d8f3b1..6dba626f8c8a1ff5221b552bce052e1903e481df 100644 (file)
@@ -106,7 +106,7 @@ public slots:
 signals:
     void renderPosition(int);
     void durationChanged(int);
-    void refreshClipThumbnail(int);
+    void refreshClipThumbnail(const QString &);
     void adjustMonitorSize();
 };
 
index 4e83180bafc015f93cc42efbb23bde6b277d00c1..4f3e2a913e3cadafb8fbd4d24ca443226bbddb8c 100644 (file)
@@ -38,44 +38,8 @@ const int DurationRole = NameRole + 1;
 const int UsageRole = NameRole + 2;
 
 
-ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, QDomElement xml, int clipId)
-        : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_clipType(UNKNOWN), m_clipId(clipId) {
-    QDomElement element = xml.cloneNode().toElement();
-    setSizeHint(0, QSize(65, 45));
-    setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
-    if (!element.isNull()) {
-        element.setAttribute("id", clipId);
-        QString cType = element.attribute("type", QString::null);
-        if (!cType.isEmpty()) {
-            m_clipType = (CLIPTYPE) cType.toInt();
-            slotSetToolTip();
-        }
-
-        if (m_clipType == COLOR || m_clipType == IMAGE || m_clipType == SLIDESHOW || m_clipType == TEXT)
-            element.setAttribute("duration", MAXCLIPDURATION);
-        else if (element.attribute("duration").isEmpty() && !element.attribute("out").isEmpty()) {
-            element.setAttribute("duration", element.attribute("out").toInt() - element.attribute("in").toInt());
-        }
-    }
-}
-
-ProjectItem::ProjectItem(QTreeWidgetItem * parent, const QStringList & strings, QDomElement xml, int clipId)
-        : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_clipType(UNKNOWN), m_clipId(clipId) {
-    QDomElement element = xml.cloneNode().toElement();
-    setSizeHint(0, QSize(65, 45));
-    setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
-    if (!element.isNull()) {
-        element.setAttribute("id", clipId);
-        QString cType = element.attribute("type", QString::null);
-        if (!cType.isEmpty()) {
-            m_clipType = (CLIPTYPE) cType.toInt();
-            slotSetToolTip();
-        }
-    }
-}
-
 // folder
-ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, int clipId)
+ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, const QString &clipId)
         : QTreeWidgetItem(parent, strings), m_clipType(FOLDER), m_groupName(strings.at(1)), m_clipId(clipId), m_clip(NULL) {
     setSizeHint(0, QSize(65, 45));
     setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
@@ -93,6 +57,7 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip)
     if (name.isEmpty()) name = KUrl(m_clip->getProperty("resource")).fileName();
     m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt();
     setText(1, name);
+    setText(2, m_clip->description());
     //kDebug() << "PROJECT ITE;. ADDING LCIP: " << m_clipId;
 }
 
@@ -106,6 +71,7 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip)
     if (name.isEmpty()) name = KUrl(m_clip->getProperty("resource")).fileName();
     m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt();
     setText(1, name);
+    setText(2, m_clip->description());
     //kDebug() << "PROJECT ITE;. ADDING LCIP: " << m_clipId;
 }
 
@@ -118,7 +84,7 @@ int ProjectItem::numReferences() const {
     return m_clip->numReferences();
 }
 
-int ProjectItem::clipId() const {
+const QString &ProjectItem::clipId() const {
     return m_clipId;
 }
 
@@ -258,4 +224,3 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con
 
 }
 
-#include "projectitem.moc"
index 048e8a0bc7a49b2130f3cc5e2bff364c49b6f59f..da261c427fc2e669bca7cd86f3297feebc442385 100644 (file)
 class DocClipBase;
 class ProjectItem : public QTreeWidgetItem {
 public:
-    ProjectItem(QTreeWidget * parent, const QStringList & strings, QDomElement xml, int clipId);
-    ProjectItem(QTreeWidgetItem * parent, const QStringList & strings, QDomElement xml, int clipId);
     /** Create folder item */
-    ProjectItem(QTreeWidget * parent, const QStringList & strings, int clipId);
+    ProjectItem(QTreeWidget * parent, const QStringList & strings, const QString &clipId);
     ProjectItem(QTreeWidget * parent, DocClipBase *clip);
     ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip);
     virtual ~ProjectItem();
@@ -44,7 +42,7 @@ public:
     int numReferences() const;
 
     void setProperties(const QMap < QString, QString > &attributes, const QMap < QString, QString > &metadata);
-    int clipId() const;
+    const QString &clipId() const;
     QStringList names() const;
     bool isGroup() const;
     const QString groupName() const;
@@ -59,7 +57,7 @@ public:
 private:
     QString m_groupName;
     CLIPTYPE m_clipType;
-    int m_clipId;
+    QString m_clipId;
     void slotSetToolTip();
     DocClipBase *m_clip;
 };
index 66c054e0b15bd3471ebc6de54ce11121ad684733..ede62c7ba5488e58dd77ba075fdb04df64b499ba 100644 (file)
@@ -147,7 +147,7 @@ void ProjectList::slotClipSelected() {
     }
 }
 
-void ProjectList::slotUpdateClipProperties(int id, QMap <QString, QString> properties) {
+void ProjectList::slotUpdateClipProperties(const QString &id, QMap <QString, QString> properties) {
     ProjectItem *item = getItemById(id);
     if (item) {
         slotUpdateClipProperties(item, properties);
@@ -195,8 +195,8 @@ void ProjectList::slotContextMenu(const QPoint &pos, QTreeWidgetItem *item) {
 void ProjectList::slotRemoveClip() {
     if (!listView->currentItem()) return;
     ProjectItem *item = static_cast <ProjectItem *>(listView->currentItem());
-    QList <int> ids;
-    QMap <QString, int> folderids;
+    QList <QString> ids;
+    QMap <QString, QString> folderids;
     if (item->clipType() == FOLDER) folderids[item->groupName()] = item->clipId();
     else ids << item->clipId();
     if (item->numReferences() > 0) {
@@ -213,13 +213,13 @@ void ProjectList::slotRemoveClip() {
     if (!folderids.isEmpty()) m_doc->deleteProjectFolder(folderids);
 }
 
-void ProjectList::selectItemById(const int clipId) {
+void ProjectList::selectItemById(const QString &clipId) {
     ProjectItem *item = getItemById(clipId);
     if (item) listView->setCurrentItem(item);
 }
 
 
-void ProjectList::slotDeleteClip(int clipId) {
+void ProjectList::slotDeleteClip(const QString &clipId) {
     ProjectItem *item = getItemById(clipId);
     QTreeWidgetItem *p = item->parent();
     if (p) {
@@ -237,7 +237,7 @@ void ProjectList::slotAddFolder() {
     m_doc->slotAddFolder(i18n("Folder")); //folderName);
 }
 
-void ProjectList::slotAddFolder(const QString foldername, int clipId, bool remove, bool edit) {
+void ProjectList::slotAddFolder(const QString foldername, const QString &clipId, bool remove, bool edit) {
     if (remove) {
         ProjectItem *item;
         QTreeWidgetItemIterator it(listView);
@@ -272,7 +272,7 @@ void ProjectList::slotAddFolder(const QString foldername, int clipId, bool remov
 }
 
 void ProjectList::slotAddClip(DocClipBase *clip) {
-    const int parent = clip->toXML().attribute("groupid").toInt();
+    const QString parent = clip->toXML().attribute("groupid");
     ProjectItem *item = NULL;
     if (parent != 0) {
         ProjectItem *parentitem = getItemById(parent);
@@ -296,7 +296,7 @@ void ProjectList::slotAddClip(DocClipBase *clip) {
     emit getFileProperties(clip->toXML(), clip->getId());
 }
 
-void ProjectList::slotUpdateClip(int id) {
+void ProjectList::slotUpdateClip(const QString &id) {
     ProjectItem *item = getItemById(id);
     item->setData(1, UsageRole, QString::number(item->numReferences()));
 }
@@ -305,11 +305,11 @@ void ProjectList::slotAddClip(QUrl givenUrl, QString group) {
     if (!m_commandStack) kDebug() << "!!!!!!!!!!!!!!!!  NO CMD STK";
     KUrl::List list;
     if (givenUrl.isEmpty()) {
-        list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr", this);
+        list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr video/mlt-playlist", this);
     } else list.append(givenUrl);
     if (list.isEmpty()) return;
 
-    int groupId = -1;
+    QString groupId = QString();
     if (group.isEmpty()) {
         ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
         if (item && item->clipType() != FOLDER) {
@@ -326,14 +326,14 @@ void ProjectList::slotAddClip(QUrl givenUrl, QString group) {
     m_doc->slotAddClipList(list, group, groupId);
 }
 
-void ProjectList::slotRemoveInvalidClip(int id) {
+void ProjectList::slotRemoveInvalidClip(const QString &id) {
     ProjectItem *item = getItemById(id);
     if (item) {
         QString path = item->referencedClip()->fileURL().path();
         if (!path.isEmpty()) KMessageBox::sorry(this, i18n("<qt>Clip <b>%1</b><br>is invalid, will be removed from project.", path));
 
     }
-    QList <int> ids;
+    QList <QString> ids;
     ids << id;
     m_doc->deleteProjectClip(ids);
 }
@@ -350,7 +350,7 @@ void ProjectList::slotAddColorClip() {
         color = color.replace(0, 1, "0x") + "ff";
 
         QString group = QString();
-        int groupId = -1;
+        QString groupId = QString();
         ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
         if (item && item->clipType() != FOLDER) {
             while (item->parent()) {
@@ -377,7 +377,7 @@ void ProjectList::slotAddSlideshowClip() {
     if (dia->exec() == QDialog::Accepted) {
 
         QString group = QString();
-        int groupId = -1;
+        QString groupId = QString();
         ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
         if (item && item->clipType() != FOLDER) {
             while (item->parent()) {
@@ -397,7 +397,7 @@ void ProjectList::slotAddSlideshowClip() {
 
 void ProjectList::slotAddTitleClip() {
     QString group = QString();
-    int groupId = -1;
+    QString groupId = QString();
     ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
     if (item && item->clipType() != FOLDER) {
         while (item->parent()) {
@@ -443,7 +443,7 @@ QDomElement ProjectList::producersList() {
     return prods;
 }
 
-void ProjectList::slotRefreshClipThumbnail(int clipId) {
+void ProjectList::slotRefreshClipThumbnail(const QString &clipId) {
     ProjectItem *item = getItemById(clipId);
     if (item) slotRefreshClipThumbnail(item);
 }
@@ -457,7 +457,7 @@ void ProjectList::slotRefreshClipThumbnail(ProjectItem *item) {
     }
 }
 
-void ProjectList::slotReplyGetFileProperties(int clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata) {
+void ProjectList::slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata) {
     ProjectItem *item = getItemById(clipId);
     if (item) {
         item->setProperties(properties, metadata);
@@ -466,12 +466,12 @@ void ProjectList::slotReplyGetFileProperties(int clipId, Mlt::Producer *producer
     } else kDebug() << "////////  COULD NOT FIND CLIP TO UPDATE PRPS...";
 }
 
-void ProjectList::slotReplyGetImage(int clipId, int pos, const QPixmap &pix, int w, int h) {
+void ProjectList::slotReplyGetImage(const QString &clipId, int pos, const QPixmap &pix, int w, int h) {
     ProjectItem *item = getItemById(clipId);
     if (item) item->setIcon(0, pix);
 }
 
-ProjectItem *ProjectList::getItemById(int id) {
+ProjectItem *ProjectList::getItemById(const QString &id) {
     QTreeWidgetItemIterator it(listView);
     while (*it) {
         if (((ProjectItem *)(*it))->clipId() == id)
@@ -482,7 +482,7 @@ ProjectItem *ProjectList::getItemById(int id) {
     return NULL;
 }
 
-void ProjectList::slotSelectClip(const int ix) {
+void ProjectList::slotSelectClip(const QString &ix) {
     ProjectItem *p = getItemById(ix);
     if (p) {
         listView->setCurrentItem(p);
index 124dd4b9f53f6ada09b4328a9d9fb05b88a011c1..08b46510ec38e03f5113e3abf0395588fe825222 100644 (file)
@@ -107,19 +107,19 @@ public:
 
     QDomElement producersList();
     void setRenderer(Render *projectRender);
-    void slotUpdateClipProperties(int id, QMap <QString, QString> properties);
+    void slotUpdateClipProperties(const QString &id, QMap <QString, QString> properties);
 
 public slots:
     void setDocument(KdenliveDoc *doc);
-    void slotReplyGetImage(int clipId, int pos, const QPixmap &pix, int w, int h);
-    void slotReplyGetFileProperties(int clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata);
+    void slotReplyGetImage(const QString &clipId, int pos, const QPixmap &pix, int w, int h);
+    void slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata);
     void slotAddClip(DocClipBase *clip);
-    void slotDeleteClip(int clipId);
-    void slotUpdateClip(int id);
-    void slotRefreshClipThumbnail(int clipId);
+    void slotDeleteClip(const QString &clipId);
+    void slotUpdateClip(const QString &id);
+    void slotRefreshClipThumbnail(const QString &clipId);
     void slotRefreshClipThumbnail(ProjectItem *item);
-    void slotRemoveInvalidClip(int id);
-    void slotSelectClip(const int ix);
+    void slotRemoveInvalidClip(const QString &id);
+    void slotSelectClip(const QString &ix);
 
 private:
     ProjectListView *listView;
@@ -131,8 +131,8 @@ private:
     QMenu *m_menu;
     QUndoStack *m_commandStack;
     int m_clipIdCounter;
-    void selectItemById(const int clipId);
-    ProjectItem *getItemById(int id);
+    void selectItemById(const QString &clipId);
+    ProjectItem *getItemById(const QString &id);
     QAction *m_editAction;
     QAction *m_deleteAction;
     KdenliveDoc *m_doc;
@@ -149,7 +149,7 @@ private slots:
     void slotAddTitleClip();
     void slotContextMenu(const QPoint &pos, QTreeWidgetItem *);
     void slotAddFolder();
-    void slotAddFolder(const QString foldername, int clipId, bool remove, bool edit);
+    void slotAddFolder(const QString foldername, const QString &clipId, bool remove, bool edit);
     /** This is triggered when a clip description has been modified */
     void slotItemEdited(QTreeWidgetItem *item, int column);
     void slotUpdateClipProperties(ProjectItem *item, QMap <QString, QString> properties);
@@ -159,8 +159,8 @@ private slots:
 
 signals:
     void clipSelected(DocClipBase *);
-    void getFileProperties(const QDomElement&, int);
-    void receivedClipDuration(int, int);
+    void getFileProperties(const QDomElement&, const QString &);
+    void receivedClipDuration(const QString &, int);
     void showClipProperties(DocClipBase *);
 };
 
index 779da5f4f3cf0dede2422d0057b390e9f57b48d1..4ef4653ca08df36a91d5b028b94d85f8642e4e7d 100644 (file)
@@ -149,17 +149,17 @@ void ProjectListView::dropEvent(QDropEvent *event) {
                 kDebug() << "////////////////  DROPPED RIGHT 1 ";
                 const QList <QTreeWidgetItem *> list = selectedItems();
                 ProjectItem *clone;
-                int parentId = item->clipId();
+                QString parentId = item->clipId();
                 foreach(QTreeWidgetItem *it, list) {
                     // TODO allow dragging of folders ?
-                    if (!((ProjectItem *) it)->isGroup() && ((ProjectItem *) it)->clipId() < 10000) {
+                    if (!((ProjectItem *) it)->isGroup()/* && ((ProjectItem *) it)->clipId() < 10000*/) {
                         if (it->parent()) clone = (ProjectItem*) it->parent()->takeChild(it->parent()->indexOfChild(it));
                         else clone = (ProjectItem*) takeTopLevelItem(indexOfTopLevelItem(it));
                         if (clone) {
                             item->addChild(clone);
                             QMap <QString, QString> props;
                             props.insert("groupname", item->groupName());
-                            props.insert("groupid", QString::number(parentId));
+                            props.insert("groupid", parentId);
                             clone->setProperties(props);
                         }
                     }
@@ -173,7 +173,7 @@ void ProjectListView::dropEvent(QDropEvent *event) {
             ProjectItem *clone;
             foreach(QTreeWidgetItem *it, list) {
                 QTreeWidgetItem *parent = it->parent();
-                if (parent && ((ProjectItem *) it)->clipId() < 10000)  {
+                if (parent/* && ((ProjectItem *) it)->clipId() < 10000*/)  {
                     kDebug() << "++ item parent: " << parent->text(1);
                     clone = (ProjectItem*) parent->takeChild(parent->indexOfChild(it));
                     if (clone) addTopLevelItem(clone);
@@ -215,7 +215,7 @@ void ProjectListView::mouseMoveEvent(QMouseEvent *event) {
             QStringList ids;
             foreach(const QTreeWidgetItem *item, list) {
                 // TODO allow dragging of folders
-                ids.append(QString::number(((ProjectItem *) item)->clipId()));
+                ids.append(((ProjectItem *) item)->clipId());
             }
             QByteArray data;
             data.append(ids.join(";").toUtf8()); //doc.toString().toUtf8());
index 9312052bdefdae3c709449c9efd76365f11f6245..a024bdf5fffe40a0d87bc18bc33e82651244d2cc 100644 (file)
@@ -459,7 +459,7 @@ void Render::slotSplitView(bool doit) {
     }
 }
 
-void Render::getFileProperties(const QDomElement &xml, int clipId) {
+void Render::getFileProperties(const QDomElement &xml, const QString &clipId) {
     int height = 50;
     int width = (int)(height  * m_mltProfile->dar());
     QMap < QString, QString > filePropertyMap;
@@ -494,7 +494,9 @@ void Render::getFileProperties(const QDomElement &xml, int clipId) {
         emit removeInvalidClip(clipId);
         return;
     }
-    producer->set("id", clipId);
+    char *tmp = decodedString(clipId);
+    producer->set("id", tmp);
+    delete[] tmp;
     int frameNumber = xml.attribute("thumbnail", "0").toInt();
     if (frameNumber != 0) producer->seek(frameNumber);
     mlt_properties properties = MLT_PRODUCER_PROPERTIES(producer->get_producer());
index 37a1b158b174bc56b60010b069ce0e7679bdcc2c..9e6c92d73705ab8ceaf5008a97b9d1bc0d6d5284 100644 (file)
@@ -226,11 +226,11 @@ private slots:  // Private slots
 
 signals:   // Signals
     /** emitted when the renderer recieves a reply to a getFileProperties request. */
-    void replyGetFileProperties(int clipId, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &);
+    void replyGetFileProperties(const QString &clipId, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &);
 
     /** emitted when the renderer recieves a reply to a getImage request. */
-    void replyGetImage(int , int, const QPixmap &, int, int);
-    void replyGetImage(int, const QPixmap &, int, int);
+    void replyGetImage(const QString & , int, const QPixmap &, int, int);
+    void replyGetImage(const QString &, const QPixmap &, int, int);
 
     /** Emitted when the renderer stops, either playing or rendering. */
     void stopped();
@@ -247,7 +247,7 @@ signals:   // Signals
     void durationChanged(int);
     void rendererPosition(int);
     void rendererStopped(int);
-    void removeInvalidClip(int);
+    void removeInvalidClip(const QString &);
 
 public slots:  // Public slots
     /** Start Consumer */
@@ -262,7 +262,7 @@ public slots:  // Public slots
     /** Wraps the VEML command of the same name. Requests the file properties
     for the specified url from the renderer. Upon return, the result will be emitted
     via replyGetFileProperties(). */
-    void getFileProperties(const QDomElement &xml, int clipId);
+    void getFileProperties(const QDomElement &xml, const QString &clipId);
 
     void exportFileToFirewire(QString srcFileName, int port, GenTime startTime, GenTime endTime);
     static char *decodedString(QString str);
index cb094e08413134c2c9c3ef6a42e73f6f98a67bb2..afe017278310e1628ecf46a094c7f13e6bdfe8b4 100644 (file)
@@ -251,7 +251,7 @@ void TrackView::parseDocument(QDomDocument doc) {
     //m_scrollBox->setGeometry(0, 0, 300 * zoomFactor(), m_scrollArea->height());
 }
 
-void TrackView::slotDeleteClip(int clipId) {
+void TrackView::slotDeleteClip(const QString &clipId) {
     m_trackview->deleteClip(clipId);
 }
 
@@ -337,12 +337,12 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool videotrack) {
             // Found a clip
             int in = elem.attribute("in").toInt();
             QString idString = elem.attribute("producer");
-            int id = idString.toInt();
+            QString id = idString;
             bool hasSpeedAttribute = false;
             double speed;
             if (idString.startsWith("slowmotion")) {
                 hasSpeedAttribute = true;
-                id = idString.section(":", 1, 1).toInt();
+                id = idString.section(":", 1, 1);
                 speed = idString.section(":", 2, 2).toDouble();
             }
             DocClipBase *clip = m_doc->clipManager()->getClipById(id);
index 95162db549938cc5a6f96f02e64843a6d4ab4d9d..1d4b979497eaaaa0f14f6c0dd0e723000cffa9df 100644 (file)
@@ -62,7 +62,7 @@ public:
 
 
 public slots:
-    void slotDeleteClip(int clipId);
+    void slotDeleteClip(const QString &clipId);
     void slotChangeZoom(int factor);
     void setDuration(int dur);
 
diff --git a/src/video-mlt-playlist.svgz b/src/video-mlt-playlist.svgz
new file mode 100644 (file)
index 0000000..5952575
Binary files /dev/null and b/src/video-mlt-playlist.svgz differ