]> git.sesse.net Git - kdenlive/commitdiff
Fix clip move in overwrite mode, fix crash in audio thumbs,
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 1 Nov 2009 15:46:59 +0000 (15:46 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 1 Nov 2009 15:46:59 +0000 (15:46 +0000)
fix audio/video thumbs button not working in project settings: issue 1228

svn path=/trunk/kdenlive/; revision=4084

src/customtrackview.cpp
src/docclipbase.cpp
src/kthumb.cpp
src/mainwindow.cpp
src/projectitem.cpp
src/renderer.cpp

index 2c2ec67c1e984d4779037d9211ebf08596012eed..43c5af46d8c79f3f1ad9f846d217cf139061f798 100644 (file)
@@ -1753,7 +1753,7 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo
         item->baseClip()->addReference();
         m_document->updateClip(item->baseClip()->getId());
         setDocumentModified();
-        KdenliveSettings::setSnaptopoints(snap);
+       KdenliveSettings::setSnaptopoints(snap);
         return dup;
         //kDebug() << "/////////  CUTTING CLIP RESULT: (" << item->startPos().frames(25) << "-" << item->endPos().frames(25) << "), DUP: (" << dup->startPos().frames(25) << "-" << dup->endPos().frames(25) << ")" << ", CUT: " << cutTime.frames(25);
     } else {
@@ -1779,7 +1779,7 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo
 
         bool snap = KdenliveSettings::snaptopoints();
         KdenliveSettings::setSnaptopoints(false);
-
+       
         if (dup->isSelected()) emit clipItemSelected(NULL);
         dup->baseClip()->removeReference();
         m_document->updateClip(dup->baseClip()->getId());
@@ -1794,7 +1794,7 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo
             setDocumentModified();
         } else
             emit displayMessage(i18n("Error when resizing clip"), ErrorMessage);
-        KdenliveSettings::setSnaptopoints(snap);
+       KdenliveSettings::setSnaptopoints(snap);
         return item;
 
     }
@@ -2049,24 +2049,24 @@ void CustomTrackView::dropEvent(QDropEvent * event)
         m_commandStack->push(addCommand);
         setDocumentModified();
 
-        /*
-        // debug info
-        QRectF rect(0, 1 * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), 2);
-        QList<QGraphicsItem *> selection = m_scene->items(rect);
-        QStringList timelineList;
-
-        kDebug()<<"// ITEMS on TRACK: "<<selection.count();
-        for (int i = 0; i < selection.count(); i++) {
-               if (selection.at(i)->type() == AVWIDGET) {
-                   ClipItem *clip = static_cast <ClipItem *>(selection.at(i));
-                   int start = clip->startPos().frames(m_document->fps());
-                   int end = clip->endPos().frames(m_document->fps());
-                   timelineList.append(QString::number(start) + "-" + QString::number(end));
-            }
-        }
-        kDebug() << "// COMPARE:\n" << timelineList << "\n-------------------";
-        */
+       /*
+       // debug info
+       QRectF rect(0, 1 * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), 2);
+       QList<QGraphicsItem *> selection = m_scene->items(rect);
+       QStringList timelineList;
 
+       kDebug()<<"// ITEMS on TRACK: "<<selection.count();
+       for (int i = 0; i < selection.count(); i++) {
+        if (selection.at(i)->type() == AVWIDGET) {
+            ClipItem *clip = static_cast <ClipItem *>(selection.at(i));
+            int start = clip->startPos().frames(m_document->fps());
+            int end = clip->endPos().frames(m_document->fps());
+            timelineList.append(QString::number(start) + "-" + QString::number(end));
+           }
+       }
+       kDebug() << "// COMPARE:\n" << timelineList << "\n-------------------";
+       */
+       
         m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
         if (items.count() > 1) groupSelectedItems(true);
         event->setDropAction(Qt::MoveAction);
