#include <KDebug>
#include <KLocale>
+#include <KIcon>
#include "projectitem.h"
const int ClipTypeRole = NameRole + 3;
ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, QDomElement xml, int clipId)
- : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_element(xml), m_clipType(DocClipBase::NONE), m_clipId(clipId)
+ : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_clipType(DocClipBase::NONE), m_clipId(clipId), m_isGroup(false)
{
+ m_element = xml.cloneNode().toElement();
setSizeHint(0, QSize(65, 45));
setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
if (!m_element.isNull()) {
slotSetToolTip();
}
}
-
+}
+
+ProjectItem::ProjectItem(QTreeWidgetItem * parent, const QStringList & strings, QDomElement xml, int clipId)
+ : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_clipType(DocClipBase::NONE), m_clipId(clipId), m_isGroup(false)
+{
+ m_element = xml.cloneNode().toElement();
+ setSizeHint(0, QSize(65, 45));
+ setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
+ if (!m_element.isNull()) {
+ m_element.setAttribute("id", clipId);
+ QString cType = m_element.attribute("type", QString::null);
+ if (!cType.isEmpty()) {
+ m_clipType = (DocClipBase::CLIPTYPE) cType.toInt();
+ slotSetToolTip();
+ }
+ }
+}
+
+ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings)
+ : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_element(QDomElement()), m_clipType(DocClipBase::NONE), m_clipId(-1), m_isGroup(true)
+{
+ setSizeHint(0, QSize(65, 45));
+ setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
+ setIcon(0, KIcon("folder"));
}
ProjectItem::~ProjectItem()
return m_clipId;
}
+bool ProjectItem::isGroup()
+{
+ return m_isGroup;
+}
+
+
QStringList ProjectItem::names()
{
QStringList result;
addButton->setPopupMode(QToolButton::MenuButtonPopup);
m_toolbar->addWidget (addButton);
- QAction *addClip = addMenu->addAction (KIcon("document-new"), i18n("Add Clip"));
- connect(addClip, SIGNAL(triggered()), this, SLOT(slotAddClip()));
+ QAction *addClipButton = addMenu->addAction (KIcon("document-new"), i18n("Add Clip"));
+ connect(addClipButton, SIGNAL(triggered()), this, SLOT(slotAddClip()));
QAction *addColorClip = addMenu->addAction (KIcon("document-new"), i18n("Add Color Clip"));
connect(addColorClip, SIGNAL(triggered()), this, SLOT(slotAddColorClip()));
QAction *editClip = m_toolbar->addAction (KIcon("document-properties"), i18n("Edit Clip"));
connect(editClip, SIGNAL(triggered()), this, SLOT(slotEditClip()));
- addButton->setDefaultAction( addClip );
+ addButton->setDefaultAction( addClipButton );
layout->addWidget( m_toolbar );
layout->addWidget( listView );
searchView->setTreeWidget(listView);
listView->setColumnCount(3);
listView->setDragEnabled(true);
- listView->setDragDropMode(QAbstractItemView::DragOnly);
+ listView->setDragDropMode(QAbstractItemView::DragDrop);
QStringList headers;
headers<<i18n("Thumbnail")<<i18n("Filename")<<i18n("Description");
listView->setHeaderLabels(headers);
void ProjectList::slotClipSelected()
{
ProjectItem *item = (ProjectItem*) listView->currentItem();
- if (item) emit clipSelected(item->toXml());
+ if (item && !item->isGroup()) emit clipSelected(item->toXml());
}
void ProjectList::slotEditClip()
void ProjectList::selectItemById(const int clipId)
{
- QTreeWidgetItem *parent = 0;
- int count =
- parent ? parent->childCount() : listView->topLevelItemCount();
-
- for (int i = 0; i < count; i++)
- {
- QTreeWidgetItem *item =
- parent ? parent->child(i) : listView->topLevelItem(i);
- if (((ProjectItem *)item)->clipId() == clipId) {
- listView->setCurrentItem(item);
- break;
- }
- }
+ ProjectItem *item = getItemById(clipId);
+ if (item) listView->setCurrentItem(item);
}
void ProjectList::addClip(const QStringList &name, const QDomElement &elem, const int clipId, const KUrl &url)
{
kDebug()<<"///////// ADDING VCLIP=: "<<name;
- ProjectItem *item = new ProjectItem(listView, name, elem, clipId);
+ ProjectItem *item;
+ QString group = elem.attribute("group", QString::null);
+ if (!group.isEmpty()) {
+ // Clip is in a group
+ QList<QTreeWidgetItem *> groupList = listView->findItems(group, Qt::MatchExactly, 1);
+ ProjectItem *groupItem;
+ if (groupList.isEmpty()) {
+ QStringList groupName;
+ groupName<<QString::null<<group;
+ kDebug()<<"------- CREATING NEW GRP: "<<groupName;
+ groupItem = new ProjectItem(listView, groupName);
+ }
+ else groupItem = (ProjectItem *) groupList.first();
+ item = new ProjectItem(groupItem, name, elem, clipId);
+ }
+ else item = new ProjectItem(listView, name, elem, clipId);
if (!url.isEmpty()) {
item->setData(1, FullPathRole, url.path());
}
void ProjectList::deleteClip(const int clipId)
{
- QTreeWidgetItem *parent = 0;
- int count =
- parent ? parent->childCount() : listView->topLevelItemCount();
-
- for (int i = 0; i < count; i++)
- {
- QTreeWidgetItem *item =
- parent ? parent->child(i) : listView->topLevelItem(i);
- if (((ProjectItem *)item)->clipId() == clipId) {
- delete item;
- break;
- }
- }
+ ProjectItem *item = getItemById(clipId);
+ if (item) delete item;
}
void ProjectList::slotAddClip()
}
delete dia_ui;
delete dia;
- /*for (it = list.begin(); it != list.end(); it++) {
- QStringList itemEntry;
- itemEntry.append(QString::null);
- itemEntry.append((*it).fileName());
- ProjectItem *item = new ProjectItem(listView, itemEntry, QDomElement());
- item->setData(1, FullPathRole, (*it).path());
- emit getFileProperties((*it), 0);
- }*/
}
void ProjectList::setDocument(KdenliveDoc *doc)
listView->clear();
for (int i = 0; i < ct ; i++)
{
- QDomElement e = prods.item(i).cloneNode().toElement();
+ QDomElement e = prods.item(i).toElement();
kDebug()<<"// IMPORT: "<<i<<", :"<<e.attribute("id", "non")<<", NAME: "<<e.attribute("name", "non");
if (!e.isNull()) addProducer(e);
}
QDomDocument doc;
QDomElement prods = doc.createElement("producerlist");
doc.appendChild(prods);
- QTreeWidgetItem *parent = 0;
- int count =
- parent ? parent->childCount() : listView->topLevelItemCount();
-
- for (int i = 0; i < count; i++)
- {
- QTreeWidgetItem *item =
- parent ? parent->child(i) : listView->topLevelItem(i);
- prods.appendChild(doc.importNode(((ProjectItem *)item)->toXml(), true));
- }
+ QTreeWidgetItemIterator it(listView);
+ while (*it) {
+ if (!((ProjectItem *)(*it))->isGroup())
+ prods.appendChild(doc.importNode(((ProjectItem *)(*it))->toXml(), true));
+ ++it;
+ }
return prods;
}
void ProjectList::slotReplyGetFileProperties(int clipId, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata)
{
- QTreeWidgetItem *parent = 0;
- int count =
- parent ? parent->childCount() : listView->topLevelItemCount();
-
- for (int i = 0; i < count; i++)
- {
- QTreeWidgetItem *item =
- parent ? parent->child(i) : listView->topLevelItem(i);
-
- if (((ProjectItem *)item)->clipId() == clipId) {
- ((ProjectItem *) item)->setProperties(properties, metadata);
- break;
- }
- }
+ ProjectItem *item = getItemById(clipId);
+ if (item) item->setProperties(properties, metadata);
}
void ProjectList::slotReplyGetImage(int clipId, int pos, const QPixmap &pix, int w, int h)
{
- QTreeWidgetItem *parent = 0;
- int count =
- parent ? parent->childCount() : listView->topLevelItemCount();
-
- for (int i = 0; i < count; i++)
- {
- QTreeWidgetItem *item =
- parent ? parent->child(i) : listView->topLevelItem(i);
+ ProjectItem *item = getItemById(clipId);
+ if (item) item->setIcon(0, pix);
+}
- if (((ProjectItem *)item)->clipId() == clipId) {
- item->setIcon(0, pix);
- break;
- }
- }
+ProjectItem *ProjectList::getItemById(int id)
+{
+ QTreeWidgetItemIterator it(listView);
+ while (*it) {
+ if (((ProjectItem *)(*it))->clipId() == id)
+ break;
+ ++it;
+ }
+ return ((ProjectItem *)(*it));
}