]> git.sesse.net Git - kdenlive/commitdiff
ask for a description when adding a cut zone to project tree
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 25 Nov 2009 13:58:51 +0000 (13:58 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 25 Nov 2009 13:58:51 +0000 (13:58 +0000)
svn path=/trunk/kdenlive/; revision=4145

src/addclipcutcommand.cpp
src/addclipcutcommand.h
src/projectlist.cpp
src/projectlist.h

index 0eb5e7e33b932aea82e332097ce489a549272753..d5bf0829e9a1ebdb014e20a098256ba5e9c1a038 100644 (file)
 
 #include <KLocale>
 
-AddClipCutCommand::AddClipCutCommand(ProjectList *list, const QString &id, int in, int out, const QString desc, bool remove, QUndoCommand * parent) :
+AddClipCutCommand::AddClipCutCommand(ProjectList *list, const QString &id, int in, int out, const QString desc, bool newItem, bool remove, QUndoCommand * parent) :
         QUndoCommand(parent),
         m_list(list),
         m_id(id),
         m_in(in),
         m_out(out),
         m_desc(desc),
+        m_newItem(newItem),
         m_remove(remove)
 {
     setText(i18n("Add clip cut"));
@@ -38,13 +39,13 @@ AddClipCutCommand::AddClipCutCommand(ProjectList *list, const QString &id, int i
 // virtual
 void AddClipCutCommand::undo()
 {
-    if (m_remove) m_list->addClipCut(m_id, m_in, m_out, m_desc);
+    if (m_remove) m_list->addClipCut(m_id, m_in, m_out, m_desc, m_newItem);
     else m_list->removeClipCut(m_id, m_in, m_out);
 }
 // virtual
 void AddClipCutCommand::redo()
 {
     if (m_remove) m_list->removeClipCut(m_id, m_in, m_out);
-    else m_list->addClipCut(m_id, m_in, m_out, m_desc);
+    else m_list->addClipCut(m_id, m_in, m_out, m_desc, m_newItem);
 }
 
index 7a8f832d2a202442e65494a489d245c7ebaec1a3..96f3239e1f18ee21bef13a02157842359ee71f7b 100644 (file)
@@ -29,7 +29,7 @@ class ProjectList;
 class AddClipCutCommand : public QUndoCommand
 {
 public:
-    AddClipCutCommand(ProjectList *list, const QString &id, int in, int out, const QString desc, bool remove, QUndoCommand * parent = 0);
+    AddClipCutCommand(ProjectList *list, const QString &id, int in, int out, const QString desc, bool newItem, bool remove, QUndoCommand * parent = 0);
 
     virtual void undo();
     virtual void redo();
@@ -40,6 +40,7 @@ private:
     int m_in;
     int m_out;
     QString m_desc;
+    bool m_newItem;
     bool m_remove;
 };
 
index 10be0cd1b18876cfe88390ac11e063eca09f99be..bc616543eccd772c163d111689344436e2f39827 100644 (file)
@@ -335,6 +335,7 @@ void ProjectList::slotClipSelected()
             ProjectItem *clip;
             if (m_listView->currentItem()->type() == PROJECTSUBCLIPTYPE) {
                 // this is a sub item, use base clip
+               m_deleteAction->setEnabled(true);
                 clip = static_cast <ProjectItem*>(m_listView->currentItem()->parent());
                 if (clip == NULL) kDebug() << "-----------ERROR";
                 SubProjectItem *sub = static_cast <SubProjectItem*>(m_listView->currentItem());
@@ -512,7 +513,7 @@ void ProjectList::slotRemoveClip()
             // subitem
             SubProjectItem *sub = static_cast <SubProjectItem *>(selected.at(i));
             ProjectItem *item = static_cast <ProjectItem *>(sub->parent());
-            new AddClipCutCommand(this, item->clipId(), sub->zone().x(), sub->zone().y(), sub->description(), true, delCommand);
+            new AddClipCutCommand(this, item->clipId(), sub->zone().x(), sub->zone().y(), sub->description(), false, true, delCommand);
         } else if (selected.at(i)->type() == PROJECTFOLDERTYPE) {
             // folder
             FolderProjectItem *folder = static_cast <FolderProjectItem *>(selected.at(i));
@@ -1271,11 +1272,11 @@ void ProjectList::slotAddClipCut(const QString &id, int in, int out)
     ProjectItem *clip = getItemById(id);
     if (clip == NULL) return;
     if (clip->referencedClip()->hasCutZone(QPoint(in, out))) return;
-    AddClipCutCommand *command = new AddClipCutCommand(this, id, in, out, QString(), false);
+    AddClipCutCommand *command = new AddClipCutCommand(this, id, in, out, QString(), true, false);
     m_commandStack->push(command);
 }
 
-void ProjectList::addClipCut(const QString &id, int in, int out, const QString desc)
+void ProjectList::addClipCut(const QString &id, int in, int out, const QString desc, bool newItem)
 {
     ProjectItem *clip = getItemById(id);
     if (clip) {
@@ -1283,6 +1284,10 @@ void ProjectList::addClipCut(const QString &id, int in, int out, const QString d
         base->addCutZone(in, out);
         m_listView->blockSignals(true);
         SubProjectItem *sub = new SubProjectItem(clip, in, out, desc);
+       if (newItem && desc.isEmpty() && !m_listView->isColumnHidden(1)) {
+           if (!clip->isExpanded()) clip->setExpanded(true);
+           m_listView->editItem(sub, 1);
+       }
         QPixmap p = clip->referencedClip()->thumbProducer()->extractImage(in, (int)(sub->sizeHint(0).height()  * m_render->dar()), sub->sizeHint(0).height() - 2);
         sub->setData(0, Qt::DecorationRole, p);
         m_doc->cachePixmap(clip->getClipHash() + '#' + QString::number(in), p);
index c7ef75d5d5a384c6bc67225ea4c61b56cebf04ba..708bcd30fa27ea775b6aa11dcf6443c88180dcac 100644 (file)
@@ -141,7 +141,7 @@ public:
     void cleanup();
     void trashUnusedClips();
     QList <DocClipBase*> documentClipList() const;
-    void addClipCut(const QString &id, int in, int out, const QString desc);
+    void addClipCut(const QString &id, int in, int out, const QString desc, bool newItem);
     void removeClipCut(const QString &id, int in, int out);
     void focusTree() const;
     SubProjectItem *getSubItem(ProjectItem *clip, QPoint zone);