@@ -2082,8 +2082,8 @@ void CustomTrackView::adjustTimelineClips(EDITMODE mode, ClipItem *item, ItemInf
         bool snap = KdenliveSettings::snaptopoints();
         KdenliveSettings::setSnaptopoints(false);
         ItemInfo info;
-        if (item == NULL) info = posinfo;
-        else info = item->info();
+       if (item == NULL) info = posinfo;
+       else info = item->info();
         QRectF rect(info.startPos.frames(m_document->fps()), info.track * m_tracksHeight + m_tracksHeight / 2, (info.endPos - info.startPos).frames(m_document->fps()) - 1, 5);
         QList<QGraphicsItem *> selection = m_scene->items(rect);
         if (item) selection.removeAll(item);
@@ -2106,13 +2106,7 @@ void CustomTrackView::adjustTimelineClips(EDITMODE mode, ClipItem *item, ItemInf
                         new RazorClipCommand(this, clipInfo, info.startPos, false, command);
                         new ResizeClipCommand(this, dupInfo, newdupInfo, false, false, command);
                         ClipItem *dup = cutClip(clipInfo, info.startPos, true, false);
-                        if (dup) dup->resizeStart(info.endPos.frames(m_document->fps()));
-                        kDebug() << "-----------------------------";
-
-                        kDebug() << "///RES+CUT: " << dup->startPos().frames(25) << "x" << dup->endPos().frames(25);
-                        kDebug() << "-----------------------------";
-
-
+                        if (dup) dup->resizeStart(info.endPos.frames(m_document->fps()));                      
                     } else {
                         ItemInfo newclipInfo = clip->info();
                         newclipInfo.endPos = info.startPos;
@@ -3343,10 +3337,10 @@ void CustomTrackView::deleteClip(ItemInfo info, bool refresh)
     // animate item deletion
     if (refresh) item->closeAnimation();
     else {
-        // no refresh, means we have several operations chained, we need to delete clip immediatly
-        // so that it does not get in the way of the other
-        delete item;
-        item = NULL;
+       // no refresh, means we have several operations chained, we need to delete clip immediatly 
+       // so that it does not get in the way of the other
+       delete item;
+       item = NULL;
     }
 #else
     delete item;
@@ -3420,7 +3414,7 @@ void CustomTrackView::deleteSelectedClips()
     else if (transitionCount > 0 && groupCount == 0 && clipCount == 0)
         deleteSelected->setText(i18np("Delete selected transition", "Delete selected transitions", transitionCount));
     else deleteSelected->setText(i18n("Delete selected items"));
-    m_commandStack->push(deleteSelected);
+    m_commandStack->push(deleteSelected);    
 }
 
 void CustomTrackView::changeClipSpeed()
index 6a72de10498b2e7273fc650b4bfa1c89b417d4b2..e6fbc7543da04e6fa4eed5031421f2465b1e995a 100644 (file)
@@ -82,7 +82,7 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QStrin
     //if (!url.isEmpty() && QFile::exists(url.path()))
     {
         m_thumbProd = new KThumb(clipManager, url, m_id, m_properties.value("file_hash"));
-        if (m_clipType == AV || m_clipType == AUDIO) slotCreateAudioTimer();
+        if (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST) slotCreateAudioTimer();
     }
     //kDebug() << "type is video" << (m_clipType == AV) << " " << m_clipType;
 }
@@ -140,7 +140,7 @@ void DocClipBase::slotCreateAudioTimer()
 
 void DocClipBase::askForAudioThumbs()
 {
-    if (m_thumbProd) m_thumbProd->askForAudioThumbs(getId());
+    if (m_thumbProd && m_audioTimer) slotGetAudioThumbs();
 }
 
 void DocClipBase::slotClearAudioCache()
@@ -191,7 +191,7 @@ void DocClipBase::setClipType(CLIPTYPE type)
     m_clipType = type;
 
     m_properties.insert("type", QString::number((int) type));
-    if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO))
+    if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST))
         slotCreateAudioTimer();
 }
 
