]> git.sesse.net Git - kdenlive/blobdiff - src/projectlist.h
Implement clipmanager
[kdenlive] / src / projectlist.h
index 6495944a3f9f489b2dbface814d3f89086434eda..dc1fa24a278e61ae85af42f3b8461f33f8b26e56 100644 (file)
 #include <QDomNodeList>
 #include <QToolBar>
 #include <QTreeWidget>
+#include <QPainter>
 
 #include <KUndoStack>
 #include <KTreeWidgetSearchLine>
+#include <KExtendableItemDelegate>
 
-#include "docclipbase.h"
+#include "definitions.h"
 #include "kdenlivedoc.h"
 #include "renderer.h"
 #include "timecode.h"
 
 class ProjectItem;
 
+  const int NameRole = Qt::UserRole;
+  const int DurationRole = NameRole + 1;
+  const int FullPathRole = NameRole + 2;
+  const int ClipTypeRole = NameRole + 3;
+
+class ItemDelegate: public KExtendableItemDelegate
+{
+  public:
+    ItemDelegate(QAbstractItemView* parent = 0): KExtendableItemDelegate(parent)
+    {
+    }
+/*
+void expand()
+{
+  QWidget *w = new QWidget;
+  QVBoxLayout *layout = new QVBoxLayout;
+  layout->addWidget( new KColorButton(w)); 
+  w->setLayout( layout );
+  extendItem(w, 
+}
+*/
+
+void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
+{
+  if (index.column() == 1)
+  {
+    const bool hover = option.state & (QStyle::State_Selected|QStyle::State_MouseOver|QStyle::State_HasFocus);
+    QRect r1 = option.rect;
+    painter->save();
+    if (hover) {
+        painter->setPen(option.palette.color(QPalette::HighlightedText));
+        QColor backgroundColor = option.palette.color(QPalette::Highlight);
+        painter->setBrush(QBrush(backgroundColor));
+       painter->fillRect(r1, QBrush(backgroundColor));
+    }
+    QFont font = painter->font();
+    font.setPointSize(font.pointSize() - 1 );
+    font.setBold(true);
+    painter->setFont(font);
+    int mid = (int) ((r1.height() / 2 ));
+    r1.setBottom(r1.y() + mid);
+    QRect r2 = option.rect;
+    r2.setTop(r2.y() + mid);
+    painter->drawText(r1, Qt::AlignLeft | Qt::AlignBottom , index.data().toString());
+    //painter->setPen(Qt::green);
+    font.setBold(false);
+    painter->setFont(font);
+    painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , index.data(DurationRole).toString());
+    painter->restore();
+  }
+  else
+  {
+    KExtendableItemDelegate::paint(painter, option, index);
+  }
+}
+};
+
 class ProjectList : public QWidget
 {
   Q_OBJECT
@@ -55,6 +114,7 @@ class ProjectList : public QWidget
     void addProducer(QDomElement producer, int parentId = -1);
     void slotReplyGetImage(int clipId, int pos, const QPixmap &pix, int w, int h);
     void slotReplyGetFileProperties(int clipId, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata);
+    void slotAddClip(DocClipBase *clip);
 
 
   private:
@@ -71,6 +131,8 @@ class ProjectList : public QWidget
     ProjectItem *getItemById(int id);
     QAction *m_editAction;
     QAction *m_deleteAction;
+    ItemDelegate *m_listViewDelegate;
+    KdenliveDoc *m_doc;
 
   private slots:
     void slotAddClip(QUrl givenUrl = QUrl(), const QString &group = QString::null);
@@ -81,6 +143,8 @@ class ProjectList : public QWidget
     void slotEditClip(QTreeWidgetItem *, int);
     void slotContextMenu( const QPoint &pos, QTreeWidgetItem * );
     void slotAddFolder();
+    /** This is triggered when a clip description has been modified */
+    void slotUpdateItemDescription(QTreeWidgetItem *item, int column);
     //void slotShowMenu(const QPoint &pos);