[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdenlive/Applications/16.04] src: Fix editing of titles / slideshows
From:       Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date:       2016-03-31 20:37:33
Message-ID: E1aljLR-0001XQ-NC () scm ! kde ! org
[Download RAW message or body]

Git commit c88d97b9c144c434c5b81a4a93cfc249a7336f3c by Jean-Baptiste Mardelle.
Committed on 31/03/2016 at 20:37.
Pushed by mardelle into branch 'Applications/16.04'.

Fix editing of titles / slideshows

M  +35   -40   src/bin/bin.cpp
M  +2    -0    src/bin/bin.h
M  +5    -0    src/mltcontroller/clippropertiescontroller.cpp
M  +1    -0    src/mltcontroller/clippropertiescontroller.h

http://commits.kde.org/kdenlive/c88d97b9c144c434c5b81a4a93cfc249a7336f3c

diff --git a/src/bin/bin.cpp b/src/bin/bin.cpp
index 0f32e07..64ef6e4 100644
--- a/src/bin/bin.cpp
+++ b/src/bin/bin.cpp
@@ -1537,17 +1537,45 @@ void Bin::slotItemDoubleClicked(const QModelIndex &ix, const \
QPoint pos)  if (item->itemType() == AbstractProjectItem::ClipItem) {
             ProjectClip *clip = static_cast<ProjectClip*>(item);
             if (clip) {
-                if (clip->clipType() != Text) {
-                    m_editAction->trigger();
-                } else {
-                    m_propertiesPanel->setEnabled(false);
+                if (clip->clipType() == Text) {
                     showTitleWidget(clip);
+                } else if (clip->clipType() == SlideShow) {
+                    showSlideshowWidget(clip);
+                } else if (clip->clipType() == QText) {
+                    ClipCreationDialog::createQTextClip(m_doc, getFolderInfo(), \
this, clip); +                } else {
+                    m_editAction->trigger();
                 }
             }
         }
     }
 }
 