@@ -836,16 +836,15 @@ QMap <QString, QString> DocClipBase::properties() const
 bool DocClipBase::slotGetAudioThumbs()
 {
     if (m_thumbProd == NULL) return false;
-    if (!KdenliveSettings::audiothumbnails()) {
+    if (!KdenliveSettings::audiothumbnails() || m_audioTimer == NULL) {
         if (m_audioTimer != NULL) m_audioTimer->stop();
         return false;
     }
     if (m_audioThumbCreated) {
-        if (m_audioTimer != NULL) m_audioTimer->stop();
+        m_audioTimer->stop();
         return false;
     }
-    if (m_audioTimer != NULL)
-        m_audioTimer->start(1500);
+    m_audioTimer->start(1500);
     double lengthInFrames = duration().frames(KdenliveSettings::project_fps());
     m_thumbProd->getAudioThumbs(2, 0, lengthInFrames /*must be number of frames*/, 20);
     return true;
index d9a38f3124e08b48b6ec19ec3d9252116210ecb5..dcbb27ce7f7a06768549ede2e0c604e822abe8e4 100644 (file)
@@ -402,7 +402,7 @@ void KThumb::getAudioThumbs(int channel, double frame, double frameLength, int a
         if (m_audioThumbProducer.isRunning()) return;
         m_audioThumbProducer.init(m_url, m_thumbFile, frame, frameLength, m_frequency, m_channels, arrayWidth);
         m_audioThumbProducer.start(QThread::LowestPriority);
-        kDebug() << "STARTING GENERATE THMB FOR: " << m_url << " ................................";
+        // kDebug() << "STARTING GENERATE THMB FOR: " <<m_id<<", URL: "<< m_url << " ................................";
     }
 }
 
index a9489893dc198430abf55dc6d78505aa8427a885..9e3af1e836b73306da044cb1df12ebcf40a0accb 100644 (file)
@@ -1418,10 +1418,8 @@ void MainWindow::newFile(bool showProjectSettings)
         ProjectSettings *w = new ProjectSettings(NULL, QStringList(), projectTracks.x(), projectTracks.y(), KdenliveSettings::defaultprojectfolder(), false, true, this);
         if (w->exec() != QDialog::Accepted) return;
         if (!KdenliveSettings::activatetabs()) closeCurrentDocument();
-        KdenliveSettings::setVideothumbnails(w->enableVideoThumbs());
-        m_buttonVideoThumbs->setChecked(KdenliveSettings::videothumbnails());
-        KdenliveSettings::setAudiothumbnails(w->enableAudioThumbs());
-        m_buttonAudioThumbs->setChecked(KdenliveSettings::audiothumbnails());
+       if (KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs();
+        if (KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs();
         profileName = w->selectedProfile();
         projectFolder = w->selectedFolder();
         projectTracks = w->tracks();
@@ -1788,6 +1786,8 @@ void MainWindow::slotEditProjectSettings()
         QString profile = w->selectedProfile();
         m_activeDocument->setProjectFolder(w->selectedFolder());
         if (m_renderWidget) m_renderWidget->setDocumentPath(w->selectedFolder().path(KUrl::AddTrailingSlash));
+       if (KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs();
+        if (KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs();
         if (m_activeDocument->profilePath() != profile) {
             // Profile was changed
             double dar = m_activeDocument->dar();
index 7efcef3da411f362bd81a8fa5aec803709384325..7252867e780e1dc20369b4ee388476cee96f0607 100644 (file)
@@ -57,7 +57,7 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) :
     if (m_clipType != UNKNOWN) slotSetToolTip();
     setText(1, name);
     setText(2, m_clip->description());
-    if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs();
+    m_clip->askForAudioThumbs();
     GenTime duration = m_clip->duration();
     if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
     //setFlags(Qt::NoItemFlags);
@@ -76,7 +76,7 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) :
     m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt();
     setText(1, name);
     setText(2, m_clip->description());
-    if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs();
+    m_clip->askForAudioThumbs();
     GenTime duration = m_clip->duration();
     if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
     //setFlags(Qt::NoItemFlags);
@@ -249,7 +249,7 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con
     }
     m_clip->setProperties(attributes);
     m_clip->setMetadata(metadata);
-    if ((m_clipType == AV || m_clipType == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs();
+    m_clip->askForAudioThumbs();
 
     if (m_clip->description().isEmpty()) {
         if (metadata.contains("description")) {
index 0ece7e18ab0ff30ccb7f6e9ee04c0e1d746b0233..04aeffbf47a20cca9ae1d2018b98f4e04fee08c1 100644 (file)
@@ -2880,8 +2880,8 @@ bool Render::mltMoveClip(int startTrack, int endTrack, int moveStart, int moveEn
 
             if (overwrite) {
                 destTrackPlaylist.remove_region(moveEnd, clip->get_playtime());
-                int clipIndex = trackPlaylist.get_clip_index_at(moveEnd);
-                trackPlaylist.insert_blank(clipIndex, clip->get_playtime() - 1);
+                int clipIndex = destTrackPlaylist.get_clip_index_at(moveEnd);
+                destTrackPlaylist.insert_blank(clipIndex, clip->get_playtime() - 1);
             }
 
             int newIndex = destTrackPlaylist.insert_at(moveEnd, clip, 1);