X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fprojectlistview.cpp;h=6267017a422cf0e5bb3438a54b53211fb799e2de;hb=f4462e7ecb75f64e524746e3bb7c62a5e973d965;hp=0ad67645bae895cdd2190563adec9441cd2576a2;hpb=b00c051064a79a885765724b321e20dcb64ea804;p=kdenlive diff --git a/src/projectlistview.cpp b/src/projectlistview.cpp index 0ad67645..6267017a 100644 --- a/src/projectlistview.cpp +++ b/src/projectlistview.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include @@ -45,15 +45,7 @@ ProjectListView::ProjectListView(QWidget *parent) : setFrameShape(QFrame::NoFrame); setRootIsDecorated(true); - QString style = "QTreeView::branch:has-siblings:!adjoins-item{border-image: none;border:0px} \ - QTreeView::branch:has-siblings:adjoins-item {border-image: none;border:0px} \ - QTreeView::branch:!has-children:!has-siblings:adjoins-item {border-image: none;border:0px} \ - QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings { \ - border-image: none;image: url(:/images/stylesheet-branch-closed.png);} \ - QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings { \ - border-image: none;image: url(:/images/stylesheet-branch-open.png);}"; - - setStyleSheet(style); + updateStyleSheet(); setColumnCount(4); QStringList headers; @@ -63,10 +55,10 @@ ProjectListView::ProjectListView(QWidget *parent) : QHeaderView* headerView = header(); headerView->setContextMenuPolicy(Qt::CustomContextMenu); - connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)), - this, SLOT(configureColumns(const QPoint&))); - connect(this, SIGNAL(itemCollapsed(QTreeWidgetItem *)), this, SLOT(slotCollapsed(QTreeWidgetItem *))); - connect(this, SIGNAL(itemExpanded(QTreeWidgetItem *)), this, SLOT(slotExpanded(QTreeWidgetItem *))); + connect(headerView, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(configureColumns(QPoint))); + connect(this, SIGNAL(itemCollapsed(QTreeWidgetItem*)), this, SLOT(slotCollapsed(QTreeWidgetItem*))); + connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(slotExpanded(QTreeWidgetItem*))); headerView->setClickable(true); headerView->setSortIndicatorShown(true); headerView->setMovable(false); @@ -82,6 +74,18 @@ ProjectListView::~ProjectListView() { } +void ProjectListView::updateStyleSheet() +{ + QString style = "QTreeView::branch:has-siblings:!adjoins-item{border-image: none;border:0px} \ + QTreeView::branch:has-siblings:adjoins-item {border-image: none;border:0px} \ + QTreeView::branch:!has-children:!has-siblings:adjoins-item {border-image: none;border:0px} \ + QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings { \ + border-image: none;image: url(:/images/stylesheet-branch-closed.png);} \ + QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings { \ + border-image: none;image: url(:/images/stylesheet-branch-open.png);}"; + setStyleSheet(style); +} + void ProjectListView::processLayout() { executeDelayedItemsLayout(); @@ -180,6 +184,7 @@ void ProjectListView::mouseDoubleClickEvent(QMouseEvent * event) { QTreeWidgetItem *it = itemAt(event->pos()); if (!it) { + emit pauseMonitor(); emit addClip(); return; } @@ -262,7 +267,7 @@ void ProjectListView::dropEvent(QDropEvent *event) if (it->type() == PROJECTCLIPTYPE) { if (it->parent()) clone = (ProjectItem*) it->parent()->takeChild(it->parent()->indexOfChild(it)); else clone = (ProjectItem*) takeTopLevelItem(indexOfTopLevelItem(it)); - if (clone) { + if (clone && item) { item->addChild(clone); QMap props; props.insert("groupname", item->groupName()); @@ -294,7 +299,12 @@ void ProjectListView::dropEvent(QDropEvent *event) QStringList list = QString(event->mimeData()->data("kdenlive/clip")).split(';'); emit addClipCut(list.at(0), list.at(1).toInt(), list.at(2).toInt()); } - event->acceptProposedAction(); + if (event->source() == this) { + event->setDropAction(Qt::MoveAction); + event->accept(); + } else { + event->acceptProposedAction(); + } QTreeWidget::dropEvent(event); } @@ -323,7 +333,7 @@ void ProjectListView::mouseReleaseEvent(QMouseEvent *event) { QTreeWidget::mouseReleaseEvent(event); QTreeWidgetItem *underMouse = itemAt(event->pos()); - if (underMouse) emit focusMonitor(); + if (underMouse) emit focusMonitor(true); } // virtual @@ -338,56 +348,40 @@ void ProjectListView::mouseMoveEvent(QMouseEvent *event) QTreeWidgetItem *it = itemAt(m_DragStartPosition); if (!it) return; - if (it->type() == PROJECTSUBCLIPTYPE) { - // subitem - SubProjectItem *clickItem = static_cast (it); - if (clickItem && (clickItem->flags() & Qt::ItemIsDragEnabled)) { - ProjectItem *clip = static_cast (it->parent()); - QDrag *drag = new QDrag(this); - QMimeData *mimeData = new QMimeData; - - QStringList list; - list.append(clip->clipId()); - QPoint p = clickItem->zone(); - list.append(QString::number(p.x())); - list.append(QString::number(p.y())); - QByteArray data; - data.append(list.join(";").toUtf8()); - mimeData->setData("kdenlive/clip", data); - drag->setMimeData(mimeData); - drag->setPixmap(clickItem->data(0, Qt::DecorationRole).value()); - drag->setHotSpot(QPoint(0, 50)); - drag->exec(); - } - } else { - if (it && (it->flags() & Qt::ItemIsDragEnabled)) { - QDrag *drag = new QDrag(this); - QMimeData *mimeData = new QMimeData; - const QList list = selectedItems(); - QStringList ids; - foreach(const QTreeWidgetItem *item, list) { - if (item->type() == PROJECTFOLDERTYPE) { - const int children = item->childCount(); - for (int i = 0; i < children; i++) { - ids.append(static_cast (item->child(i))->clipId()); - } - } else { - const ProjectItem *clip = static_cast (item); - ids.append(clip->clipId()); + if (it && (it->flags() & Qt::ItemIsDragEnabled)) { + QDrag *drag = new QDrag(this); + QMimeData *mimeData = new QMimeData; + const QList list = selectedItems(); + QStringList ids; + foreach(const QTreeWidgetItem *item, list) { + if (item->type() == PROJECTFOLDERTYPE) { + const int children = item->childCount(); + for (int i = 0; i < children; ++i) { + ids.append(static_cast (item->child(i))->clipId()); } + } else if (item->type() == PROJECTSUBCLIPTYPE) { + const ProjectItem *parentclip = static_cast (item->parent()); + const SubProjectItem *clickItem = static_cast (item); + QPoint p = clickItem->zone(); + QString data = parentclip->clipId(); + data.append("/" + QString::number(p.x())); + data.append("/" + QString::number(p.y())); + ids.append(data); + } else { + const ProjectItem *clip = static_cast (item); + ids.append(clip->clipId()); } - if (ids.isEmpty()) return; - 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(it->data(0, Qt::DecorationRole).value()); - drag->setHotSpot(QPoint(0, 50)); - drag->exec(); } - //event->accept(); + if (ids.isEmpty()) return; + 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(it->data(0, Qt::DecorationRole).value()); + drag->setHotSpot(QPoint(0, 40)); + drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction); } }