]> git.sesse.net Git - kdenlive/commitdiff
Drag and drop from effects list
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 1 Mar 2008 20:29:42 +0000 (20:29 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 1 Mar 2008 20:29:42 +0000 (20:29 +0000)
svn path=/branches/KDE4/; revision=1967

14 files changed:
src/CMakeLists.txt
src/clipitem.cpp
src/clipitem.h
src/customtrackview.cpp
src/customtrackview.h
src/effectslistview.cpp
src/effectslistview.h
src/effectslistwidget.cpp [new file with mode: 0644]
src/effectslistwidget.h [new file with mode: 0644]
src/events.h
src/mainwindow.cpp
src/mainwindow.h
src/projectlistview.cpp
src/widgets/effectlist_ui.ui

index 81b50c2560ba543a76c38dc5639c9207bb0bc438..3c544e542a1b16695e8e32cc4c4a7384ad150f8f 100644 (file)
@@ -84,6 +84,7 @@ set(kdenlive_SRCS
   complexparameter.cpp
   titlewidget.cpp
   graphicsscenerectmove.cpp
+  effectslistwidget.cpp
 )
 
 kde4_add_kcfg_files(kdenlive_SRCS GENERATE_MOC kdenlivesettings.kcfgc )
index 398727e1e2965355283abf278841ab05325995d2..8a5f5c35fb30f6df7d10e2057a217b36f98b05d0 100644 (file)
 #include <QGraphicsScene>
 #include <QGraphicsView>
 #include <QScrollBar>
+#include <QMimeData>
+#include <QApplication>
+
 #include <KDebug>
 
 #include <mlt++/Mlt.h>
 
 #include "clipitem.h"
 #include "renderer.h"
+#include "events.h"
 #include "kdenlivesettings.h"
 
 ClipItem::ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration)
@@ -195,6 +199,8 @@ void ClipItem::animate(qreal value)
                            QWidget *widget)
  {
     painter->setOpacity(m_opacity);
+    if (isSelected()) setBrush(QColor(150, 50, 100));
+    else setBrush(QColor(100, 100, 150));
     QRectF br = rect();
         QRect rectInView;//this is the rect that is visible by the user
         if (scene()->views().size()>0){ 
@@ -326,7 +332,6 @@ void ClipItem::animate(qreal value)
       painter->setFont(font);
     }
 
-    if (isSelected())  painter->fillRect(br.intersected(rectInView), QBrush(QColor(200,20,0,80)));
     pen.setColor(Qt::red);
     //pen.setStyle(Qt::DashDotDotLine); //Qt::DotLine);
     if (isSelected()) painter->setPen(pen);
@@ -689,6 +694,28 @@ void ClipItem::deleteEffect(QString index)
   update(boundingRect());
 }
 