+void Bin::slotEditClip()
+{
+    QString panelId = m_propertiesPanel->property("clipId").toString();
+    QModelIndex current = m_proxyModel->selectionModel()->currentIndex();
+    AbstractProjectItem *item = \
static_cast<AbstractProjectItem*>(m_proxyModel->mapToSource(current).internalPointer());
 +    if (item->clipId() != panelId) {
+        // wrong clip
+        return;
+    }
+    ProjectClip *clip = qobject_cast<ProjectClip*>(item);
+    switch (clip->clipType()) {
+        case Text:
+            showTitleWidget(clip);
+            break;
+        case SlideShow:
+            showSlideshowWidget(clip);
+            break;
+        case QText:
+            ClipCreationDialog::createQTextClip(m_doc, getFolderInfo(), this, clip);
+            break;
+        default:
+            break;
+    }
+}
+
 void Bin::slotSwitchClipProperties(bool display)
 {
     m_propertiesDock->toggleViewAction()->trigger();
@@ -1563,11 +1591,7 @@ void Bin::slotSwitchClipProperties(const QModelIndex &ix)
         // User clicked in the icon, open clip properties
         AbstractProjectItem *item = \
static_cast<AbstractProjectItem*>(m_proxyModel->mapToSource(ix).internalPointer());  \
                ProjectClip *clip = qobject_cast<ProjectClip*>(item);
-        if (clip && clip->clipType() == Text) {
-            m_propertiesPanel->setEnabled(false);
-        } else {
-            m_propertiesPanel->setEnabled(true);
-        }
+        m_propertiesPanel->setEnabled(true);
         showClipProperties(clip);
     }
     else {
@@ -1594,45 +1618,16 @@ void Bin::showClipProperties(ProjectClip *clip, bool \
forceRefresh, bool openExte  return;
     }
     // Special case: text clips open title widget
-    if (clip->clipType() == Text) {
-        foreach (QWidget * w, \
                m_propertiesPanel->findChildren<ClipPropertiesController*>()) {
-            delete w;
-        }
-        m_propertiesPanel->setProperty("clipId", clip->clipId());
-        m_propertiesPanel->setEnabled(false);
-        return;
-    }
-    if (clip->clipType() == SlideShow) {
-        // Cleanup widget for new content
-        foreach (QWidget * w, \
                m_propertiesPanel->findChildren<ClipPropertiesController*>()) {
-            delete w;
-        }
-        m_propertiesPanel->setProperty("clipId", clip->clipId());
-        m_propertiesPanel->setEnabled(false);
-        showSlideshowWidget(clip);
-        return;
-    }
-    if (clip->clipType() == QText) {
-        // Cleanup widget for new content
-        foreach (QWidget * w, \
                m_propertiesPanel->findChildren<ClipPropertiesController*>()) {
-            delete w;
-        }
-        m_propertiesPanel->setProperty("clipId", clip->clipId());
-        m_propertiesPanel->setEnabled(false);
-        ClipCreationDialog::createQTextClip(m_doc, getFolderInfo(), this, clip);
-        return;
-    }
+    m_propertiesPanel->setEnabled(true);
     QString panelId = m_propertiesPanel->property("clipId").toString();
     if (!forceRefresh && panelId == clip->clipId()) {
         // the properties panel is already displaying current clip, do nothing
-        m_propertiesPanel->setEnabled(true);
         return;
     }
     // Cleanup widget for new content
     foreach (QWidget * w, \
m_propertiesPanel->findChildren<ClipPropertiesController*>()) {  delete w;
     }
-    m_propertiesPanel->setEnabled(true);
     m_propertiesPanel->setProperty("clipId", clip->clipId());
     QVBoxLayout *lay = static_cast<QVBoxLayout*>(m_propertiesPanel->layout());
     if (lay == 0) {
@@ -1645,7 +1640,7 @@ void Bin::showClipProperties(ProjectClip *clip, bool \
forceRefresh, bool openExte  connect(panel, SIGNAL(updateClipProperties(const QString \
&, QMap<QString, QString>, QMap<QString, QString>)), this, \
SLOT(slotEditClipCommand(const QString &, QMap<QString, QString>, QMap<QString, \
                QString>)));
     connect(panel, SIGNAL(seekToFrame(int)), m_monitor, SLOT(slotSeek(int)));
     connect(panel, SIGNAL(addMarkers(QString,QList<CommentedTime>)), this, \
                SLOT(slotAddClipMarker(QString,QList<CommentedTime>)));
-
+    connect(panel, SIGNAL(editClip()), this, SLOT(slotEditClip()));
     connect(panel, SIGNAL(editAnalysis(QString,QString,QString)), this, \
SLOT(slotAddClipExtraData(QString,QString,QString)));  
     connect(panel, SIGNAL(loadMarkers(QString)), this, \
                SLOT(slotLoadClipMarkers(QString)));
diff --git a/src/bin/bin.h b/src/bin/bin.h
index 739aca7..3f859f7 100644
--- a/src/bin/bin.h
+++ b/src/bin/bin.h
@@ -560,6 +560,8 @@ private slots:
     void doRefreshAudioThumbs(const QString &id);
     /** @brief Enable item view and hide message */
     void slotMessageActionTriggered();
+    /** @brief Request editing of title or slideshow clip */
+    void slotEditClip();
 
 public slots:
     void slotThumbnailReady(const QString &id, const QImage &img, bool fromFile = \
                false);
diff --git a/src/mltcontroller/clippropertiescontroller.cpp \
b/src/mltcontroller/clippropertiescontroller.cpp index 09d7c81..06a7c2a 100644
--- a/src/mltcontroller/clippropertiescontroller.cpp
+++ b/src/mltcontroller/clippropertiescontroller.cpp
@@ -222,6 +222,11 @@ ClipPropertiesController::ClipPropertiesController(Timecode tc, \
ClipController *  
     // Force properties
     QVBoxLayout *vbox = new QVBoxLayout;
+    if (m_type == Text || m_type == SlideShow || m_type == QText) {
+        QPushButton *editButton = new QPushButton(i18n("Edit Clip"), this);
+        connect(editButton, SIGNAL(clicked()), this, SIGNAL(editClip()));
+        vbox->addWidget(editButton);
+    }
     if (m_type == Color || m_type == Image || m_type == AV || m_type == Video || \
m_type == TextTemplate) {  // Edit duration widget
         m_originalProperties.insert(QStringLiteral("out"), m_properties.get("out"));
diff --git a/src/mltcontroller/clippropertiescontroller.h \
b/src/mltcontroller/clippropertiescontroller.h index f29d086..7c2517f 100644
--- a/src/mltcontroller/clippropertiescontroller.h
+++ b/src/mltcontroller/clippropertiescontroller.h
@@ -120,6 +120,7 @@ signals:
     void loadMarkers(const QString &);
     void saveMarkers(const QString &);
     void editAnalysis(const QString &id, const QString &name, const QString &value);
+    void editClip();
 };
 
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic