+#include "titlewidget.h"
+
+
+#include "definitions.h"
+#include "clipmanager.h"
+#include "docclipbase.h"
+#include "kdenlivedoc.h"
+#include "renderer.h"
+#include "kthumb.h"
+#include "projectlistview.h"
+
+ProjectList::ProjectList(QWidget *parent)
+ : QWidget(parent), m_render(NULL), m_fps(-1), m_commandStack(NULL), m_selectedItem(NULL), m_infoQueue(QMap <QString, QDomElement> ()), m_thumbnailQueue(QList <QString> ()), m_refreshed(false) {
+
+ QWidget *vbox = new QWidget;
+ listView = new ProjectListView(this);;
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->setContentsMargins(0, 0, 0, 0);
+ m_clipIdCounter = 0;
+ // setup toolbar
+ searchView = new KTreeWidgetSearchLine(this);
+ m_toolbar = new QToolBar("projectToolBar", this);
+ m_toolbar->addWidget(searchView);
+
+ QToolButton *addButton = new QToolButton(m_toolbar);
+ QMenu *addMenu = new QMenu(this);
+ addButton->setMenu(addMenu);
+ addButton->setPopupMode(QToolButton::MenuButtonPopup);
+ m_toolbar->addWidget(addButton);
+
+ QAction *addClipButton = addMenu->addAction(KIcon("kdenlive-add-clip"), i18n("Add Clip"));
+ connect(addClipButton, SIGNAL(triggered()), this, SLOT(slotAddClip()));
+
+ QAction *addColorClip = addMenu->addAction(KIcon("kdenlive-add-color-clip"), i18n("Add Color Clip"));
+ connect(addColorClip, SIGNAL(triggered()), this, SLOT(slotAddColorClip()));
+
+ QAction *addSlideClip = addMenu->addAction(KIcon("kdenlive-add-slide-clip"), i18n("Add Slideshow Clip"));
+ connect(addSlideClip, SIGNAL(triggered()), this, SLOT(slotAddSlideshowClip()));
+
+ QAction *addTitleClip = addMenu->addAction(KIcon("kdenlive-add-text-clip"), i18n("Add Title Clip"));
+ connect(addTitleClip, SIGNAL(triggered()), this, SLOT(slotAddTitleClip()));
+
+ m_deleteAction = m_toolbar->addAction(KIcon("edit-delete"), i18n("Delete Clip"));
+ connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(slotRemoveClip()));
+
+ m_editAction = m_toolbar->addAction(KIcon("document-properties"), i18n("Edit Clip"));
+ connect(m_editAction, SIGNAL(triggered()), this, SLOT(slotEditClip()));
+
+ QAction *addFolderButton = addMenu->addAction(KIcon("folder-new"), i18n("Create Folder"));
+ connect(addFolderButton, SIGNAL(triggered()), this, SLOT(slotAddFolder()));
+
+ addButton->setDefaultAction(addClipButton);
+
+ layout->addWidget(m_toolbar);
+ layout->addWidget(listView);
+ setLayout(layout);
+ //m_toolbar->setEnabled(false);
+
+ searchView->setTreeWidget(listView);
+
+ m_menu = new QMenu();
+ m_menu->addAction(addClipButton);
+ m_menu->addAction(addColorClip);
+ m_menu->addAction(addSlideClip);
+ m_menu->addAction(addTitleClip);
+ m_menu->addAction(m_editAction);
+ m_menu->addAction(m_deleteAction);
+ m_menu->addAction(addFolderButton);
+ m_menu->insertSeparator(m_deleteAction);
+
+ connect(listView, SIGNAL(itemSelectionChanged()), this, SLOT(slotClipSelected()));
+ connect(listView, SIGNAL(focusMonitor()), this, SLOT(slotClipSelected()));
+ connect(listView, SIGNAL(pauseMonitor()), this, SLOT(slotPauseMonitor()));
+ connect(listView, SIGNAL(requestMenu(const QPoint &, QTreeWidgetItem *)), this, SLOT(slotContextMenu(const QPoint &, QTreeWidgetItem *)));
+ connect(listView, SIGNAL(addClip()), this, SLOT(slotAddClip()));
+ connect(listView, SIGNAL(addClip(QUrl, const QString &)), this, SLOT(slotAddClip(QUrl, const QString &)));
+ connect(listView, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotItemEdited(QTreeWidgetItem *, int)));
+ connect(listView, SIGNAL(showProperties(DocClipBase *)), this, SIGNAL(showClipProperties(DocClipBase *)));
+
+ ItemDelegate *listViewDelegate = new ItemDelegate(listView);
+ listView->setItemDelegate(listViewDelegate);
+}
+
+ProjectList::~ProjectList() {
+ delete m_menu;
+ delete m_toolbar;
+}
+
+QByteArray ProjectList::headerInfo() {
+ return listView->header()->saveState();
+}
+
+void ProjectList::setHeaderInfo(const QByteArray &state) {
+ listView->header()->restoreState(state);
+}
+
+void ProjectList::slotEditClip() {
+ ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
+ if (item && !item->isGroup()) {
+ emit clipSelected(item->referencedClip());
+ emit showClipProperties(item->referencedClip());
+ }
+}