+//virtual
+void ClipItem::dropEvent ( QGraphicsSceneDragDropEvent * event )  
+{
+    QString effects = QString(event->mimeData()->data("kdenlive/effectslist"));
+    QDomDocument doc;
+    doc.setContent(effects, true);
+    QDomElement e = doc.documentElement();
+    if (QApplication::activeWindow()) 
+       QApplication::postEvent(QApplication::activeWindow(), new EffectEvent(GenTime(m_startPos, 25), m_track, e, (QEvent::Type)10010));
+}
+
+//virtual
+void ClipItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
+{
+  kDebug()<<"DRAG EVNET, FORMAT: "<<event->mimeData()->formats();
+  event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist"));
+}
+
+void ClipItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
+{
+    Q_UNUSED(event);
+}
 
 // virtual 
 /*
index 6d89f16b6aa58bf6174660f49499dbcb34b17b12..74f782e43ef29f7968f066ef477b3487b7776e7f 100644 (file)
@@ -86,6 +86,9 @@ class ClipItem : public QObject, public QGraphicsRectItem
     virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
     virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event );
     virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event );
+    virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
 
   private:
     QDomElement m_xml;
index 7689c982874d7c87b45eb6725a27fca79761f647..bd02ba1d7c7b828d1d485a8ff7cd151e46d207b5 100644 (file)
@@ -323,9 +323,9 @@ void CustomTrackView::mousePressEvent ( QMouseEvent * event )
 
 void CustomTrackView::dragEnterEvent( QDragEnterEvent * event )
 {
-  if (event->mimeData()->hasText()) {
-    kDebug()<<"///////////////  DRAG ENTERED, TEXT: "<<event->mimeData()->text();
-    QStringList ids = QString(event->mimeData()->text()).split(";");
+  if (event->mimeData()->hasFormat("kdenlive/producerslist")) {
+    kDebug()<<"///////////////  DRAG ENTERED, TEXT: "<<event->mimeData()->data("kdenlive/producerslist");
+    QStringList ids = QString(event->mimeData()->data("kdenlive/producerslist")).split(";");
     //TODO: drop of several clips
     for (int i = 0; i < ids.size(); ++i) {
     }
@@ -369,11 +369,19 @@ void CustomTrackView::deleteEffect(int track, GenTime pos, QDomElement effect)
        }
 }
 
-void CustomTrackView::slotAddEffect(QDomElement effect)
+void CustomTrackView::slotAddEffect(QDomElement effect, GenTime pos, int track)
 {
-  QList<QGraphicsItem *> itemList = items();
+  QList<QGraphicsItem *> itemList;
+  if (track == -1)
+    itemList = items();
+  else {
+    ClipItem *clip = getClipItemAt(pos.frames(m_document->fps()) + 1, track);
+    if (clip) itemList.append(clip);
+    else kDebug()<<"------   wrning, clip eff not found";
+  }
+  kDebug()<<"// REQUESTING EFFECT ON CLIP: "<<pos.frames(25)<<", TRK: "<<track;
   for (int i = 0; i < itemList.count(); i++) {
-    if (itemList.at(i)->type() == 70000 && itemList.at(i)->isSelected()) {
+    if (itemList.at(i)->type() == 70000 && (itemList.at(i)->isSelected() || track != -1)) {
       ClipItem *item = (ClipItem *)itemList.at(i);
       // the kdenlive_ix int is used to identify an effect in mlt's playlist, should
       // not be changed
@@ -427,7 +435,7 @@ void CustomTrackView::dragMoveEvent(QDragMoveEvent * event) {
   }
        //if (item) {
   event->setDropAction(Qt::MoveAction);
-  if (event->mimeData()->hasText()) {
+  if (event->mimeData()->hasFormat("kdenlive/producerslist")) {
     event->acceptProposedAction();
   }
   else QGraphicsView::dragMoveEvent(event);
@@ -461,7 +469,7 @@ QStringList CustomTrackView::mimeTypes () const
     QStringList qstrList;
     // list of accepted mime types for drop
     qstrList.append("text/plain");
-    qstrList.append("application/x-qabstractitemmodeldatalist");
+    qstrList.append("kdenlive/producerslist");
     return qstrList;
 }
 
index be95cbb2cb616dee5ab982b5c30623b810bd70d6..5e394d0ec0aa6736eb681c98613b508f8c89cf12 100644 (file)
@@ -49,7 +49,7 @@ class CustomTrackView : public QGraphicsView
     void deleteClip ( int track, int startpos, const QRectF &rect );
     void setScale(double scaleFactor);
     void deleteClip(int clipId);
-    void slotAddEffect(QDomElement effect);
+    void slotAddEffect(QDomElement effect, GenTime pos, int track);
     void addEffect(int track, GenTime pos, QDomElement effect);
     void deleteEffect(int track, GenTime pos, QDomElement effect);
     void updateEffect(int track, GenTime pos, QDomElement effect);
index d501aa7ebf4c881cf78358e6b20e2705bd49b927..140e1a4a0128fa3085bcd0e7eb28adb6b3ce153c 100644 (file)
 
 #include "effectslistview.h"
 
-#define EFFECT_VIDEO 1
-#define EFFECT_AUDIO 2
-#define EFFECT_CUSTOM 3
-
 EffectsListView::EffectsListView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent)
-    : QWidget(parent), m_audioList(audioEffectList), m_videoList(videoEffectList), m_customList(customEffectList)
+    : QWidget(parent)
 {
+  m_effectsList = new EffectsListWidget(audioEffectList, videoEffectList, customEffectList);
+
   ui.setupUi(this);
-  ui.effectlist->setSortingEnabled(true);
-  ui.search_effect->setListWidget(ui.effectlist);
+  QVBoxLayout *lyr = new QVBoxLayout(ui.effectlistframe);
+  lyr->addWidget(m_effectsList);
+  ui.search_effect->setListWidget(m_effectsList);
   ui.buttonInfo->setIcon(KIcon("help-about"));
   ui.infopanel->hide();
 
-  initList();
-
   connect(ui.type_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(filterList(int)));
   connect (ui.buttonInfo, SIGNAL (clicked()), this, SLOT (showInfoPanel()));
-  connect(ui.effectlist, SIGNAL(itemSelectionChanged()), this, SLOT(slotUpdateInfo()));
-  connect(ui.effectlist, SIGNAL(doubleClicked(QListWidgetItem *,const QPoint &)), this, SLOT(slotEffectSelected()));
+  connect(m_effectsList, SIGNAL(itemSelectionChanged()), this, SLOT(slotUpdateInfo()));
+  connect(m_effectsList, SIGNAL(doubleClicked(QListWidgetItem *,const QPoint &)), this, SLOT(slotEffectSelected()));
 
-  ui.effectlist->setCurrentRow(0); 
+  m_effectsList->setCurrentRow(0); 
 }
 
-void EffectsListView::initList()
-{
-  ui.effectlist->clear();
-  QStringList names = m_videoList->effectNames();
-  QListWidgetItem *item;
-  foreach (QString str, names) {
-    item = new QListWidgetItem(str, ui.effectlist);
-    item->setData(Qt::UserRole, QString::number((int) EFFECT_VIDEO));
-  }
-
-  names = m_audioList->effectNames();
-  foreach (QString str, names) {
-    item = new QListWidgetItem(str, ui.effectlist);
-    item->setData(Qt::UserRole, QString::number((int) EFFECT_AUDIO));
-  }
-
-  names = m_customList->effectNames();
-  foreach (QString str, names) {
-    item = new QListWidgetItem(str, ui.effectlist);
-    item->setData(Qt::UserRole, QString::number((int) EFFECT_CUSTOM));
-  }
-}
 
 void EffectsListView::filterList(int pos)
 {
   QListWidgetItem *item;
-  for (int i = 0; i < ui.effectlist->count(); i++)
+  for (int i = 0; i < m_effectsList->count(); i++)
   {
-    item = ui.effectlist->item(i);
+    item = m_effectsList->item(i);
     if (pos == 0) item->setHidden(false);
     else if (item->data(Qt::UserRole).toInt() == pos) item->setHidden(false);
     else item->setHidden(true);
   }
-  item = ui.effectlist->currentItem();
+  item = m_effectsList->currentItem();
   if (item) {
     if (item->isHidden()) {
       int i;
-      for (i = 0; i < ui.effectlist->count() && ui.effectlist->item(i)->isHidden(); i++);
-      ui.effectlist->setCurrentRow(i);
+      for (i = 0; i < m_effectsList->count() && m_effectsList->item(i)->isHidden(); i++);
+      m_effectsList->setCurrentRow(i);
     }
-    else ui.effectlist->scrollToItem(item);
+    else m_effectsList->scrollToItem(item);
   }
 }
 
@@ -104,47 +79,19 @@ void EffectsListView::showInfoPanel()
 
 void EffectsListView::slotEffectSelected()
 {
-  QListWidgetItem *item = ui.effectlist->currentItem();
-  if (!item) return;
-  QDomElement effect;
-  switch (item->data(Qt::UserRole).toInt())
-  {
-    case 1:
-      effect = m_videoList->getEffectByName(ui.effectlist->currentItem()->text());
-      break;
-    case 2:
-      effect = m_audioList->getEffectByName(ui.effectlist->currentItem()->text());
-      break;
-    default:
-      effect = m_customList->getEffectByName(ui.effectlist->currentItem()->text());
-      break;
-  }
-  emit addEffect(effect);
+  QDomElement effect = m_effectsList->currentEffect();
+  if (!effect.isNull()) emit addEffect(effect);
 }
 
 void EffectsListView::slotUpdateInfo()
 {
-  QListWidgetItem *item = ui.effectlist->currentItem();
-  if (!item) return;
-  QString info; 
-  switch (item->data(Qt::UserRole).toInt())
-  {
-  case 1:
-    info = m_videoList->getInfo(ui.effectlist->currentItem()->text());
-    break;
-  case 2:
-    info = m_audioList->getInfo(ui.effectlist->currentItem()->text());
-    break;
-  default:
-    info = m_customList->getInfo(ui.effectlist->currentItem()->text());
-    break;
-  }
-  ui.infopanel->setText(info);
+  QString info = m_effectsList->currentInfo(); 
+  if (!info.isEmpty()) ui.infopanel->setText(info);
 }
 
 KListWidget *EffectsListView::listView()
 {
-  return ui.effectlist;
+  return m_effectsList;
 }
 
 #include "effectslistview.moc"
index f6045675c71f985a547bda09f3f35129c5b27fa7..3cca6c59353d6527b07048257e6b7b8018d1577b 100644 (file)
@@ -24,6 +24,8 @@
 #include <KIcon>
 
 #include "ui_effectlist_ui.h"
+#include "effectslistwidget.h"
+#include "gentime.h"
 #include "effectslist.h"
 
 class EffectsListView : public QWidget
@@ -33,15 +35,13 @@ class EffectsListView : public QWidget
   public:
     EffectsListView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent=0);
     KListWidget *listView(); 
+    //void slotAddEffect(GenTime pos, int track, QString name);
 
   private:
     Ui::EffectList_UI ui;
-    EffectsList *m_audioList;
-    EffectsList *m_videoList;
-    EffectsList *m_customList;
+    EffectsListWidget *m_effectsList;
 
   private slots:
-    void initList();
     void filterList(int pos);
     void slotUpdateInfo();
     void showInfoPanel();
@@ -51,7 +51,6 @@ class EffectsListView : public QWidget
 
   signals:
     void addEffect(QDomElement);
 };
 
 #endif
diff --git a/src/effectslistwidget.cpp b/src/effectslistwidget.cpp
new file mode 100644 (file)
index 0000000..0754180
--- /dev/null
@@ -0,0 +1,170 @@
+/***************************************************************************
+ *   Copyright (C) 2007 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
+ ***************************************************************************/
+
+#include "QApplication"
+#include "QMouseEvent"
+
+#include "KDebug"
+
+#include "effectslistwidget.h"
+
+#define EFFECT_VIDEO 1
+#define EFFECT_AUDIO 2
+#define EFFECT_CUSTOM 3
+
+EffectsListWidget::EffectsListWidget(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent)
+    : KListWidget(parent), m_audioList(audioEffectList), m_videoList(videoEffectList), m_customList(customEffectList)
+{
+  //setSelectionMode(QAbstractItemView::ExtendedSelection);
+  //setDragDropMode(QAbstractItemView::DragDrop);
+  setDropIndicatorShown(true);
+  setAlternatingRowColors(true);
+  setSortingEnabled(true);
+  setDragEnabled(true);
+  setAcceptDrops(true);
+  initList();
+}
+
+EffectsListWidget::~EffectsListWidget()
+{
+}
+
+void EffectsListWidget::initList()
+{
+  clear();
+  QStringList names = m_videoList->effectNames();
+  QListWidgetItem *item;
+  foreach (QString str, names) {
+    item = new QListWidgetItem(str, this);
+    item->setData(Qt::UserRole, QString::number((int) EFFECT_VIDEO));
+  }
+
+  names = m_audioList->effectNames();
+  foreach (QString str, names) {
+    item = new QListWidgetItem(str, this);
+    item->setData(Qt::UserRole, QString::number((int) EFFECT_AUDIO));
+  }
+
+  names = m_customList->effectNames();
+  foreach (QString str, names) {
+    item = new QListWidgetItem(str, this);
+    item->setData(Qt::UserRole, QString::number((int) EFFECT_CUSTOM));
+  }
+}
+
+QDomElement EffectsListWidget::currentEffect()
+{
+  return itemEffect(currentItem());
+}
+
+QDomElement EffectsListWidget::itemEffect(QListWidgetItem *item)
+{
+  QDomElement effect;
+  if (!item) return effect;
+  switch (item->data(Qt::UserRole).toInt())
+  {
+    case 1:
+      effect = m_videoList->getEffectByName(item->text());
+      break;
+    case 2:
+      effect = m_audioList->getEffectByName(item->text());
+      break;
+    default:
+      effect = m_customList->getEffectByName(item->text());
+      break;
+  }
+  return effect;
+}
+
+
+QString EffectsListWidget::currentInfo()
+{
+  QListWidgetItem *item = currentItem();
+  if (!item) return QString();
+  QString info;
+  switch (item->data(Qt::UserRole).toInt())
+  {
+  case 1:
+    info = m_videoList->getInfo(item->text());
+    break;
+  case 2:
+    info = m_audioList->getInfo(item->text());
+    break;
+  default:
+    info = m_customList->getInfo(item->text());
+    break;
+  }
+  return info;
+}
+
+// virtual
+void EffectsListWidget::mousePressEvent(QMouseEvent *event)
+{
+    if( event->button() == Qt::LeftButton )
+    {
+        this->m_DragStartPosition = event->pos();
+        m_dragStarted = true;
+    }
+    KListWidget::mousePressEvent(event);
+}
+
+// virtual
+void EffectsListWidget::mouseMoveEvent(QMouseEvent *event)
+{
+  if (!m_dragStarted) return;
+  if ((event->pos() - m_DragStartPosition).manhattanLength()
+            < QApplication::startDragDistance())
+        return;
+  {
+    QListWidgetItem *clickItem = itemAt(event->pos());
+    if (clickItem) {
+      QDrag *drag = new QDrag(this);
+      QMimeData *mimeData = new QMimeData;
+      QList <QListWidgetItem *> list;
+      list = selectedItems();
+      QDomDocument doc;
+      foreach (QListWidgetItem *item, list) {
+         doc.appendChild(doc.importNode(itemEffect(item), true));
+      }
+      QByteArray data;
+      data.append(doc.toString().toUtf8());
+      mimeData->setData("kdenlive/effectslist", data );
+      drag->setMimeData(mimeData);
+      //drag->setPixmap(clickItem->icon(0).pixmap(50 *16/9.0, 50));
+      drag->setHotSpot(QPoint(0, 50));
+      drag->start(Qt::MoveAction);
+    }
+    //event->accept(); 
+  }
+}
+
+void EffectsListWidget::dragMoveEvent(QDragMoveEvent * event) {
+        event->setDropAction(Qt::IgnoreAction);
+        //if (item) {
+                event->setDropAction(Qt::MoveAction);
+                if (event->mimeData()->hasText()) {
+                        event->acceptProposedAction();
+                }
+        //}
+}
+
+
+
+#include "effectslistwidget.moc"
diff --git a/src/effectslistwidget.h b/src/effectslistwidget.h
new file mode 100644 (file)
index 0000000..ac85e0d
--- /dev/null
@@ -0,0 +1,53 @@
+/***************************************************************************
+ *   Copyright (C) 2007 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
+ ***************************************************************************/
+
+
+#ifndef EFFECTLISTWIDGET_H
+#define EFFECTLISTWIDGET_H
+
+#include <KListWidget>
+#include "effectslist.h"
+
+class EffectsListWidget : public KListWidget
+{
+  Q_OBJECT
+  
+  public:
+    EffectsListWidget(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent=0);
+    virtual ~EffectsListWidget();
+    QDomElement currentEffect();
+    QString currentInfo();
+    QDomElement itemEffect(QListWidgetItem *item);
+
+  protected:
+    virtual void mousePressEvent(QMouseEvent *event);
+    virtual void mouseMoveEvent(QMouseEvent *event);
+    virtual void dragMoveEvent(QDragMoveEvent *event);
+
+  private:
+    bool m_dragStarted;
+    QPoint m_DragStartPosition;
+    EffectsList *m_audioList;
+    EffectsList *m_videoList;
+    EffectsList *m_customList;
+    void initList();
+
+ };
+
+#endif
index ecc11f9ef64c952d6ddde24c327355361a19e16a..0f7743d549cba151667cac65df39ac1e17e42881 100644 (file)
@@ -20,6 +20,8 @@
 
 #include <QEvent>
 
