void LinkTreeWidget::addGroupAction() { bool ok; QString strGroup = QInputDialog::getText(this, tr("添加分组"), tr("要添加的组名:"), QLineEdit::Normal, NULL, &ok); if (ok && !strGroup.isEmpty()) { addGroupItem(strGroup); } }
void qtractorFileListView::dropEvent ( QDropEvent *pDropEvent ) { QTreeWidgetItem *pDropItem = dragDropItem(pDropEvent->pos()); if (!canDropItem(pDropItem)) { dragLeaveEvent(NULL); m_pDragItem = NULL; return; } // Not quite parent, but the exact drop target... qtractorFileGroupItem *pParentItem = static_cast<qtractorFileGroupItem *> (pDropItem); const bool bOutdent = (pDropEvent->pos().x() < QTreeWidget::indentation()); // Get access to the pertinent drop data... int iUpdate = 0; const QMimeData *pMimeData = pDropEvent->mimeData(); // Let's see how many files there are... if (pMimeData->hasUrls()) { QListIterator<QUrl> iter(pMimeData->urls()); iter.toBack(); while (iter.hasPrevious()) { const QString& sPath = iter.previous().toLocalFile(); // Is it one from ourselves (file item) ?... if (m_pDragItem && m_pDragItem->type() == FileItem) { if (dropItem(pDropItem, findItem(sPath, FileItem), bOutdent)) ++iUpdate; } else if (addFileItem(sPath, pParentItem)) ++iUpdate; } } else if (pMimeData->hasText()) { // Maybe its just a new convenience group... const QString& sText = pMimeData->text(); // Is it one from ourselves (group item) ?... if (m_pDragItem && m_pDragItem->type() == GroupItem) { if (dropItem(pDropItem, findItem(sText, GroupItem), bOutdent)) ++iUpdate; } else if (addGroupItem(sText, pParentItem)) ++iUpdate; } // Teke care of change modification... if (iUpdate > 0) { // Make parent open, anyway... qtractorFileGroupItem *pGroupItem = groupItem(pDropItem); if (pGroupItem) pGroupItem->setOpen(true); // Notify that we've changed something. emit contentsChanged(); } dragLeaveEvent(NULL); m_pDragItem = NULL; }
// Add a new group item below the current one. void qtractorFileListView::newGroup (void) { qtractorFileGroupItem *pParentItem = currentGroupItem(); #if 0 if (pParentItem && !pParentItem->isOpen()) pParentItem = pParentItem->groupItem(); #endif qtractorFileGroupItem *pGroupItem = addGroupItem(tr("New Group"), pParentItem); if (pGroupItem) { pParentItem = pGroupItem->groupItem(); if (pParentItem) pParentItem->setOpen(true); editItem(pGroupItem, 0); } }