+#include "gentime.h"
+
 class ProgressEvent : public QEvent {
 public:
        ProgressEvent( int value, QEvent::Type eventType  )
@@ -30,4 +32,22 @@ private:
        
 };
 
+
+class EffectEvent : public QEvent {
+public:
+       EffectEvent( GenTime pos, int track, QDomElement xml, QEvent::Type eventType  )
+               : QEvent( eventType ), m_pos( pos ), m_track(track), m_xml(xml) {
+       if (xml.isNull()) kDebug()<<"--- ERROR, TRYING TO APPEND NULL EFFECT EVENT";    
+       if (m_xml.isNull()) kDebug()<<"--- ERROR, TRYING TO APPEND NULL EFFECT EVENT 2";
+       };
+       GenTime pos() const { return m_pos; };
+       int track() const { return m_track; };
+       QDomElement xml() const { return m_xml; };
+private:
+       GenTime m_pos;
+       int m_track;
+       QDomElement m_xml;
+       
+};
+
 #endif
index 1455498e9728081856ed676c00b4d44476cccc24..be6ac10b1cd74c7ea2d0a70d1d910174a9374547 100644 (file)
@@ -178,7 +178,7 @@ bool MainWindow::queryClose()
   }
 }
 
-void MainWindow::slotAddEffect(QDomElement effect)
+void MainWindow::slotAddEffect(QDomElement effect, GenTime pos, int track)
 {
   if (!m_activeDocument) return;
   /*QMap <QString, QString> filter;
@@ -188,8 +188,12 @@ void MainWindow::slotAddEffect(QDomElement effect)
     filter = m_audioEffects.effect(effectName);
   else 
     filter = m_customEffects.effect(effectName);*/
+  if (effect.isNull()) {
+    kDebug()<<"--- ERROR, TRYING TO APPEND NULL EFFECT";
+    return;
+  }
   TrackView *currentTimeLine = (TrackView *) m_timelineArea->currentWidget();
-  currentTimeLine->projectView()->slotAddEffect(effect);
+  currentTimeLine->projectView()->slotAddEffect(effect, pos, track);
 }
 
 void MainWindow::slotRaiseMonitor(bool clipMonitor)
@@ -523,5 +527,10 @@ void MainWindow::customEvent ( QEvent * event ){
                        statusProgressBar->setVisible(false);
                }
        }
+       if (event->type()==10010){
+               EffectEvent* p=(EffectEvent*) event;
+               slotAddEffect(p->xml(), p->pos(), p->track());
+       }
+
 }
 #include "mainwindow.moc"
index 4f7f24979eb36fd515493d13714ca75beffc7ba0..5be8803f05dd0ccc6acc7913056bc21c3744f0bd 100644 (file)
@@ -120,7 +120,7 @@ class MainWindow : public KXmlGuiWindow
     void slotRaiseMonitor(bool clipMonitor);
     void slotSetClipDuration(int id, int duration);
     void slotUpdateMousePosition(int pos);
-    void slotAddEffect(QDomElement effect);
+    void slotAddEffect(QDomElement effect, GenTime pos = GenTime(), int track = -1);
     void slotEditProfiles();
     void slotEditProjectSettings();
     void slotDisplayActionMessage( QAction *a);
index e03bfea5732f339ca6e4dd298f240d216ca8bdb9..ab2b7b924cde300aa9b89c5f9584fcb739d6454b 100644 (file)
@@ -163,10 +163,10 @@ void ProjectListView::mouseMoveEvent(QMouseEvent *event)
        if (!((ProjectItem *) item)->isGroup())
          ids.append(QString::number(((ProjectItem *) item)->clipId()));
       }
-      //QByteArray data;
-      //data.append(doc.toString().toUtf8());
-      //mimeData->setData("kdenlive/westley",data );
-      mimeData->setText(ids.join(";")); //doc.toString());
+      QByteArray data;
+      data.append(ids.join(";").toUtf8()); //doc.toString().toUtf8());
+      mimeData->setData("kdenlive/producerslist",data );
+      //mimeData->setText(ids.join(";")); //doc.toString());
       //mimeData->setImageData(image);
       drag->setMimeData(mimeData);
       drag->setPixmap(clickItem->icon(0).pixmap(50 *16/9.0, 50));
index 3b423f9e52c5f933662a4b92b1e61c32fe40bfb1..34e4ec1ad4c650de142c853d3368911712483857 100644 (file)
@@ -10,9 +10,6 @@
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout" >
-   <property name="margin" >
-    <number>0</number>
-   </property>
    <item row="0" column="0" >
     <widget class="KComboBox" name="type_combo" >
      <item>
     </widget>
    </item>
    <item row="1" column="0" colspan="3" >
-    <widget class="QSplitter" name="splitter" >
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
+    <widget class="QFrame" name="effectlistframe" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Expanding" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="frameShape" >
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Raised</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="3" >
+    <widget class="QTextEdit" name="infopanel" >
+     <property name="frameShape" >
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="readOnly" >
+      <bool>true</bool>
      </property>
-     <widget class="KListWidget" name="effectlist" >
-      <property name="dragEnabled" >
-       <bool>true</bool>
-      </property>
-      <property name="alternatingRowColors" >
-       <bool>true</bool>
-      </property>
-     </widget>
-     <widget class="QTextEdit" name="infopanel" >
-      <property name="frameShape" >
-       <enum>QFrame::StyledPanel</enum>
-      </property>
-      <property name="frameShadow" >
-       <enum>QFrame::Sunken</enum>
-      </property>
-      <property name="readOnly" >
-       <bool>true</bool>
-      </property>
-     </widget>
     </widget>
    </item>
   </layout>
    <extends>QComboBox</extends>
    <header>kcombobox.h</header>
   </customwidget>
-  <customwidget>
-   <class>KListWidget</class>
-   <extends>QListWidget</extends>
-   <header>klistwidget.h</header>
-  </customwidget>
   <customwidget>
    <class>KListWidgetSearchLine</class>
    <extends>KLineEdit</extends>